diff --git a/src/Windows/Avalonia.Win32/OpenGl/WglContext.cs b/src/Windows/Avalonia.Win32/OpenGl/WglContext.cs index c4034c7211..d535efc5b7 100644 --- a/src/Windows/Avalonia.Win32/OpenGl/WglContext.cs +++ b/src/Windows/Avalonia.Win32/OpenGl/WglContext.cs @@ -47,8 +47,8 @@ namespace Avalonia.Win32.OpenGl public void Dispose() { wglDeleteContext(_context); - WglDCManager.ReleaseDC(_hWnd, _dc); - WglDCManager.DestroyWindow(_hWnd); + WglGdiResourceManager.ReleaseDC(_hWnd, _dc); + WglGdiResourceManager.DestroyWindow(_hWnd); IsLost = true; } @@ -79,7 +79,7 @@ namespace Avalonia.Win32.OpenGl public IntPtr CreateConfiguredDeviceContext(IntPtr hWnd) { - var dc = WglDCManager.GetDC(hWnd); + var dc = WglGdiResourceManager.GetDC(hWnd); var fmt = _formatDescriptor; SetPixelFormat(dc, _pixelFormat, ref fmt); return dc; diff --git a/src/Windows/Avalonia.Win32/OpenGl/WglDisplay.cs b/src/Windows/Avalonia.Win32/OpenGl/WglDisplay.cs index 300e43e656..9a1963a97a 100644 --- a/src/Windows/Avalonia.Win32/OpenGl/WglDisplay.cs +++ b/src/Windows/Avalonia.Win32/OpenGl/WglDisplay.cs @@ -44,8 +44,8 @@ namespace Avalonia.Win32.OpenGl static bool InitializeCore() { Dispatcher.UIThread.VerifyAccess(); - _bootstrapWindow = WglDCManager.CreateOffscreenWindow(); - _bootstrapDc = WglDCManager.GetDC(_bootstrapWindow); + _bootstrapWindow = WglGdiResourceManager.CreateOffscreenWindow(); + _bootstrapDc = WglGdiResourceManager.GetDC(_bootstrapWindow); _defaultPfd = new PixelFormatDescriptor { Size = (ushort)Marshal.SizeOf(), @@ -115,8 +115,8 @@ namespace Avalonia.Win32.OpenGl using (new WglRestoreContext(_bootstrapDc, _bootstrapContext, null)) { - var window = WglDCManager.CreateOffscreenWindow(); - var dc = WglDCManager.GetDC(window); + var window = WglGdiResourceManager.CreateOffscreenWindow(); + var dc = WglGdiResourceManager.GetDC(window); SetPixelFormat(dc, _defaultPixelFormat, ref _defaultPfd); foreach (var version in versions) { @@ -148,8 +148,8 @@ namespace Avalonia.Win32.OpenGl _defaultPixelFormat, _defaultPfd); } - WglDCManager.ReleaseDC(window, dc); - WglDCManager.DestroyWindow(window); + WglGdiResourceManager.ReleaseDC(window, dc); + WglGdiResourceManager.DestroyWindow(window); return null; } } diff --git a/src/Windows/Avalonia.Win32/OpenGl/WglDCManager.cs b/src/Windows/Avalonia.Win32/OpenGl/WglGdiResourceManager.cs similarity index 91% rename from src/Windows/Avalonia.Win32/OpenGl/WglDCManager.cs rename to src/Windows/Avalonia.Win32/OpenGl/WglGdiResourceManager.cs index 17c7fa62c6..1a87520590 100644 --- a/src/Windows/Avalonia.Win32/OpenGl/WglDCManager.cs +++ b/src/Windows/Avalonia.Win32/OpenGl/WglGdiResourceManager.cs @@ -8,14 +8,14 @@ using Avalonia.Win32.Interop; namespace Avalonia.Win32.OpenGl; /// -/// 1) ReleaseDC can only happen from the same thread that has called GetDC -/// 2) When thread exits all of its HDCs are getting destroyed -/// 3) We need to create OpenGL render targets from thread pool threads +/// - ReleaseDC can only happen from the same thread that has called GetDC +/// - When thread exits all of its windows and HDCs are getting destroyed +/// - We need to create OpenGL context (require a window and an HDC) and render targets (require an HDC) from thread pool threads /// -/// So this class hosts a dedicated thread for managing HDCs for OpenGL +/// So this class hosts a dedicated thread for managing offscreen windows and HDCs for OpenGL /// -internal class WglDCManager +internal class WglGdiResourceManager { class GetDCOp { @@ -86,7 +86,7 @@ internal class WglDCManager } } - static WglDCManager() + static WglGdiResourceManager() { var wndClassEx = new UnmanagedMethods.WNDCLASSEX { diff --git a/src/Windows/Avalonia.Win32/OpenGl/WglGlPlatformSurface.cs b/src/Windows/Avalonia.Win32/OpenGl/WglGlPlatformSurface.cs index 2624df07ee..6d3d2d28c4 100644 --- a/src/Windows/Avalonia.Win32/OpenGl/WglGlPlatformSurface.cs +++ b/src/Windows/Avalonia.Win32/OpenGl/WglGlPlatformSurface.cs @@ -37,7 +37,7 @@ namespace Avalonia.Win32.OpenGl public void Dispose() { - WglDCManager.ReleaseDC(_info.Handle, _hdc); + WglGdiResourceManager.ReleaseDC(_info.Handle, _hdc); } public IGlPlatformSurfaceRenderingSession BeginDraw()