Browse Source

make managed deferredrenderer lock global.

tmp-winuicomp_with_manual_fbo
Dan Walmsley 6 years ago
parent
commit
28168d571b
  1. 6
      src/Windows/Avalonia.Win32/WindowImpl.AppWndProc.cs
  2. 5
      src/Windows/Avalonia.Win32/WindowImpl.cs

6
src/Windows/Avalonia.Win32/WindowImpl.AppWndProc.cs

@ -339,7 +339,7 @@ namespace Avalonia.Win32
case WindowsMessage.WM_PAINT:
{
using (_rendererLock.Lock())
using (s_rendererLock.Lock())
{
if (BeginPaint(_hwnd, out PAINTSTRUCT ps) != IntPtr.Zero)
{
@ -356,7 +356,7 @@ namespace Avalonia.Win32
case WindowsMessage.WM_SIZE:
{
using (_rendererLock.Lock())
using (s_rendererLock.Lock())
{
// Do nothing here, just block until the pending frame render is completed on the render thread
}
@ -464,7 +464,7 @@ namespace Avalonia.Win32
}
}
using (_rendererLock.Lock())
using (s_rendererLock.Lock())
{
return DefWindowProc(hWnd, msg, wParam, lParam);
}

5
src/Windows/Avalonia.Win32/WindowImpl.cs

@ -56,7 +56,7 @@ namespace Avalonia.Win32
private const WindowStyles WindowStateMask = (WindowStyles.WS_MAXIMIZE | WindowStyles.WS_MINIMIZE);
private readonly TouchDevice _touchDevice;
private readonly MouseDevice _mouseDevice;
private readonly ManagedDeferredRendererLock _rendererLock;
private static readonly ManagedDeferredRendererLock s_rendererLock = new ManagedDeferredRendererLock();
private readonly FramebufferManager _framebuffer;
private readonly IGlPlatformSurface _gl;
@ -100,7 +100,6 @@ namespace Avalonia.Win32
IsResizable = true,
Decorations = SystemDecorations.Full
};
_rendererLock = new ManagedDeferredRendererLock();
_isUsingComposition = Win32Platform.Options.UseWindowsUIComposition &&
Win32Platform.WindowsVersion.Major >= 10 && Win32Platform.WindowsVersion.Build >= 16299 &&
@ -443,7 +442,7 @@ namespace Avalonia.Win32
return customRendererFactory.Create(root, loop);
return Win32Platform.UseDeferredRendering ?
(IRenderer)new DeferredRenderer(root, loop, rendererLock: _rendererLock) :
(IRenderer)new DeferredRenderer(root, loop, rendererLock: s_rendererLock) :
new ImmediateRenderer(root);
}

Loading…
Cancel
Save