diff --git a/dlls/user32/driver.c b/dlls/user32/driver.c index 6dbc07d318a..7e9f63ad1c7 100644 --- a/dlls/user32/driver.c +++ b/dlls/user32/driver.c @@ -266,10 +266,6 @@ static void CDECL nulldrv_WindowPosChanged( HWND hwnd, HWND insert_after, UINT s { } -static void CDECL nulldrv_ThreadDetach( void ) -{ -} - /********************************************************************** * Lazy loading user driver @@ -398,7 +394,7 @@ static struct user_driver_funcs lazy_load_driver = /* vulkan support */ NULL, /* thread management */ - nulldrv_ThreadDetach + NULL }; void CDECL __wine_set_user_driver( const struct user_driver_funcs *funcs, UINT version ) @@ -445,7 +441,6 @@ void CDECL __wine_set_user_driver( const struct user_driver_funcs *funcs, UINT v SET_USER_FUNC(WindowMessage); SET_USER_FUNC(WindowPosChanging); SET_USER_FUNC(WindowPosChanged); - SET_USER_FUNC(ThreadDetach); #undef SET_USER_FUNC prev = InterlockedCompareExchangePointer( (void **)&USER_Driver, driver, &lazy_load_driver ); diff --git a/dlls/user32/user_main.c b/dlls/user32/user_main.c index 939271aeb17..91c466aff11 100644 --- a/dlls/user32/user_main.c +++ b/dlls/user32/user_main.c @@ -254,7 +254,6 @@ static void thread_detach(void) exiting_thread_id = GetCurrentThreadId(); WDML_NotifyThreadDetach(); - USER_Driver->pThreadDetach(); NtUserCallNoParam( NtUserThreadDetach ); destroy_thread_windows(); diff --git a/dlls/win32u/driver.c b/dlls/win32u/driver.c index e332a03b0db..b3a3e70f83f 100644 --- a/dlls/win32u/driver.c +++ b/dlls/win32u/driver.c @@ -1070,6 +1070,8 @@ static const struct user_driver_funcs lazy_load_driver = .pSystemParametersInfo = nulldrv_SystemParametersInfo, /* vulkan support */ .pwine_get_vulkan_driver = loaderdrv_wine_get_vulkan_driver, + /* thread management */ + .pThreadDetach = nulldrv_ThreadDetach, }; const struct user_driver_funcs *user_driver = &lazy_load_driver; diff --git a/dlls/win32u/sysparams.c b/dlls/win32u/sysparams.c index 7aee5eae0b9..93fda23a31e 100644 --- a/dlls/win32u/sysparams.c +++ b/dlls/win32u/sysparams.c @@ -4488,6 +4488,8 @@ static void thread_detach(void) { struct user_thread_info *thread_info = get_user_thread_info(); + user_driver->pThreadDetach(); + free( thread_info->key_state ); thread_info->key_state = 0; }