From: Torge Matthies tmatthies@codeweavers.com
Signed-off-by: Torge Matthies tmatthies@codeweavers.com --- dlls/wineandroid.drv/device.c | 4 +++- dlls/wineandroid.drv/dllmain.c | 10 ++++++++-- dlls/wineandroid.drv/unixlib.h | 6 ------ 3 files changed, 11 insertions(+), 9 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..fd9c7006009 100644 --- a/dlls/wineandroid.drv/dllmain.c +++ b/dlls/wineandroid.drv/dllmain.c @@ -113,6 +113,12 @@ 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 */ @@ -131,8 +137,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, -};