From: Jacek Caban jacek@codeweavers.com
--- dlls/winex11.drv/dllmain.c | 8 -------- dlls/winex11.drv/init.c | 1 + dlls/winex11.drv/unixlib.h | 1 - dlls/winex11.drv/winex11.drv.spec | 1 - dlls/winex11.drv/wintab.c | 25 +++++++++++++++++++------ dlls/winex11.drv/x11drv.h | 2 +- dlls/winex11.drv/x11drv_main.c | 2 -- dlls/wintab32/Makefile.in | 2 +- dlls/wintab32/context.c | 4 ++-- dlls/wintab32/wintab32.c | 2 -- dlls/wintab32/wintab_internal.h | 1 - 11 files changed, 24 insertions(+), 25 deletions(-)
diff --git a/dlls/winex11.drv/dllmain.c b/dlls/winex11.drv/dllmain.c index c4f80895a65..b2c3b75065c 100644 --- a/dlls/winex11.drv/dllmain.c +++ b/dlls/winex11.drv/dllmain.c @@ -36,14 +36,6 @@ BOOL WINAPI DllMain( HINSTANCE instance, DWORD reason, void *reserved ) return TRUE; }
-/*********************************************************************** - * AttachEventQueueToTablet (winex11.@) - */ -int CDECL X11DRV_AttachEventQueueToTablet( HWND owner ) -{ - return X11DRV_CALL( tablet_attach_queue, owner ); -} - /*********************************************************************** * GetCurrentPacket (winex11.@) */ diff --git a/dlls/winex11.drv/init.c b/dlls/winex11.drv/init.c index e7a56252e4e..057ea529772 100644 --- a/dlls/winex11.drv/init.c +++ b/dlls/winex11.drv/init.c @@ -671,6 +671,7 @@ static const struct user_driver_funcs x11drv_funcs = .pMoveWindowBits = X11DRV_MoveWindowBits, .pWindowPosChanged = X11DRV_WindowPosChanged, .pSystemParametersInfo = X11DRV_SystemParametersInfo, + .pWintabProc = X11DRV_WintabProc, .pVulkanInit = X11DRV_VulkanInit, .pOpenGLInit = X11DRV_OpenGLInit, .pThreadDetach = X11DRV_ThreadDetach, diff --git a/dlls/winex11.drv/unixlib.h b/dlls/winex11.drv/unixlib.h index e2b1cb9704f..07da331d656 100644 --- a/dlls/winex11.drv/unixlib.h +++ b/dlls/winex11.drv/unixlib.h @@ -23,7 +23,6 @@ enum x11drv_funcs { unix_init, - unix_tablet_attach_queue, unix_tablet_get_packet, unix_tablet_info, unix_tablet_load_info, diff --git a/dlls/winex11.drv/winex11.drv.spec b/dlls/winex11.drv/winex11.drv.spec index 43d9ae6ba71..3bd451597bf 100644 --- a/dlls/winex11.drv/winex11.drv.spec +++ b/dlls/winex11.drv/winex11.drv.spec @@ -1,5 +1,4 @@ # WinTab32 -@ cdecl AttachEventQueueToTablet(long) X11DRV_AttachEventQueueToTablet @ cdecl GetCurrentPacket(ptr) X11DRV_GetCurrentPacket @ cdecl LoadTabletInfo(long) X11DRV_LoadTabletInfo @ cdecl WTInfoW(long long ptr) X11DRV_WTInfoW diff --git a/dlls/winex11.drv/wintab.c b/dlls/winex11.drv/wintab.c index a817ce4eff2..2905b37d2cc 100644 --- a/dlls/winex11.drv/wintab.c +++ b/dlls/winex11.drv/wintab.c @@ -1003,9 +1003,9 @@ static BOOL proximity_event( HWND hwnd, XEvent *event ) }
/*********************************************************************** - * x11drv_tablet_attach_queue + * tablet_attach_queue */ -NTSTATUS x11drv_tablet_attach_queue( void *owner ) +static BOOL tablet_attach_queue( HWND owner ) { struct x11drv_thread_data *data = x11drv_init_thread_data(); int num_devices; @@ -1017,7 +1017,7 @@ NTSTATUS x11drv_tablet_attach_queue( void *owner ) XEventClass event_list[7]; Window win = X11DRV_get_whole_window( owner );
- if (!win || !xinput_handle) return 0; + if (!win || !xinput_handle) return FALSE;
TRACE("Creating context for window %p (%lx) %i cursors\n", owner, win, gNumCursors);
@@ -1091,7 +1091,7 @@ NTSTATUS x11drv_tablet_attach_queue( void *owner ) X11DRV_check_error();
if (NULL != devices) pXFreeDeviceList(devices); - return 0; + return TRUE; }
/*********************************************************************** @@ -1550,12 +1550,25 @@ NTSTATUS x11drv_tablet_info( void *arg ) return rc; }
+/*********************************************************************** + * X11DRV_WintabProc + */ +LRESULT X11DRV_WintabProc( HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam, void *buffer ) +{ + switch (msg) + { + case NtUserWintabAttach: + return tablet_attach_queue( hwnd ); + } + return 0; +} + #else /* SONAME_LIBXI */
/*********************************************************************** - * x11drv_tablet_attach_queue + * X11DRV_WintabProc */ -NTSTATUS x11drv_tablet_attach_queue( void *owner ) +LRESULT X11DRV_WintabProc( HWND hwmd, UINT msg, WPARAM wparam, LPARAM lparam, void *buffer ) { return 0; } diff --git a/dlls/winex11.drv/x11drv.h b/dlls/winex11.drv/x11drv.h index 63d6a316642..0d2823651a4 100644 --- a/dlls/winex11.drv/x11drv.h +++ b/dlls/winex11.drv/x11drv.h @@ -251,6 +251,7 @@ extern void X11DRV_WindowPosChanged( HWND hwnd, HWND insert_after, HWND owner_hi const struct window_rects *new_rects, struct window_surface *surface ); extern BOOL X11DRV_SystemParametersInfo( UINT action, UINT int_param, void *ptr_param, UINT flags ); +extern LRESULT X11DRV_WintabProc( HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam, void *buffer ); extern void X11DRV_ThreadDetach(void);
/* X11 driver internal functions */ @@ -897,7 +898,6 @@ static inline BOOL is_window_rect_mapped( const RECT *rect )
/* unixlib interface */
-extern NTSTATUS x11drv_tablet_attach_queue( void *arg ); extern NTSTATUS x11drv_tablet_get_packet( void *arg ); extern NTSTATUS x11drv_tablet_load_info( void *arg ); extern NTSTATUS x11drv_tablet_info( void *arg ); diff --git a/dlls/winex11.drv/x11drv_main.c b/dlls/winex11.drv/x11drv_main.c index e078a66fbb0..bf9064970de 100644 --- a/dlls/winex11.drv/x11drv_main.c +++ b/dlls/winex11.drv/x11drv_main.c @@ -806,7 +806,6 @@ BOOL X11DRV_SystemParametersInfo( UINT action, UINT int_param, void *ptr_param, const unixlib_entry_t __wine_unix_call_funcs[] = { x11drv_init, - x11drv_tablet_attach_queue, x11drv_tablet_get_packet, x11drv_tablet_info, x11drv_tablet_load_info, @@ -837,7 +836,6 @@ static NTSTATUS x11drv_wow64_tablet_info( void *arg ) const unixlib_entry_t __wine_unix_call_wow64_funcs[] = { x11drv_init, - x11drv_tablet_attach_queue, x11drv_tablet_get_packet, x11drv_wow64_tablet_info, x11drv_tablet_load_info, diff --git a/dlls/wintab32/Makefile.in b/dlls/wintab32/Makefile.in index 52e9312af6f..b67e91a7e20 100644 --- a/dlls/wintab32/Makefile.in +++ b/dlls/wintab32/Makefile.in @@ -1,6 +1,6 @@ MODULE = wintab32.dll IMPORTLIB = wintab32 -IMPORTS = user32 advapi32 +IMPORTS = user32 advapi32 win32u
SOURCES = \ context.c \ diff --git a/dlls/wintab32/context.c b/dlls/wintab32/context.c index bd0c982da2d..510c268b72e 100644 --- a/dlls/wintab32/context.c +++ b/dlls/wintab32/context.c @@ -26,7 +26,7 @@ #include "windef.h" #include "winerror.h" #include "winbase.h" -#include "winuser.h" +#include "ntuser.h" #include "winnls.h"
#include "wintab.h" @@ -481,7 +481,7 @@ HCTX WINAPI WTOpenW(HWND hWnd, LPLOGCONTEXTW lpLogCtx, BOOL fEnable) gOpenContexts = newcontext; LeaveCriticalSection(&csTablet);
- pAttachEventQueueToTablet(hWnd); + NtUserMessageCall(hWnd, NtUserWintabAttach, 0, 0, NULL, NtUserWintabDriverCall, FALSE);
TABLET_PostTabletMessage(newcontext, _WT_CTXOPEN(newcontext->context.lcMsgBase), (WPARAM)newcontext->handle, newcontext->context.lcStatus, TRUE); diff --git a/dlls/wintab32/wintab32.c b/dlls/wintab32/wintab32.c index b13c0573454..415a4dbca0f 100644 --- a/dlls/wintab32/wintab32.c +++ b/dlls/wintab32/wintab32.c @@ -44,7 +44,6 @@ CRITICAL_SECTION csTablet = { &csTablet_debug, -1, 0, 0, 0, 0 };
int (CDECL *pLoadTabletInfo)(HWND hwnddefault) = NULL; int (CDECL *pGetCurrentPacket)(LPWTPACKET packet) = NULL; -int (CDECL *pAttachEventQueueToTablet)(HWND hOwner) = NULL; UINT (CDECL *pWTInfoW)(UINT wCategory, UINT nIndex, LPVOID lpOutput) = NULL;
static LRESULT WINAPI TABLET_WindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, @@ -108,7 +107,6 @@ BOOL WINAPI DllMain(HINSTANCE hInstDLL, DWORD fdwReason, LPVOID lpReserved) { HMODULE module = load_graphics_driver(); pLoadTabletInfo = (void *)GetProcAddress(module, "LoadTabletInfo"); - pAttachEventQueueToTablet = (void *)GetProcAddress(module, "AttachEventQueueToTablet"); pGetCurrentPacket = (void *)GetProcAddress(module, "GetCurrentPacket"); pWTInfoW = (void *)GetProcAddress(module, "WTInfoW"); } diff --git a/dlls/wintab32/wintab_internal.h b/dlls/wintab32/wintab_internal.h index f1529a59bb1..049c54f8cdb 100644 --- a/dlls/wintab32/wintab_internal.h +++ b/dlls/wintab32/wintab_internal.h @@ -153,7 +153,6 @@ LPOPENCONTEXT AddPacketToContextQueue(LPWTPACKET packet, HWND hwnd); /* X11drv functions */ extern int (CDECL *pLoadTabletInfo)(HWND hwnddefault); extern int (CDECL *pGetCurrentPacket)(LPWTPACKET packet); -extern int (CDECL *pAttachEventQueueToTablet)(HWND hOwner); extern UINT (CDECL *pWTInfoW)(UINT wCategory, UINT nIndex, LPVOID lpOutput);
extern HWND hwndDefault;