aboutsummaryrefslogtreecommitdiffstats
path: root/src/newt/native/X11Common.h
diff options
context:
space:
mode:
authorSven Gothel <[email protected]>2019-03-27 03:10:41 +0100
committerSven Gothel <[email protected]>2019-03-27 03:10:41 +0100
commit746383476aa449e9cab4a25df27be85b61aa074b (patch)
tree8f5d54b10abd6fbc23b8b82011b4a24bb16c7d21 /src/newt/native/X11Common.h
parent92006e4baef57f1f3fb647dd307aed5989fd4c8d (diff)
Bug 1348: X11 XI Multitouch: Fixes of previous commit 92006e4baef57f1f3fb647dd307aed5989fd4c8d
Previous commit 92006e4baef57f1f3fb647dd307aed5989fd4c8d (Note to Danny: I cannot test this now - please re-test and/or review) X11Common::JavaWindow - Owns XI extension's xiOpcode, selected xiTouchDeviceId and tracked XITouchPosition array X11Window::CreateWindow - Query XI extension only once @ window creation and earmark xiOpcode in JavaWindow instance - Fix: Device selection code was "class->type != XITouchClass", but shouldn't it be 'XITouchClass == class->type' (as patched here) - Fix: Free XIQueryDevice returned XIDeviceInfo array via XIFreeDeviceInfo - Earmark deviceid in JavaWindow instance X11Display - Moved global static touch_coordinates to JavaWindow::xiTouchCoords instance X11Display::DispatchMessage - Changed event handling structure similar to https://keithp.com/blogs/Cursor_tracking/ - Fix: Free XGetEventData's optional memory allocation via XFreeEventData - Reuse JavaWindow's queried xiOpcode - Fix: Don't overrise windowPointer, instead validate and require a match. JavaWindow must match! - Fix: Also validate chosen deviceid with JavaWindow's registered device Newt Build: - Added libXi in build recipe and doc
Diffstat (limited to 'src/newt/native/X11Common.h')
-rw-r--r--src/newt/native/X11Common.h11
1 files changed, 11 insertions, 0 deletions
diff --git a/src/newt/native/X11Common.h b/src/newt/native/X11Common.h
index 78fa18cc8..99795b6e8 100644
--- a/src/newt/native/X11Common.h
+++ b/src/newt/native/X11Common.h
@@ -75,6 +75,14 @@ extern jmethodID visibleChangedID;
extern jmethodID insetsVisibleChangedID;
typedef struct {
+ int id;
+ int x;
+ int y;
+} XITouchPosition;
+
+#define XI_TOUCHCOORD_COUNT 10
+
+typedef struct {
Window window;
jobject jwindow;
Atom * allAtoms;
@@ -86,6 +94,9 @@ typedef struct {
Bool maxVert;
/** flag whether window is mapped */
Bool isMapped;
+ int xiOpcode;
+ int xiTouchDeviceId;
+ XITouchPosition xiTouchCoords[XI_TOUCHCOORD_COUNT];
} JavaWindow;
JavaWindow * getJavaWindowProperty(JNIEnv *env, Display *dpy, Window window, jlong javaObjectAtom, Bool showWarning);