Module: wine Branch: master Commit: 2ef751883d08a59aa050bd0742f91aedb7cad69f URL: http://source.winehq.org/git/wine.git/?a=commit;h=2ef751883d08a59aa050bd0742... Author: Rico Schüller <kgbricola(a)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