quartz: Unregister the video window class on DLL unload.

Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=48734
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
Zebediah Figura 2020-03-11 21:10:13 -05:00 committed by Alexandre Julliard
parent f55427fb9d
commit 2db87b733f
3 changed files with 11 additions and 3 deletions

View File

@ -29,10 +29,11 @@ extern BOOL WINAPI QUARTZ_DllMain(HINSTANCE, DWORD, LPVOID) DECLSPEC_HIDDEN;
static LONG server_locks = 0; static LONG server_locks = 0;
/* For the moment, do nothing here. */ BOOL WINAPI DllMain(HINSTANCE instance, DWORD reason, void *reserved)
BOOL WINAPI DllMain(HINSTANCE hInstDLL, DWORD fdwReason, LPVOID lpv)
{ {
return QUARTZ_DllMain( hInstDLL, fdwReason, lpv ); if (reason == DLL_PROCESS_DETACH)
video_window_unregister_class();
return QUARTZ_DllMain(instance, reason, reserved);
} }
static HRESULT seeking_passthrough_create(IUnknown *outer, IUnknown **out) static HRESULT seeking_passthrough_create(IUnknown *outer, IUnknown **out)

View File

@ -123,6 +123,7 @@ typedef struct tagBaseControlWindow
HRESULT video_window_init(BaseControlWindow *window, const IVideoWindowVtbl *vtbl, HRESULT video_window_init(BaseControlWindow *window, const IVideoWindowVtbl *vtbl,
struct strmbase_filter *filter, struct strmbase_pin *pin, const BaseWindowFuncTable *func_table) DECLSPEC_HIDDEN; struct strmbase_filter *filter, struct strmbase_pin *pin, const BaseWindowFuncTable *func_table) DECLSPEC_HIDDEN;
void video_window_unregister_class(void) DECLSPEC_HIDDEN;
HRESULT WINAPI BaseControlWindow_Destroy(BaseControlWindow *pControlWindow) DECLSPEC_HIDDEN; HRESULT WINAPI BaseControlWindow_Destroy(BaseControlWindow *pControlWindow) DECLSPEC_HIDDEN;
BOOL WINAPI BaseControlWindowImpl_PossiblyEatMessage(BaseWindow *This, UINT uMsg, WPARAM wParam, LPARAM lParam) DECLSPEC_HIDDEN; BOOL WINAPI BaseControlWindowImpl_PossiblyEatMessage(BaseWindow *This, UINT uMsg, WPARAM wParam, LPARAM lParam) DECLSPEC_HIDDEN;

View File

@ -741,3 +741,9 @@ HRESULT WINAPI BaseControlWindowImpl_IsCursorHidden(IVideoWindow *iface, LONG *C
return S_OK; return S_OK;
} }
void video_window_unregister_class(void)
{
if (!UnregisterClassW(class_name, NULL) && GetLastError() != ERROR_CLASS_DOES_NOT_EXIST)
ERR("Failed to unregister class, error %u.\n", GetLastError());
}