From: Torge Matthies <tmatthies(a)codeweavers.com> Signed-off-by: Torge Matthies <tmatthies(a)codeweavers.com> --- dlls/wineandroid.drv/device.c | 4 +++- dlls/wineandroid.drv/dllmain.c | 11 ++++++++--- dlls/wineandroid.drv/unixlib.h | 6 ------ 3 files changed, 11 insertions(+), 10 deletions(-) diff --git a/dlls/wineandroid.drv/device.c b/dlls/wineandroid.drv/device.c index b7292b5faf1..12e7cde7dc5 100644 --- a/dlls/wineandroid.drv/device.c +++ b/dlls/wineandroid.drv/device.c @@ -1180,7 +1180,9 @@ void start_android_device(void) { void *ret_ptr; ULONG ret_len; - thread = ULongToHandle( KeUserModeCallback( client_start_device, NULL, 0, &ret_ptr, &ret_len )); + struct user32_callback_params cbparams = { user32_callback_destination_driver, 0, NULL, 0 }; + NTSTATUS ret = KeUserModeCallback( NtUserDispatchCallback, &cbparams, sizeof(cbparams), &ret_ptr, &ret_len ); + thread = ULongToHandle( ret ); } diff --git a/dlls/wineandroid.drv/dllmain.c b/dlls/wineandroid.drv/dllmain.c index b10491a22d8..da24fb6a859 100644 --- a/dlls/wineandroid.drv/dllmain.c +++ b/dlls/wineandroid.drv/dllmain.c @@ -113,13 +113,18 @@ static void CALLBACK register_window_callback( ULONG_PTR arg1, ULONG_PTR arg2, U } +static user32_callback_func user32_callback_table[] = +{ + android_start_device +}; + + /*********************************************************************** * dll initialisation routine */ BOOL WINAPI DllMain( HINSTANCE inst, DWORD reason, LPVOID reserved ) { struct init_params params; - void **callback_table; if (reason == DLL_PROCESS_ATTACH) return TRUE; @@ -131,8 +136,8 @@ BOOL WINAPI DllMain( HINSTANCE inst, DWORD reason, LPVOID reserved ) params.register_window_callback = register_window_callback; if (ANDROID_CALL( init, ¶ms )) return FALSE; - callback_table = NtCurrentTeb()->Peb->KernelCallbackTable; - callback_table[client_start_device] = android_start_device; + __wine_set_user32_callback_table( user32_callback_destination_driver, user32_callback_table, + ARRAY_SIZE(user32_callback_table) ); return TRUE; } diff --git a/dlls/wineandroid.drv/unixlib.h b/dlls/wineandroid.drv/unixlib.h index 98da6528fd5..5a5a8895061 100644 --- a/dlls/wineandroid.drv/unixlib.h +++ b/dlls/wineandroid.drv/unixlib.h @@ -54,9 +54,3 @@ struct register_window_params UINT_PTR arg2; UINT_PTR arg3; }; - - -enum -{ - client_start_device = NtUserDriverCallbackFirst, -}; -- GitLab https://gitlab.winehq.org/wine/wine/-/merge_requests/1180