Nikita Tsukanov 5 years ago
parent
commit
41e5133624

+ 4 - 4
src/Windows/Avalonia.Win32/WinRT/Composition/WinUICompositorConnection.cs

@@ -6,6 +6,7 @@ using Avalonia.MicroCom;
 using Avalonia.OpenGL;
 using Avalonia.OpenGL.Angle;
 using Avalonia.OpenGL.Egl;
+using Avalonia.Rendering;
 using Avalonia.Win32.Interop;
 
 namespace Avalonia.Win32.WinRT.Composition
@@ -29,9 +30,9 @@ namespace Avalonia.Win32.WinRT.Composition
             _angle = (AngleWin32EglDisplay)_gl.Display;
             _queue = NativeWinRTMethods.CreateDispatcherQueueController(new NativeWinRTMethods.DispatcherQueueOptions
             {
-                apartmentType = NativeWinRTMethods.DISPATCHERQUEUE_THREAD_APARTMENTTYPE.DQTAT_COM_NONE,
+                apartmentType = NativeWinRTMethods.DISPATCHERQUEUE_THREAD_APARTMENTTYPE.DQTAT_COM_STA,
                 dwSize = Marshal.SizeOf<NativeWinRTMethods.DispatcherQueueOptions>(),
-                threadType = NativeWinRTMethods.DISPATCHERQUEUE_THREAD_TYPE.DQTYPE_THREAD_CURRENT
+                threadType = NativeWinRTMethods.DISPATCHERQUEUE_THREAD_TYPE.DQTYPE_THREAD_DEDICATED
             });
             _compositor = NativeWinRTMethods.CreateInstance<ICompositor>("Windows.UI.Composition.Compositor");
             _compositor2 = _compositor.QueryInterface<ICompositor2>();
@@ -96,7 +97,6 @@ namespace Avalonia.Win32.WinRT.Composition
             spriteVisual.SetBrush(brush);
             using var visual = spriteVisual.QueryInterface<IVisual>();
             using var visual2 = spriteVisual.QueryInterface<IVisual2>();
-            //visual2.SetRelativeSizeAdjustment(new Vector2(1, 1));
             using var container = _compositor.CreateContainerVisual();
             using var containerVisual = container.QueryInterface<IVisual>();
             using var containerVisual2 = container.QueryInterface<IVisual2>();
@@ -141,7 +141,7 @@ namespace Avalonia.Win32.WinRT.Composition
             
             
             spriteVisual.SetBrush(satBrush);
-            //visual.SetIsVisible(0);
+            visual.SetIsVisible(0);
             visual2.SetRelativeSizeAdjustment(new Vector2(1.0f, 1.0f));
 
             return visual.CloneReference();

+ 2 - 2
src/Windows/Avalonia.Win32/WinRT/Composition/WinUiCompositedWindowSurface.cs

@@ -76,9 +76,9 @@ namespace Avalonia.Win32.WinRT.Composition
 
                     var res = base.BeginDraw(surface, _info, () =>
                     {
-                        _window.Item.EndDraw();
-                        texture?.Dispose();
                         surface?.Dispose();
+                        texture?.Dispose();
+                        _window.Item.EndDraw();
                         contextLock?.Dispose();
                     }, true);
                     success = true;