[PATCH 3/4] winemac: Move wine_notify_icon implementation to dllmain.c.

Jacek Caban wine at gitlab.winehq.org
Wed Jun 1 08:16:01 CDT 2022


From: Jacek Caban <jacek at codeweavers.com>

Signed-off-by: Jacek Caban <jacek at codeweavers.com>
---
 dlls/winemac.drv/dllmain.c     | 7 +++++++
 dlls/winemac.drv/macdrv.h      | 4 ++++
 dlls/winemac.drv/macdrv_main.c | 1 +
 dlls/winemac.drv/systray.c     | 8 +++++---
 dlls/winemac.drv/unixlib.h     | 8 ++++++++
 5 files changed, 25 insertions(+), 3 deletions(-)

diff --git a/dlls/winemac.drv/dllmain.c b/dlls/winemac.drv/dllmain.c
index 60ca50474d7..23a1e6e2218 100644
--- a/dlls/winemac.drv/dllmain.c
+++ b/dlls/winemac.drv/dllmain.c
@@ -21,6 +21,7 @@
 #include "config.h"
 #include <stdarg.h>
 #include "macdrv.h"
+#include "shellapi.h"
 
 
 HMODULE macdrv_module = 0;
@@ -63,3 +64,9 @@ BOOL WINAPI DllMain(HINSTANCE instance, DWORD reason, void *reserved)
     macdrv_module = instance;
     return process_attach();
 }
+
+int CDECL wine_notify_icon(DWORD msg, NOTIFYICONDATAW *data)
+{
+    struct notify_icon_params params = { .msg = msg, .data = data };
+    return MACDRV_CALL(notify_icon, &params);
+}
diff --git a/dlls/winemac.drv/macdrv.h b/dlls/winemac.drv/macdrv.h
index 39aff4d6a9f..a4736b2d315 100644
--- a/dlls/winemac.drv/macdrv.h
+++ b/dlls/winemac.drv/macdrv.h
@@ -294,6 +294,10 @@ 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;
 
+/* unixlib interface */
+
+extern NTSTATUS macdrv_notify_icon(void *arg) DECLSPEC_HIDDEN;
+
 /* user helpers */
 
 static inline LRESULT send_message(HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam)
diff --git a/dlls/winemac.drv/macdrv_main.c b/dlls/winemac.drv/macdrv_main.c
index adcf6f73fc7..6ab7b108909 100644
--- a/dlls/winemac.drv/macdrv_main.c
+++ b/dlls/winemac.drv/macdrv_main.c
@@ -610,6 +610,7 @@ BOOL macdrv_SystemParametersInfo( UINT action, UINT int_param, void *ptr_param,
 const unixlib_entry_t __wine_unix_call_funcs[] =
 {
     macdrv_init,
+    macdrv_notify_icon,
 };
 
 C_ASSERT( ARRAYSIZE(__wine_unix_call_funcs) == unix_funcs_count );
diff --git a/dlls/winemac.drv/systray.c b/dlls/winemac.drv/systray.c
index a5ea7e55d79..c1901ae0036 100644
--- a/dlls/winemac.drv/systray.c
+++ b/dlls/winemac.drv/systray.c
@@ -245,12 +245,14 @@ static BOOL delete_icon(struct tray_icon *icon)
  *
  * Driver-side implementation of Shell_NotifyIcon.
  */
-int CDECL wine_notify_icon(DWORD msg, NOTIFYICONDATAW *data)
+NTSTATUS macdrv_notify_icon(void *arg)
 {
+    struct notify_icon_params *params = arg;
+    NOTIFYICONDATAW *data = params->data;
     BOOL ret = FALSE;
     struct tray_icon *icon;
 
-    switch (msg)
+    switch (params->msg)
     {
     case NIM_ADD:
         ret = add_icon(data);
@@ -272,7 +274,7 @@ int CDECL wine_notify_icon(DWORD msg, NOTIFYICONDATAW *data)
         }
         break;
     default:
-        FIXME("unhandled tray message: %u\n", msg);
+        FIXME("unhandled tray message: %u\n", params->msg);
         break;
     }
     return ret;
diff --git a/dlls/winemac.drv/unixlib.h b/dlls/winemac.drv/unixlib.h
index 9f8cd4e0acb..c24f8192142 100644
--- a/dlls/winemac.drv/unixlib.h
+++ b/dlls/winemac.drv/unixlib.h
@@ -22,6 +22,7 @@
 enum macdrv_funcs
 {
     unix_init,
+    unix_notify_icon,
     unix_funcs_count
 };
 
@@ -41,3 +42,10 @@ struct init_params
 {
     struct localized_string *strings;
 };
+
+/* macdrv_notify_icon params */
+struct notify_icon_params
+{
+    DWORD msg;
+    struct _NOTIFYICONDATAW *data;
+};
-- 
GitLab


https://gitlab.winehq.org/wine/wine/-/merge_requests/168



More information about the wine-devel mailing list