Jacek Caban : win32u: Move MessageBeep implementation from user32.

Alexandre Julliard julliard at winehq.org
Mon Feb 14 15:41:31 CST 2022


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

Author: Jacek Caban <jacek at codeweavers.com>
Date:   Mon Feb 14 14:08:05 2022 +0100

win32u: Move MessageBeep implementation from user32.

Signed-off-by: Jacek Caban <jacek at codeweavers.com>
Signed-off-by: Huw Davies <huw at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 dlls/user32/driver.c    | 12 +-----------
 dlls/user32/message.c   |  5 +----
 dlls/win32u/driver.c    | 19 ++++++++++++++++---
 dlls/win32u/sysparams.c | 10 ++++++++++
 include/ntuser.h        |  1 +
 5 files changed, 29 insertions(+), 18 deletions(-)

diff --git a/dlls/user32/driver.c b/dlls/user32/driver.c
index 73f4ee67257..247093bfc17 100644
--- a/dlls/user32/driver.c
+++ b/dlls/user32/driver.c
@@ -119,10 +119,6 @@ void USER_unload_driver(void)
  * These are fallbacks for entry points that are not implemented in the real driver.
  */
 
-static void CDECL nulldrv_Beep(void)
-{
-}
-
 static BOOL CDECL nulldrv_RegisterHotKey( HWND hwnd, UINT modifiers, UINT vk )
 {
     return TRUE;
@@ -287,11 +283,6 @@ static void CDECL nulldrv_ThreadDetach( void )
  * Each entry point simply loads the real driver and chains to it.
  */
 
-static void CDECL loaderdrv_Beep(void)
-{
-    load_driver()->pBeep();
-}
-
 static BOOL CDECL loaderdrv_RegisterHotKey( HWND hwnd, UINT modifiers, UINT vk )
 {
     return load_driver()->pRegisterHotKey( hwnd, modifiers, vk );
@@ -369,7 +360,7 @@ static struct user_driver_funcs lazy_load_driver =
     { NULL },
     /* keyboard functions */
     NULL,
-    loaderdrv_Beep,
+    NULL,
     NULL,
     NULL,
     NULL,
@@ -436,7 +427,6 @@ void CDECL __wine_set_user_driver( const struct user_driver_funcs *funcs, UINT v
 #define SET_USER_FUNC(name) \
     do { if (!driver->p##name) driver->p##name = nulldrv_##name; } while(0)
 
-    SET_USER_FUNC(Beep);
     SET_USER_FUNC(RegisterHotKey);
     SET_USER_FUNC(UnregisterHotKey);
     SET_USER_FUNC(DestroyCursorIcon);
diff --git a/dlls/user32/message.c b/dlls/user32/message.c
index 44b08da79dd..1c60244623a 100644
--- a/dlls/user32/message.c
+++ b/dlls/user32/message.c
@@ -4432,10 +4432,7 @@ BOOL WINAPI SetMessageQueue( INT size )
  */
 BOOL WINAPI MessageBeep( UINT i )
 {
-    BOOL active = TRUE;
-    SystemParametersInfoA( SPI_GETBEEP, 0, &active, FALSE );
-    if (active) USER_Driver->pBeep();
-    return TRUE;
+    return NtUserCallOneParam( i, NtUserMessageBeep );
 }
 
 
diff --git a/dlls/win32u/driver.c b/dlls/win32u/driver.c
index 2caacd2b2a6..24815922bbb 100644
--- a/dlls/win32u/driver.c
+++ b/dlls/win32u/driver.c
@@ -958,6 +958,11 @@ static BOOL CDECL loaderdrv_ActivateKeyboardLayout( HKL layout, UINT flags )
     return load_driver()->pActivateKeyboardLayout( layout, flags );
 }
 
+static void CDECL loaderdrv_Beep(void)
+{
+    load_driver()->pBeep();
+}
+
 static INT CDECL loaderdrv_GetKeyNameText( LONG lparam, LPWSTR buffer, INT size )
 {
     return load_driver()->pGetKeyNameText( lparam, buffer, size );
@@ -1033,22 +1038,30 @@ static const struct vulkan_funcs * CDECL loaderdrv_wine_get_vulkan_driver( UINT
 
 static const struct user_driver_funcs lazy_load_driver =
 {
+    /* keyboard functions */
     .pActivateKeyboardLayout = loaderdrv_ActivateKeyboardLayout,
+    .pBeep = loaderdrv_Beep,
     .pGetKeyNameText = loaderdrv_GetKeyNameText,
     .pGetKeyboardLayoutList = loaderdrv_GetKeyboardLayoutList,
     .pMapVirtualKeyEx = loaderdrv_MapVirtualKeyEx,
     .pToUnicodeEx = loaderdrv_ToUnicodeEx,
     .pUnregisterHotKey = loaderdrv_UnregisterHotKey,
     .pVkKeyScanEx = loaderdrv_VkKeyScanEx,
-    .pChangeDisplaySettingsEx = loaderdrv_ChangeDisplaySettingsEx,
-    .pEnumDisplaySettingsEx = loaderdrv_EnumDisplaySettingsEx,
-    .pUpdateDisplayDevices = loaderdrv_UpdateDisplayDevices,
+    /* cursor/icon functions */
     .pSetCursor = loaderdrv_SetCursor,
     .pSetCursorPos = loaderdrv_SetCursorPos,
     .pClipCursor = loaderdrv_ClipCursor,
+    /* clipboard functions */
     .pUpdateClipboard = loaderdrv_UpdateClipboard,
+    /* display modes */
+    .pChangeDisplaySettingsEx = loaderdrv_ChangeDisplaySettingsEx,
+    .pEnumDisplaySettingsEx = loaderdrv_EnumDisplaySettingsEx,
+    .pUpdateDisplayDevices = loaderdrv_UpdateDisplayDevices,
+    /* windowing functions */
     .pScrollDC = nulldrv_ScrollDC,
+    /* system parameters */
     .pSystemParametersInfo = nulldrv_SystemParametersInfo,
+    /* vulkan support */
     .pwine_get_vulkan_driver = loaderdrv_wine_get_vulkan_driver,
 };
 
diff --git a/dlls/win32u/sysparams.c b/dlls/win32u/sysparams.c
index e29a05661dc..603c16acd41 100644
--- a/dlls/win32u/sysparams.c
+++ b/dlls/win32u/sysparams.c
@@ -4475,6 +4475,14 @@ ULONG WINAPI NtUserGetProcessDpiAwarenessContext( HANDLE process )
     return dpi_awareness;
 }
 
+static BOOL message_beep( UINT i )
+{
+    BOOL active = TRUE;
+    NtUserSystemParametersInfo( SPI_GETBEEP, 0, &active, FALSE );
+    if (active) user_driver->pBeep();
+    return TRUE;
+}
+
 /***********************************************************************
  *	     NtUserCallOneParam    (win32u.@)
  */
@@ -4496,6 +4504,8 @@ ULONG_PTR WINAPI NtUserCallOneParam( ULONG_PTR arg, ULONG code )
         return get_system_metrics( arg );
     case NtUserGetDeskPattern:
         return get_entry( &entry_DESKPATTERN, 256, (WCHAR *)arg );
+    case NtUserMessageBeep:
+        return message_beep( arg );
     default:
         FIXME( "invalid code %u\n", code );
         return 0;
diff --git a/include/ntuser.h b/include/ntuser.h
index 929d773cc97..92173300a35 100644
--- a/include/ntuser.h
+++ b/include/ntuser.h
@@ -57,6 +57,7 @@ enum
     NtUserGetSysColorBrush,
     NtUserGetSysColorPen,
     NtUserGetSystemMetrics,
+    NtUserMessageBeep,
     NtUserRealizePalette,
     /* temporary exports */
     NtUserGetDeskPattern,




More information about the wine-cvs mailing list