XLibWrapper XI2 functions

(cherry picked from commit d6bd1bfa2b)
This commit is contained in:
Denis Konoplev
2019-10-11 18:40:49 +03:00
committed by alexey.ushakov@jetbrains.com
parent 9c12c9adad
commit bcb0e4a1d3
2 changed files with 59 additions and 0 deletions

View File

@@ -557,6 +557,17 @@ static native String XSetLocaleModifiers(String modifier_list);
static native void SetZOrder(long display, long window, long above);
// static native void XISetMask(long );
// static native void XISelectEvents(long display, long window);
//TODO replace it with more general func
static native void SetupXI2(long display, long window);
static native boolean XGetEventData(long display, long ptr);
static native void XFreeEventData(long display, long ptr);
static XIDeviceEvent GetXIDeviceEvent(XGenericEventCookie cookie) {
return new XIDeviceEvent(cookie.get_data());
}
/* Global memory area used for X lib parameter passing */
static final long lbuffer = unsafe.allocateMemory(64); // array to hold 8 longs

View File

@@ -41,6 +41,8 @@
#include <string.h>
#include <X11/extensions/Xdbe.h>
#include <X11/extensions/shape.h>
#include <X11/extensions/XI2.h>
#include <X11/extensions/XInput2.h>
#include <X11/keysym.h>
#include <X11/Sunkeysym.h>
#include <X11/Xlib.h>
@@ -2316,6 +2318,52 @@ Java_sun_awt_X11_XlibWrapper_SetZOrder
value_mask, &wc );
}
/*
* Class: XlibWrapper
* Method: SetupXI2
*/
JNIEXPORT void JNICALL
Java_sun_awt_X11_XlibWrapper_SetupXI2
(JNIEnv *env, jclass clazz, jlong display, jlong window)
{
unsigned char mask[XIMaskLen(XI_LASTEVENT)];
memset(mask, 0, sizeof(mask));
XISetMask(mask, XI_TouchBegin);
XISetMask(mask, XI_TouchUpdate);
XISetMask(mask, XI_TouchEnd);
XIEventMask evmask;
evmask.deviceid = XIAllDevices;
evmask.mask_len = sizeof(mask);
evmask.mask = mask;
XISelectEvents((Display *)jlong_to_ptr(display), (Window)jlong_to_ptr(window), &evmask, 1);
XFlush((Display *)jlong_to_ptr(display));
}
/*
* Class: XlibWrapper
* Method: XGetEventData
*/
JNIEXPORT jboolean JNICALL
Java_sun_awt_X11_XlibWrapper_XGetEventData
(JNIEnv *env, jclass clazz, jlong display, jlong ptr)
{
return XGetEventData((Display *)jlong_to_ptr(display),
(XGenericEventCookie *)ptr_to_jlong(ptr)) ? JNI_TRUE : JNI_FALSE;
}
/*
* Class: XlibWrapper
* Method: XFreeEventData
*/
JNIEXPORT void JNICALL
Java_sun_awt_X11_XlibWrapper_XFreeEventData
(JNIEnv *env, jclass clazz, jlong display, jlong ptr)
{
return XFreeEventData((Display *)jlong_to_ptr(display), (XGenericEventCookie *)ptr_to_jlong(ptr));
}
/*
* Class: XlibWrapper
* Method: SetBitmapShape