John Chadwick : winex11.drv: Handle button events without axes.
Alexandre Julliard
julliard at winehq.org
Thu Nov 21 16:33:28 CST 2019
Module: wine
Branch: master
Commit: 4506b468d472ce68fec56b668a4eea166bb334fb
URL: https://source.winehq.org/git/wine.git/?a=commit;h=4506b468d472ce68fec56b668a4eea166bb334fb
Author: John Chadwick <john at jchw.io>
Date: Tue Nov 19 23:23:22 2019 -0800
winex11.drv: Handle button events without axes.
Not all XInput events contain axes information. In particular, libinput
does not seem to provide axes information on button_event.
Signed-off-by: John Chadwick <john at jchw.io>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>
---
dlls/winex11.drv/wintab.c | 21 ++++++++++++++-------
1 file changed, 14 insertions(+), 7 deletions(-)
diff --git a/dlls/winex11.drv/wintab.c b/dlls/winex11.drv/wintab.c
index fe3d4a8ff4..12eb89ac7f 100644
--- a/dlls/winex11.drv/wintab.c
+++ b/dlls/winex11.drv/wintab.c
@@ -929,13 +929,20 @@ static BOOL button_event( HWND hwnd, XEvent *event )
gMsgPacket.pkTime = EVENT_x11_time_to_win32_time(button->time);
gMsgPacket.pkSerialNumber = gSerial++;
gMsgPacket.pkCursor = curnum;
- gMsgPacket.pkX = button->axis_data[0];
- gMsgPacket.pkY = button->axis_data[1];
- gMsgPacket.pkOrientation.orAzimuth = figure_deg(button->axis_data[3],button->axis_data[4]);
- gMsgPacket.pkOrientation.orAltitude = ((1000 - 15 * max(abs(button->axis_data[3]),
- abs(button->axis_data[4])))
- * (gMsgPacket.pkStatus & TPS_INVERT?-1:1));
- gMsgPacket.pkNormalPressure = button->axis_data[2];
+ if (button->axes_count > 0) {
+ gMsgPacket.pkX = button->axis_data[0];
+ gMsgPacket.pkY = button->axis_data[1];
+ gMsgPacket.pkOrientation.orAzimuth = figure_deg(button->axis_data[3],button->axis_data[4]);
+ gMsgPacket.pkOrientation.orAltitude = ((1000 - 15 * max(abs(button->axis_data[3]),
+ abs(button->axis_data[4])))
+ * (gMsgPacket.pkStatus & TPS_INVERT?-1:1));
+ gMsgPacket.pkNormalPressure = button->axis_data[2];
+ } else {
+ gMsgPacket.pkX = last_packet.pkX;
+ gMsgPacket.pkY = last_packet.pkY;
+ gMsgPacket.pkOrientation = last_packet.pkOrientation;
+ gMsgPacket.pkNormalPressure = last_packet.pkNormalPressure;
+ }
gMsgPacket.pkButtons = get_button_state(curnum);
gMsgPacket.pkChanged = get_changed_state(&gMsgPacket);
SendMessageW(hwndTabletDefault,WT_PACKET,gMsgPacket.pkSerialNumber,(LPARAM)hwnd);
More information about the wine-cvs
mailing list