Jacek Caban : win32u: Use user_callbacks for alertable NtWaitForMultipleObjects calls.

Alexandre Julliard julliard at winehq.org
Tue May 31 15:58:00 CDT 2022


Module: wine
Branch: master
Commit: 7625e6ba20c70d59d61a73e5c2b2b5243e0e0143
URL:    https://source.winehq.org/git/wine.git/?a=commit;h=7625e6ba20c70d59d61a73e5c2b2b5243e0e0143

Author: Jacek Caban <jacek at codeweavers.com>
Date:   Tue May 31 02:36:03 2022 +0200

win32u: Use user_callbacks for alertable NtWaitForMultipleObjects calls.

Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=53020
Signed-off-by: Jacek Caban <jacek at codeweavers.com>

---

 dlls/user32/user_main.c      | 1 +
 dlls/win32u/driver.c         | 7 +++++--
 dlls/win32u/ntuser_private.h | 1 +
 3 files changed, 7 insertions(+), 2 deletions(-)

diff --git a/dlls/user32/user_main.c b/dlls/user32/user_main.c
index 9cd9bd60146..e470d2ad688 100644
--- a/dlls/user32/user_main.c
+++ b/dlls/user32/user_main.c
@@ -162,6 +162,7 @@ static const struct user_callbacks user_funcs =
     EndMenu,
     ImmProcessKey,
     ImmTranslateMessage,
+    NtWaitForMultipleObjects,
     free_win_ptr,
     MENU_GetSysMenu,
     MENU_IsMenuActive,
diff --git a/dlls/win32u/driver.c b/dlls/win32u/driver.c
index b4cea3d42c8..1f538d100ed 100644
--- a/dlls/win32u/driver.c
+++ b/dlls/win32u/driver.c
@@ -813,8 +813,11 @@ static NTSTATUS nulldrv_MsgWaitForMultipleObjectsEx( DWORD count, const HANDLE *
 {
     if (!count && timeout && !timeout->QuadPart) return WAIT_TIMEOUT;
 
-    return NtWaitForMultipleObjects( count, handles, !(flags & MWMO_WAITALL),
-                                     !!(flags & MWMO_ALERTABLE), timeout );
+    if (!user_callbacks)
+        return NtWaitForMultipleObjects( count, handles, !(flags & MWMO_WAITALL),
+                                         !!(flags & MWMO_ALERTABLE), timeout );
+    return user_callbacks->pNtWaitForMultipleObjects( count, handles, !(flags & MWMO_WAITALL),
+                                                      !!(flags & MWMO_ALERTABLE), timeout );
 }
 
 static void nulldrv_ReleaseDC( HWND hwnd, HDC hdc )
diff --git a/dlls/win32u/ntuser_private.h b/dlls/win32u/ntuser_private.h
index 931c87a6e1c..e39e3f54169 100644
--- a/dlls/win32u/ntuser_private.h
+++ b/dlls/win32u/ntuser_private.h
@@ -35,6 +35,7 @@ struct user_callbacks
     BOOL (WINAPI *pEndMenu)(void);
     BOOL (WINAPI *pImmProcessKey)(HWND, HKL, UINT, LPARAM, DWORD);
     BOOL (WINAPI *pImmTranslateMessage)(HWND, UINT, WPARAM, LPARAM);
+    NTSTATUS (WINAPI *pNtWaitForMultipleObjects)(ULONG,const HANDLE*,BOOLEAN,BOOLEAN,const LARGE_INTEGER*);
     void (CDECL *free_win_ptr)( struct tagWND *win );
     HMENU (CDECL *get_sys_menu)( HWND hwnd, HMENU popup );
     HWND (CDECL *is_menu_active)(void);




More information about the wine-cvs mailing list