Rico Schüller : wined3d: Add UnregisterClass() on DLL_PROCESS_DETACH.
Alexandre Julliard
julliard at winehq.org
Tue May 12 09:08:47 CDT 2009
Module: wine
Branch: master
Commit: 2ef751883d08a59aa050bd0742f91aedb7cad69f
URL: http://source.winehq.org/git/wine.git/?a=commit;h=2ef751883d08a59aa050bd0742f91aedb7cad69f
Author: Rico Schüller <kgbricola at web.de>
Date: Mon May 11 21:43:54 2009 +0200
wined3d: Add UnregisterClass() on DLL_PROCESS_DETACH.
---
dlls/wined3d/directx.c | 2 +-
dlls/wined3d/wined3d_main.c | 9 +++++----
dlls/wined3d/wined3d_private.h | 4 ++++
3 files changed, 10 insertions(+), 5 deletions(-)
diff --git a/dlls/wined3d/directx.c b/dlls/wined3d/directx.c
index d1f851a..f5d4d3e 100644
--- a/dlls/wined3d/directx.c
+++ b/dlls/wined3d/directx.c
@@ -268,7 +268,7 @@ static BOOL WineD3D_CreateFakeGLContext(void) {
wined3d_fake_gl_context_foreign = FALSE;
/* We need a fake window as a hdc retrieved using GetDC(0) can't be used for much GL purposes */
- wined3d_fake_gl_context_hwnd = CreateWindowA("WineD3D_OpenGL", "WineD3D fake window", WS_OVERLAPPEDWINDOW, 10, 10, 10, 10, NULL, NULL, NULL, NULL);
+ wined3d_fake_gl_context_hwnd = CreateWindowA(WINED3D_OPENGL_WINDOW_CLASS_NAME, "WineD3D fake window", WS_OVERLAPPEDWINDOW, 10, 10, 10, 10, NULL, NULL, NULL, NULL);
if(!wined3d_fake_gl_context_hwnd) {
ERR("HWND creation failed!\n");
goto fail;
diff --git a/dlls/wined3d/wined3d_main.c b/dlls/wined3d/wined3d_main.c
index 687fe89..2775dc9 100644
--- a/dlls/wined3d/wined3d_main.c
+++ b/dlls/wined3d/wined3d_main.c
@@ -117,9 +117,9 @@ static BOOL wined3d_init(HINSTANCE hInstDLL)
wc.hCursor = LoadCursorA(NULL, (LPCSTR)IDC_ARROW);
wc.hbrBackground = NULL;
wc.lpszMenuName = NULL;
- wc.lpszClassName = "WineD3D_OpenGL";
+ wc.lpszClassName = WINED3D_OPENGL_WINDOW_CLASS_NAME;
- if (!RegisterClassA(&wc) && GetLastError() != ERROR_CLASS_ALREADY_EXISTS)
+ if (!RegisterClassA(&wc))
{
ERR("Failed to register window class 'WineD3D_OpenGL'!\n");
return FALSE;
@@ -320,9 +320,10 @@ static BOOL wined3d_init(HINSTANCE hInstDLL)
return TRUE;
}
-static BOOL wined3d_destroy(void)
+static BOOL wined3d_destroy(HINSTANCE hInstDLL)
{
HeapFree(GetProcessHeap(), 0, wined3d_settings.logo);
+ UnregisterClassA(WINED3D_OPENGL_WINDOW_CLASS_NAME, hInstDLL);
return TRUE;
}
@@ -338,7 +339,7 @@ BOOL WINAPI DllMain(HINSTANCE hInstDLL, DWORD fdwReason, LPVOID lpv)
return wined3d_init(hInstDLL);
case DLL_PROCESS_DETACH:
- return wined3d_destroy();
+ return wined3d_destroy(hInstDLL);
default:
return TRUE;
diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h
index cbefa9a..8c29d3a 100644
--- a/dlls/wined3d/wined3d_private.h
+++ b/dlls/wined3d/wined3d_private.h
@@ -2818,4 +2818,8 @@ static inline BOOL use_ps(IWineD3DStateBlockImpl *stateblock)
void stretch_rect_fbo(IWineD3DDevice *iface, IWineD3DSurface *src_surface, WINED3DRECT *src_rect,
IWineD3DSurface *dst_surface, WINED3DRECT *dst_rect, const WINED3DTEXTUREFILTERTYPE filter, BOOL flip);
+
+/* The WNDCLASS-Name for the fake window which we use to retrieve the GL capabilities */
+#define WINED3D_OPENGL_WINDOW_CLASS_NAME "WineD3D_OpenGL"
+
#endif
More information about the wine-cvs
mailing list