Jacek Caban : winemac: Directly use win32u for user functions in display.c.

Alexandre Julliard julliard at winehq.org
Mon May 23 15:51:51 CDT 2022


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

Author: Jacek Caban <jacek at codeweavers.com>
Date:   Fri May 20 18:52:38 2022 +0200

winemac: Directly use win32u for user functions in display.c.

Signed-off-by: Jacek Caban <jacek at codeweavers.com>
Signed-off-by: Huw Davies <huw at codeweavers.com>

---

 dlls/winemac.drv/display.c | 27 ++++++++++++++++-----------
 dlls/winemac.drv/macdrv.h  |  7 +++++++
 2 files changed, 23 insertions(+), 11 deletions(-)

diff --git a/dlls/winemac.drv/display.c b/dlls/winemac.drv/display.c
index 4b6740b9274..dc22131e36a 100644
--- a/dlls/winemac.drv/display.c
+++ b/dlls/winemac.drv/display.c
@@ -806,7 +806,7 @@ static BOOL get_primary_adapter(WCHAR *name)
     DWORD i;
 
     dd.cb = sizeof(dd);
-    for (i = 0; EnumDisplayDevicesW(NULL, i, &dd, 0); ++i)
+    for (i = 0; !NtUserEnumDisplayDevices(NULL, i, &dd, 0); ++i)
     {
         if (dd.StateFlags & DISPLAY_DEVICE_PRIMARY_DEVICE)
         {
@@ -856,9 +856,11 @@ LONG macdrv_ChangeDisplaySettingsEx(LPCWSTR devname, LPDEVMODEW devmode,
 
     if (!devname && !devmode)
     {
+        UNICODE_STRING str;
         memset(&default_mode, 0, sizeof(default_mode));
         default_mode.dmSize = sizeof(default_mode);
-        if (!EnumDisplaySettingsExW(primary_adapter, ENUM_REGISTRY_SETTINGS, &default_mode, 0))
+        RtlInitUnicodeString(&str, primary_adapter);
+        if (!NtUserEnumDisplaySettings(&str, ENUM_REGISTRY_SETTINGS, &default_mode, 0))
         {
             ERR("Default mode not found for %s!\n", wine_dbgstr_w(primary_adapter));
             return DISP_CHANGE_BADMODE;
@@ -1009,7 +1011,7 @@ better:
                 height *= 2;
             }
 
-            SendMessageW(GetDesktopWindow(), WM_MACDRV_UPDATE_DESKTOP_RECT, mode_bpp,
+            send_message(NtUserGetDesktopWindow(), WM_MACDRV_UPDATE_DESKTOP_RECT, mode_bpp,
                          MAKELPARAM(width, height));
             ret = DISP_CHANGE_SUCCESSFUL;
         }
@@ -1378,16 +1380,19 @@ static void init_registry_display_settings(void)
 {
     DEVMODEW dm = {.dmSize = sizeof(dm)};
     DISPLAY_DEVICEW dd = {sizeof(dd)};
+    UNICODE_STRING str;
     DWORD i = 0;
     LONG ret;
 
-    while (EnumDisplayDevicesW(NULL, i++, &dd, 0))
+    while (!NtUserEnumDisplayDevices(NULL, i++, &dd, 0))
     {
+        RtlInitUnicodeString(&str, dd.DeviceName);
+
         /* Skip if the device already has registry display settings */
-        if (EnumDisplaySettingsExW(dd.DeviceName, ENUM_REGISTRY_SETTINGS, &dm, 0))
+        if (NtUserEnumDisplaySettings(&str, ENUM_REGISTRY_SETTINGS, &dm, 0))
             continue;
 
-        if (!EnumDisplaySettingsExW(dd.DeviceName, ENUM_CURRENT_SETTINGS, &dm, 0))
+        if (!NtUserEnumDisplaySettings(&str, ENUM_CURRENT_SETTINGS, &dm, 0))
         {
             ERR("Failed to query current display settings for %s.\n", wine_dbgstr_w(dd.DeviceName));
             continue;
@@ -1397,8 +1402,8 @@ static void init_registry_display_settings(void)
               wine_dbgstr_w(dd.DeviceName), dm.dmPelsWidth, dm.dmPelsHeight, dm.dmBitsPerPel,
               dm.dmDisplayFrequency, dm.dmPosition.x, dm.dmPosition.y);
 
-        ret = ChangeDisplaySettingsExW(dd.DeviceName, &dm, NULL,
-                                       CDS_GLOBAL | CDS_NORESET | CDS_UPDATEREGISTRY, NULL);
+        ret = NtUserChangeDisplaySettings(&str, &dm, NULL,
+                                          CDS_GLOBAL | CDS_NORESET | CDS_UPDATEREGISTRY, NULL);
         if (ret != DISP_CHANGE_SUCCESSFUL)
             ERR("Failed to save registry display settings for %s, returned %d.\n",
                 wine_dbgstr_w(dd.DeviceName), ret);
@@ -1412,7 +1417,7 @@ static void init_registry_display_settings(void)
  */
 void macdrv_displays_changed(const macdrv_event *event)
 {
-    HWND hwnd = GetDesktopWindow();
+    HWND hwnd = NtUserGetDesktopWindow();
 
     /* A system display change will get delivered to all GUI-attached threads,
        so the desktop-window-owning thread will get it and all others should
@@ -1420,7 +1425,7 @@ void macdrv_displays_changed(const macdrv_event *event)
        will only get delivered to the activated process.  So, it needs to
        process it (by sending it to the desktop window). */
     if (event->displays_changed.activating ||
-        GetWindowThreadProcessId(hwnd, NULL) == GetCurrentThreadId())
+        NtUserGetWindowThread(hwnd, NULL) == GetCurrentThreadId())
     {
         CGDirectDisplayID mainDisplay = CGMainDisplayID();
         CGDisplayModeRef mode = CGDisplayCopyDisplayMode(mainDisplay);
@@ -1442,7 +1447,7 @@ void macdrv_displays_changed(const macdrv_event *event)
             height *= 2;
         }
 
-        SendMessageW(hwnd, WM_MACDRV_UPDATE_DESKTOP_RECT, mode_bpp,
+        send_message(hwnd, WM_MACDRV_UPDATE_DESKTOP_RECT, mode_bpp,
                      MAKELPARAM(width, height));
     }
 }
diff --git a/dlls/winemac.drv/macdrv.h b/dlls/winemac.drv/macdrv.h
index 29fbe8a8cb9..2cac6acf4f3 100644
--- a/dlls/winemac.drv/macdrv.h
+++ b/dlls/winemac.drv/macdrv.h
@@ -295,6 +295,13 @@ extern void macdrv_im_set_text(const macdrv_event *event) DECLSPEC_HIDDEN;
 extern void macdrv_sent_text_input(const macdrv_event *event) DECLSPEC_HIDDEN;
 extern BOOL query_ime_char_rect(macdrv_query* query) DECLSPEC_HIDDEN;
 
+/* user helpers */
+
+static inline LRESULT send_message(HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam)
+{
+    return NtUserMessageCall(hwnd, msg, wparam, lparam, NULL, NtUserSendMessage, FALSE);
+}
+
 /* registry helpers */
 
 extern HKEY open_hkcu_key( const char *name ) DECLSPEC_HIDDEN;




More information about the wine-cvs mailing list