Jacek Caban : winex11: Introduce X11DRV_CALL macro.

Alexandre Julliard julliard at winehq.org
Wed May 4 16:14:45 CDT 2022


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

Author: Jacek Caban <jacek at codeweavers.com>
Date:   Mon May  2 21:15:10 2022 +0200

winex11: Introduce X11DRV_CALL macro.

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

---

 dlls/winex11.drv/dllmain.c     | 14 +++++++-------
 dlls/winex11.drv/unixlib.h     | 16 ++++++++++++++++
 dlls/winex11.drv/x11drv.h      |  1 -
 dlls/winex11.drv/x11drv_main.c | 24 +++++++++++++++++++++++-
 4 files changed, 46 insertions(+), 9 deletions(-)

diff --git a/dlls/winex11.drv/dllmain.c b/dlls/winex11.drv/dllmain.c
index 84c20217c78..6a9f4a57273 100644
--- a/dlls/winex11.drv/dllmain.c
+++ b/dlls/winex11.drv/dllmain.c
@@ -76,7 +76,7 @@ static LRESULT CALLBACK clipboard_wndproc( HWND hwnd, UINT msg, WPARAM wp, LPARA
         params.msg    = msg;
         params.wparam = wp;
         params.lparam = lp;
-        return x11drv_clipboard_message( &params );
+        return X11DRV_CALL( clipboard_message, &params );
     }
 
     return DefWindowProcW( hwnd, msg, wp, lp );
@@ -132,7 +132,7 @@ BOOL WINAPI DllMain( HINSTANCE instance, DWORD reason, void *reserved )
 
     DisableThreadLibraryCalls( instance );
     x11drv_module = instance;
-    return !x11drv_init( NULL );
+    return !X11DRV_CALL( init, NULL );
 }
 
 
@@ -142,7 +142,7 @@ BOOL WINAPI DllMain( HINSTANCE instance, DWORD reason, void *reserved )
 BOOL CDECL wine_create_desktop( UINT width, UINT height )
 {
     struct create_desktop_params params = { .width = width, .height = height };
-    return x11drv_create_desktop( &params );
+    return X11DRV_CALL( create_desktop, &params );
 }
 
 /***********************************************************************
@@ -150,7 +150,7 @@ BOOL CDECL wine_create_desktop( UINT width, UINT height )
  */
 int CDECL X11DRV_AttachEventQueueToTablet( HWND owner )
 {
-    return x11drv_tablet_attach_queue( owner );
+    return X11DRV_CALL( tablet_attach_queue, owner );
 }
 
 /***********************************************************************
@@ -158,7 +158,7 @@ int CDECL X11DRV_AttachEventQueueToTablet( HWND owner )
  */
 int CDECL X11DRV_GetCurrentPacket( void *packet )
 {
-    return x11drv_tablet_get_packet( packet );
+    return X11DRV_CALL( tablet_get_packet, packet );
 }
 
 /***********************************************************************
@@ -166,7 +166,7 @@ int CDECL X11DRV_GetCurrentPacket( void *packet )
  */
 BOOL CDECL X11DRV_LoadTabletInfo( HWND hwnd )
 {
-    return x11drv_tablet_load_info( hwnd );
+    return X11DRV_CALL( tablet_load_info, hwnd );
 }
 
 /***********************************************************************
@@ -178,5 +178,5 @@ UINT CDECL X11DRV_WTInfoW( UINT category, UINT index, void *output )
     params.category = category;
     params.index = index;
     params.output = output;
-    return x11drv_tablet_info( &params );
+    return X11DRV_CALL( tablet_info, &params );
 }
diff --git a/dlls/winex11.drv/unixlib.h b/dlls/winex11.drv/unixlib.h
index 231beb055dc..062bb59c663 100644
--- a/dlls/winex11.drv/unixlib.h
+++ b/dlls/winex11.drv/unixlib.h
@@ -19,6 +19,22 @@
 #include "ntuser.h"
 #include "wine/unixlib.h"
 
+enum x11drv_funcs
+{
+    unix_clipboard_message,
+    unix_create_desktop,
+    unix_init,
+    unix_tablet_attach_queue,
+    unix_tablet_get_packet,
+    unix_tablet_info,
+    unix_tablet_load_info,
+    unix_funcs_count,
+};
+
+/* FIXME: Use __wine_unix_call when the rest of the stack is ready */
+extern NTSTATUS x11drv_unix_call( enum x11drv_funcs code, void *params ) DECLSPEC_HIDDEN;
+#define X11DRV_CALL(func, params) x11drv_unix_call( unix_ ## func, params )
+
 /* x11drv_clipboard_message params */
 struct clipboard_message_params
 {
diff --git a/dlls/winex11.drv/x11drv.h b/dlls/winex11.drv/x11drv.h
index 5f49f609e1e..08bfa6dd1d5 100644
--- a/dlls/winex11.drv/x11drv.h
+++ b/dlls/winex11.drv/x11drv.h
@@ -843,7 +843,6 @@ static inline BOOL is_window_rect_mapped( const RECT *rect )
 
 /* unixlib interface */
 
-extern NTSTATUS x11drv_init( void *arg ) DECLSPEC_HIDDEN;
 extern NTSTATUS x11drv_clipboard_message( void *arg ) DECLSPEC_HIDDEN;
 extern NTSTATUS x11drv_create_desktop( void *arg ) DECLSPEC_HIDDEN;
 extern NTSTATUS x11drv_tablet_attach_queue( void *arg ) DECLSPEC_HIDDEN;
diff --git a/dlls/winex11.drv/x11drv_main.c b/dlls/winex11.drv/x11drv_main.c
index eb11b532af7..cc565bd30a7 100644
--- a/dlls/winex11.drv/x11drv_main.c
+++ b/dlls/winex11.drv/x11drv_main.c
@@ -629,7 +629,7 @@ static void init_visuals( Display *display, int screen )
 /***********************************************************************
  *           X11DRV process initialisation routine
  */
-NTSTATUS x11drv_init( void *arg )
+static NTSTATUS x11drv_init( void *arg )
 {
     Display *display;
     void *libx11 = dlopen( SONAME_LIBX11, RTLD_NOW|RTLD_GLOBAL );
@@ -951,3 +951,25 @@ NTSTATUS CDECL X11DRV_D3DKMTCheckVidPnExclusiveOwnership( const D3DKMT_CHECKVIDP
     pthread_mutex_unlock( &d3dkmt_mutex );
     return STATUS_SUCCESS;
 }
+
+
+const unixlib_entry_t __wine_unix_call_funcs[] =
+{
+    x11drv_clipboard_message,
+    x11drv_create_desktop,
+    x11drv_init,
+    x11drv_tablet_attach_queue,
+    x11drv_tablet_get_packet,
+    x11drv_tablet_info,
+    x11drv_tablet_load_info,
+};
+
+
+C_ASSERT( ARRAYSIZE(__wine_unix_call_funcs) == unix_funcs_count );
+
+
+/* FIXME: Use __wine_unix_call instead */
+NTSTATUS x11drv_unix_call( enum x11drv_funcs code, void *params )
+{
+    return __wine_unix_call_funcs[code]( params );
+}




More information about the wine-cvs mailing list