[RFC PATCH 1/6] wineandroid.drv: Replace __wine_send_input with direct send_hardware_message request.

Rémi Bernon rbernon at codeweavers.com
Mon Nov 11 14:22:58 CST 2019


Signed-off-by: Rémi Bernon <rbernon at codeweavers.com>
---
 dlls/wineandroid.drv/keyboard.c | 23 +++++++++++++----------
 dlls/wineandroid.drv/window.c   | 31 +++++++++++++++++++++++++++++--
 2 files changed, 42 insertions(+), 12 deletions(-)

diff --git a/dlls/wineandroid.drv/keyboard.c b/dlls/wineandroid.drv/keyboard.c
index 2c37c42e0d4..5c9ed2442df 100644
--- a/dlls/wineandroid.drv/keyboard.c
+++ b/dlls/wineandroid.drv/keyboard.c
@@ -671,16 +671,19 @@ static BOOL get_async_key_state( BYTE state[256] )
 
 static void send_keyboard_input( HWND hwnd, WORD vkey, WORD scan, DWORD flags )
 {
-    INPUT input;
-
-    input.type             = INPUT_KEYBOARD;
-    input.u.ki.wVk         = vkey;
-    input.u.ki.wScan       = scan;
-    input.u.ki.dwFlags     = flags;
-    input.u.ki.time        = 0;
-    input.u.ki.dwExtraInfo = 0;
-
-    __wine_send_input( hwnd, &input );
+    SERVER_START_REQ( send_hardware_message )
+    {
+        req->win             = wine_server_user_handle( hwnd );
+        req->flags           = 0;
+        req->input.type      = INPUT_KEYBOARD;
+        req->input.kbd.vkey  = vkey;
+        req->input.kbd.scan  = scan;
+        req->input.kbd.flags = flags;
+        req->input.kbd.time  = 0;
+        req->input.kbd.info  = 0;
+        wine_server_call( req );
+    }
+    SERVER_END_REQ;
 }
 
 /***********************************************************************
diff --git a/dlls/wineandroid.drv/window.c b/dlls/wineandroid.drv/window.c
index eb05aaf2832..2b757636847 100644
--- a/dlls/wineandroid.drv/window.c
+++ b/dlls/wineandroid.drv/window.c
@@ -521,7 +521,21 @@ static int process_events( DWORD mask )
                     }
                     SERVER_END_REQ;
                 }
-                __wine_send_input( capture ? capture : event->data.motion.hwnd, &event->data.motion.input );
+
+                SERVER_START_REQ( send_hardware_message )
+                {
+                    req->win               = wine_server_user_handle( capture ? capture : event->data.motion.hwnd );
+                    req->flags             = 0;
+                    req->input.type        = INPUT_MOUSE;
+                    req->input.mouse.x     = event->data.motion.input.u.mi.dx;
+                    req->input.mouse.y     = event->data.motion.input.u.mi.dy;
+                    req->input.mouse.data  = event->data.motion.input.u.mi.mouseData;
+                    req->input.mouse.flags = event->data.motion.input.u.mi.dwFlags;
+                    req->input.mouse.time  = event->data.motion.input.u.mi.time;
+                    req->input.mouse.info  = event->data.motion.input.u.mi.dwExtraInfo;
+                    wine_server_call( req );
+                }
+                SERVER_END_REQ;
             }
             break;
 
@@ -535,7 +549,20 @@ static int process_events( DWORD mask )
                       event->data.kbd.input.u.ki.wVk, event->data.kbd.input.u.ki.wVk,
                       event->data.kbd.input.u.ki.wScan );
             update_keyboard_lock_state( event->data.kbd.input.u.ki.wVk, event->data.kbd.lock_state );
-            __wine_send_input( 0, &event->data.kbd.input );
+
+            SERVER_START_REQ( send_hardware_message )
+            {
+                req->win             = wine_server_user_handle( 0 );
+                req->flags           = 0;
+                req->input.type      = INPUT_KEYBOARD;
+                req->input.kbd.vkey  = event->data.kbd.input.u.ki.wVk;
+                req->input.kbd.scan  = event->data.kbd.input.u.ki.wScan;
+                req->input.kbd.flags = event->data.kbd.input.u.ki.dwFlags;
+                req->input.kbd.time  = event->data.kbd.input.u.ki.time;
+                req->input.kbd.info  = event->data.kbd.input.u.ki.dwExtraInfo;
+                wine_server_call( req );
+            }
+            SERVER_END_REQ;
             break;
 
         default:
-- 
2.24.0.rc2




More information about the wine-devel mailing list