< prev index next >
src/java.desktop/unix/native/libawt_xawt/xawt/XlibWrapper.c
Print this page
rev 50285 : 8201429: Support AIX Input Method Editor (IME) for AWT Input Method Framework (IMF)
@@ -1,7 +1,7 @@
/*
- * Copyright (c) 2002, 2017, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2002, 2018, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation. Oracle designates this
@@ -21,35 +21,36 @@
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
+#include "awt.h"
+#include "awt_util.h"
+#include "jni.h"
+#include "jlong.h"
+#include "Region.h"
+#include "sizecalc.h"
+#include "utility/rect.h"
+
#include "sun_awt_X11_XlibWrapper.h"
-#include <X11/Xlib.h>
-#include <X11/keysym.h>
-#include <X11/Xutil.h>
-#include <X11/Xos.h>
-#include <X11/Xatom.h>
+
+#include <stdlib.h>
+#include <string.h>
#include <X11/extensions/Xdbe.h>
#include <X11/extensions/shape.h>
-#include <string.h>
-#include <stdlib.h>
+#include <X11/keysym.h>
#include <X11/Sunkeysym.h>
-
-#include <jni.h>
-#include <jni_util.h>
-#include <jlong.h>
-#include <sizecalc.h>
-
-#include <awt.h>
-#include <awt_util.h>
-#include <jvm.h>
-
-#include <Region.h>
-#include "utility/rect.h"
-
+#include <X11/Xlib.h>
+#include <X11/Xatom.h>
#include <X11/XKBlib.h>
+#include <X11/Xos.h>
+#include <X11/Xutil.h>
+
+#if defined(AIX)
+#undef X_HAVE_UTF8_STRING
+extern Bool statusWindowEventHandler(XEvent event);
+#endif
// From XWindow.c
extern KeySym keycodeToKeysym(Display *display, KeyCode keycode, int index);
#if defined(DEBUG)
@@ -286,11 +287,10 @@
(JNIEnv *env , jclass clazz, jlong display) {
AWT_CHECK_HAVE_LOCK_RETURN(0);
return ScreenCount((Display *) jlong_to_ptr(display));
}
-
/*
* Class: XlibWrapper
* Method: XCreateWindow
* Signature: (JJIIIIIIJJJJ)J
*/
@@ -301,11 +301,10 @@
{
AWT_CHECK_HAVE_LOCK_RETURN(0);
return XCreateWindow((Display *) jlong_to_ptr(display),(Window) window, x, y, w, h,
border_width, depth, wclass, (Visual *) jlong_to_ptr(visual),
valuemask, (XSetWindowAttributes *) jlong_to_ptr(attributes));
-
}
/*
* Class: XlibWrapper
* Method: XConvertCase
@@ -318,22 +317,20 @@
AWT_CHECK_HAVE_LOCK();
XConvertCase(keysym, (jlong_to_ptr(keysym_lowercase)),
(jlong_to_ptr(keysym_uppercase)));
}
-
/*
* Class: XlibWrapper
* Method: XMapWindow
* Signature: (JJ)V
*/
JNIEXPORT void JNICALL Java_sun_awt_X11_XlibWrapper_XMapWindow
(JNIEnv *env, jclass clazz, jlong display, jlong window)
{
AWT_CHECK_HAVE_LOCK();
XMapWindow( (Display *)jlong_to_ptr(display),(Window) window);
-
}
/*
* Class: XlibWrapper
* Method: XMapRaised
@@ -342,53 +339,46 @@
JNIEXPORT void JNICALL Java_sun_awt_X11_XlibWrapper_XMapRaised
(JNIEnv *env, jclass clazz, jlong display, jlong window)
{
AWT_CHECK_HAVE_LOCK();
XMapRaised( (Display *)jlong_to_ptr(display),(Window) window);
-
}
/*
* Class: XlibWrapper
* Method: XRaiseWindow
* Signature: (JJ)V
*/
JNIEXPORT void JNICALL Java_sun_awt_X11_XlibWrapper_XRaiseWindow
(JNIEnv *env, jclass clazz, jlong display, jlong window)
{
-
AWT_CHECK_HAVE_LOCK();
XRaiseWindow( (Display *)jlong_to_ptr(display),(Window) window);
-
}
/*
* Class: XlibWrapper
* Method: XLowerWindow
* Signature: (JJ)V
*/
JNIEXPORT void JNICALL Java_sun_awt_X11_XlibWrapper_XLowerWindow
(JNIEnv *env, jclass clazz, jlong display, jlong window)
{
-
AWT_CHECK_HAVE_LOCK();
XLowerWindow( (Display *)jlong_to_ptr(display),(Window) window);
-
}
/*
* Class: XlibWrapper
* Method: XRestackWindows
* Signature: (JJI)V
*/
JNIEXPORT void JNICALL Java_sun_awt_X11_XlibWrapper_XRestackWindows
(JNIEnv *env, jclass clazz, jlong display, jlong windows, jint length)
{
-
AWT_CHECK_HAVE_LOCK();
XRestackWindows( (Display *) jlong_to_ptr(display), (Window *) jlong_to_ptr(windows), length);
-
}
/*
* Class: XlibWrapper
* Method: XConfigureWindow
@@ -409,46 +399,41 @@
* Signature: (JJ)V
*/
JNIEXPORT void JNICALL Java_sun_awt_X11_XlibWrapper_XSetInputFocus
(JNIEnv *env, jclass clazz, jlong display, jlong window)
{
-
AWT_CHECK_HAVE_LOCK();
XSetInputFocus( (Display *)jlong_to_ptr(display),(Window) window, RevertToPointerRoot, CurrentTime);
-
}
+
/*
* Class: XlibWrapper
* Method: XSetInputFocus2
* Signature: (JJJ)V
*/
JNIEXPORT void JNICALL Java_sun_awt_X11_XlibWrapper_XSetInputFocus2
(JNIEnv *env, jclass clazz, jlong display, jlong window, jlong time)
{
-
AWT_CHECK_HAVE_LOCK();
XSetInputFocus( (Display *)jlong_to_ptr(display),(Window) window, RevertToPointerRoot, time);
-
}
/*
* Class: XlibWrapper
* Method: XGetInputFocus
* Signature: (JJ)V
*/
JNIEXPORT jlong JNICALL Java_sun_awt_X11_XlibWrapper_XGetInputFocus
(JNIEnv *env, jclass clazz, jlong display)
{
-
Window focusOwner;
int revert_to;
AWT_CHECK_HAVE_LOCK_RETURN(0);
XGetInputFocus( (Display *)jlong_to_ptr(display), &focusOwner, &revert_to);
return focusOwner;
}
-
/*
* Class: XlibWrapper
* Method: XDestroyWindow
* Signature: (JJ)V
*/
@@ -523,12 +508,10 @@
AWT_CHECK_HAVE_LOCK();
XUnmapWindow( (Display *)jlong_to_ptr(display),(Window) window);
}
-
-
JNIEXPORT void JNICALL Java_sun_awt_X11_XlibWrapper_XSelectInput
(JNIEnv *env, jclass clazz, jlong display, jlong window, jlong mask)
{
AWT_CHECK_HAVE_LOCK();
XSelectInput((Display *) jlong_to_ptr(display), (Window) window, mask);
@@ -541,20 +524,22 @@
AWT_CHECK_HAVE_LOCK();
XkbSelectEvents((Display *) jlong_to_ptr(display), (unsigned int)device,
(unsigned long)bits_to_change,
(unsigned long)values_for_bits);
}
+
JNIEXPORT void JNICALL Java_sun_awt_X11_XlibWrapper_XkbSelectEventDetails
(JNIEnv *env, jclass clazz, jlong display, jlong device, jlong event_type,
jlong bits_to_change, jlong values_for_bits)
{
AWT_CHECK_HAVE_LOCK();
XkbSelectEventDetails((Display *) jlong_to_ptr(display), (unsigned int)device,
(unsigned int) event_type,
(unsigned long)bits_to_change,
(unsigned long)values_for_bits);
}
+
JNIEXPORT jboolean JNICALL Java_sun_awt_X11_XlibWrapper_XkbQueryExtension
(JNIEnv *env, jclass clazz, jlong display, jlong opcode_rtrn, jlong event_rtrn,
jlong error_rtrn, jlong major_in_out, jlong minor_in_out)
{
Bool status;
@@ -565,10 +550,11 @@
(int *) jlong_to_ptr(error_rtrn),
(int *) jlong_to_ptr(major_in_out),
(int *) jlong_to_ptr(minor_in_out));
return status ? JNI_TRUE : JNI_FALSE;
}
+
JNIEXPORT jboolean JNICALL Java_sun_awt_X11_XlibWrapper_XkbLibraryVersion
(JNIEnv *env, jclass clazz, jlong lib_major_in_out, jlong lib_minor_in_out)
{
Bool status;
AWT_CHECK_HAVE_LOCK_RETURN(JNI_FALSE);
@@ -585,10 +571,11 @@
AWT_CHECK_HAVE_LOCK_RETURN(0);
return (jlong) XkbGetMap( (Display *) jlong_to_ptr(display),
(unsigned int) which,
(unsigned int) device_spec);
}
+
JNIEXPORT jlong JNICALL Java_sun_awt_X11_XlibWrapper_XkbGetUpdatedMap
(JNIEnv *env, jclass clazz, jlong display, jlong which, jlong xkb)
{
AWT_CHECK_HAVE_LOCK_RETURN(0);
return (jlong) XkbGetUpdatedMap( (Display *) jlong_to_ptr(display),
@@ -624,12 +611,10 @@
/*
* Class: sun_awt_X11_XlibWrapper
* Method: XNextEvent
* Signature: (JJ)V
*/
-
-
JNIEXPORT void JNICALL Java_sun_awt_X11_XlibWrapper_XNextEvent
(JNIEnv *env, jclass clazz, jlong display, jlong ptr)
{
AWT_CHECK_HAVE_LOCK();
XNextEvent( (Display *) jlong_to_ptr(display), jlong_to_ptr(ptr));
@@ -638,11 +623,10 @@
/*
* Class: sun_awt_X11_XlibWrapper
* Method: XMaskEvent
* Signature: (JJJ)V
*/
-
JNIEXPORT void JNICALL Java_sun_awt_X11_XlibWrapper_XMaskEvent
(JNIEnv *env, jclass clazz, jlong display, jlong event_mask, jlong event_return)
{
AWT_CHECK_HAVE_LOCK();
XMaskEvent( (Display *) jlong_to_ptr(display), event_mask, (XEvent *) jlong_to_ptr(event_return));
@@ -651,11 +635,10 @@
/*
* Class: sun_awt_X11_XlibWrapper
* Method: XWindowEvent
* Signature: (JJJJ)V
*/
-
JNIEXPORT void JNICALL Java_sun_awt_X11_XlibWrapper_XWindowEvent
(JNIEnv *env, jclass clazz, jlong display, jlong window, jlong event_mask, jlong event_return)
{
AWT_CHECK_HAVE_LOCK();
XWindowEvent( (Display *) jlong_to_ptr(display), (Window)window, event_mask, (XEvent *) jlong_to_ptr(event_return));
@@ -668,10 +651,15 @@
*/
JNIEXPORT jboolean JNICALL Java_sun_awt_X11_XlibWrapper_XFilterEvent
(JNIEnv *env, jclass clazz, jlong ptr, jlong window)
{
AWT_CHECK_HAVE_LOCK_RETURN(JNI_FALSE);
+#if defined(AIX)
+ if (True == statusWindowEventHandler(*((XEvent *)(uintptr_t)ptr))) {
+ return (jboolean)True;
+ }
+#endif
return (jboolean) XFilterEvent((XEvent *) jlong_to_ptr(ptr), (Window) window);
}
/*
* Class: sun_awt_X11_XlibWrapper
@@ -725,64 +713,53 @@
{
AWT_CHECK_HAVE_LOCK();
XPeekEvent((Display *) jlong_to_ptr(display),jlong_to_ptr(ptr));
}
-
/*
* Class: sun_awt_X11_XlibWrapper
* Method: XMoveResizeWindow
* Signature: (JJIIII)V
*/
-
JNIEXPORT void JNICALL Java_sun_awt_X11_XlibWrapper_XMoveResizeWindow
(JNIEnv *env, jclass clazz, jlong display, jlong window, jint x , jint y , jint width, jint height) {
-
AWT_CHECK_HAVE_LOCK();
XMoveResizeWindow( (Display *) jlong_to_ptr(display), (Window) window, x, y, width, height);
-
}
/*
* Class: sun_awt_X11_XlibWrapper
* Method: XResizeWindow
* Signature: (JJII)V
*/
-
JNIEXPORT void JNICALL Java_sun_awt_X11_XlibWrapper_XResizeWindow
-(JNIEnv *env, jclass clazz, jlong display, jlong window, jint width, jint height)
-{
+(JNIEnv *env, jclass clazz, jlong display, jlong window, jint width, jint height) {
AWT_CHECK_HAVE_LOCK();
XResizeWindow( (Display *) jlong_to_ptr(display),(Window) window,width,height);
}
/*
* Class: sun_awt_X11_XlibWrapper
* Method: XMoveWindow
* Signature: (JJII)V
*/
-
JNIEXPORT void JNICALL Java_sun_awt_X11_XlibWrapper_XMoveWindow
-(JNIEnv *env, jclass clazz, jlong display, jlong window, jint width, jint height)
-{
+(JNIEnv *env, jclass clazz, jlong display, jlong window, jint width, jint height) {
AWT_CHECK_HAVE_LOCK();
XMoveWindow( (Display *) jlong_to_ptr(display),(Window) window,width,height);
}
/*
* Class: sun_awt_X11_XlibWrapper
* Method: XSetWindowBackground
* Signature: (JJJ)V
*/
-
JNIEXPORT void JNICALL Java_sun_awt_X11_XlibWrapper_XSetWindowBackground
(JNIEnv *env, jclass clazz, jlong display, jlong window, jlong background_pixel) {
-
AWT_CHECK_HAVE_LOCK();
XSetWindowBackground((Display *) jlong_to_ptr(display),window,background_pixel);
-
}
/*
* Class: sun_awt_X11_XlibWrapper
@@ -801,14 +778,12 @@
* Method: XSync
* Signature: (JI)V
*/
JNIEXPORT void JNICALL Java_sun_awt_X11_XlibWrapper_XSync
(JNIEnv *env, jclass clazz, jlong display, jint discard) {
-
AWT_CHECK_HAVE_LOCK();
XSync((Display *) jlong_to_ptr(display), discard);
-
}
JNIEXPORT jint JNICALL Java_sun_awt_X11_XlibWrapper_XTranslateCoordinates
(JNIEnv *env, jclass clazz, jlong display, jlong src_w, jlong dest_w,
jlong src_x, jlong src_y, jlong dest_x_return, jlong dest_y_return,
@@ -853,22 +828,20 @@
CHECK_NULL(cname);
} else {
cname = "";
}
-
AWT_CHECK_HAVE_LOCK();
#ifdef X_HAVE_UTF8_STRING
status = Xutf8TextListToTextProperty((Display *)jlong_to_ptr(display), &cname, 1,
XStdICCTextStyle, &tp);
#else
status = XmbTextListToTextProperty((Display *)jlong_to_ptr(display), &cname, 1,
XStdICCTextStyle, &tp);
#endif
-
if (status == Success || status > 0) {
XChangeProperty((Display *)jlong_to_ptr(display), window, atom, tp.encoding, tp.format, PropModeReplace, tp.value, tp.nitems);
if (tp.value != NULL) {
XFree(tp.value);
}
@@ -1003,11 +976,10 @@
(JNIEnv *env, jclass clazz, jlong display, jint shape) {
AWT_CHECK_HAVE_LOCK_RETURN(0);
return XCreateFontCursor((Display *) jlong_to_ptr(display), (int) shape);
}
-
/*
* Class: sun_awt_X11_XlibWrapper
* Method: XCreatePixmapCursor
* Signature: (JJJJJII)J
*/
@@ -1017,11 +989,10 @@
AWT_CHECK_HAVE_LOCK_RETURN(0);
return (jlong) XCreatePixmapCursor((Display *) jlong_to_ptr(display), (Pixmap) source, (Pixmap) mask,
(XColor *) jlong_to_ptr(fore), (XColor *) jlong_to_ptr(back), x, y);
}
-
/*
* Class: sun_awt_X11_XlibWrapper
* Method: XQueryBestCursor
* Signature: (JJIIJJ)Z
*/
@@ -1036,11 +1007,10 @@
if (status == 0) return JNI_FALSE;
else return JNI_TRUE;
}
-
/*
* Class: sun_awt_X11_XlibWrapper
* Method: XFreeCursor
* Signature: (JJ)V
*/
@@ -1082,11 +1052,10 @@
AWT_CHECK_HAVE_LOCK();
XChangeWindowAttributes((Display *) jlong_to_ptr(display), (Window) window, (unsigned long) valuemask,
(XSetWindowAttributes *) jlong_to_ptr(attributes));
}
-
/*
* Class: sun_awt_X11_XlibWrapper
* Method: XSetTransientFor
* Signature: (JJJ)V
*/
@@ -1179,11 +1148,10 @@
} else {
return NULL;
}
}
-
/*
* Class: sun_awt_X11_XlibWrapper
* Method: getScreenOfWindow
* Signature: (JJ)J
*/
@@ -1251,11 +1219,10 @@
(*env)->SetByteArrayRegion(env, res, 0, length,
(const signed char*) str);
return res;
}
-
/*
* Class: sun_awt_X11_XlibWrapper
* Method: ServerVendor
* Signature: (J)Ljava/lang/String;
*/
@@ -1263,10 +1230,11 @@
(JNIEnv *env, jclass clazz, jlong display)
{
AWT_CHECK_HAVE_LOCK_RETURN(NULL);
return JNU_NewStringPlatform(env, ServerVendor((Display*)jlong_to_ptr(display)));
}
+
/*
* Class: sun_awt_X11_XlibWrapper
* Method: VendorRelease
* Signature: (J)I;
*/
@@ -1274,10 +1242,11 @@
(JNIEnv *env, jclass clazz, jlong display)
{
AWT_CHECK_HAVE_LOCK_RETURN(0);
return VendorRelease((Display*)jlong_to_ptr(display));
}
+
/*
* Class: sun_awt_X11_XlibWrapper
* Method: IsXsunKPBehavior
* Signature: (J)Z;
*/
@@ -1307,11 +1276,10 @@
return JNI_FALSE;
}
}
}
-
JNIEXPORT jboolean JNICALL Java_sun_awt_X11_XlibWrapper_IsSunKeyboard
(JNIEnv *env, jclass clazz, jlong display)
{
int xx;
AWT_CHECK_HAVE_LOCK_RETURN(JNI_FALSE);
@@ -1405,11 +1373,10 @@
(JNIEnv *env, jclass clazz, jlong handler, jlong display, jlong event_ptr)
{
return (*(XErrorHandler)jlong_to_ptr(handler))((Display*) jlong_to_ptr(display), (XErrorEvent*) jlong_to_ptr(event_ptr));
}
-
/*
* Class: sun_awt_X11_XlibWrapper
* Method: PrintXErrorEvent
* Signature: (JJ)V
*/
@@ -1429,11 +1396,10 @@
if (err->request_code > 128) {
jio_fprintf(stderr, "Minor opcode %d\n", err->minor_code);
}
}
-
/*
* Class: sun_awt_X11_XlibWrapper
* Method: XInternAtoms
* Signature: (J[Ljava/lang/String;ZJ)I
*/
@@ -1449,12 +1415,10 @@
freeNativeStringArray(names, length);
}
return status;
}
-
-
/*
* Class: sun_awt_X11_XlibWrapper
* Method: XGetWindowAttributes
* Signature: (JJJ)I
*/
@@ -1466,11 +1430,10 @@
memset((XWindowAttributes*) jlong_to_ptr(attr_ptr), 0, sizeof(XWindowAttributes));
status = XGetWindowAttributes((Display*)jlong_to_ptr(display), window, (XWindowAttributes*) jlong_to_ptr(attr_ptr));
return status;
}
-
/*
* Class: sun_awt_X11_XlibWrapper
* Method: XGetGeometry
* Signature: (JJJJJJJJJ)I
*/
@@ -1488,11 +1451,10 @@
(unsigned int *)jlong_to_ptr(border_width_return),
(unsigned int *)jlong_to_ptr(depth_return));
return status;
}
-
/*
* Class: sun_awt_X11_XlibWrapper
* Method: XGetWMNormalHints
* Signature: (JJJJ)I
*/
@@ -1544,11 +1506,10 @@
propagate==JNI_TRUE?True:False,
(long) event_mask,
(XEvent*) jlong_to_ptr(event));
}
-
/*
* Class: sun_awt_X11_XlibWrapper
* Method: XQueryTree
* Signature: (JJJJJJ)I
*/
@@ -1562,11 +1523,10 @@
(Window*) jlong_to_ptr(parent_return),
(Window**) jlong_to_ptr(children_return),
(unsigned int*) jlong_to_ptr(nchildren_return));
}
-
/*
* Class: sun_awt_X11_XlibWrapper
* Method: memcpy
* Signature: (JJJ)V
*/
@@ -1574,11 +1534,10 @@
(JNIEnv *env, jclass clazz, jlong dest_ptr, jlong src_ptr, jlong length)
{
memcpy(jlong_to_ptr(dest_ptr), jlong_to_ptr(src_ptr), length);
}
-
JNIEXPORT void JNICALL Java_sun_awt_X11_XlibWrapper_XSetMinMaxHints
(JNIEnv *env, jclass clazz, jlong display, jlong window, jint x, jint y, jint width, jint height, jlong flags) {
XSizeHints * hints;
AWT_CHECK_HAVE_LOCK();
hints = XAllocSizeHints();
@@ -1593,11 +1552,10 @@
hints->y = y;
XSetWMNormalHints((Display*) jlong_to_ptr(display), window, hints);
XFree(hints);
}
-
JNIEXPORT jlong JNICALL Java_sun_awt_X11_XlibWrapper_XGetVisualInfo
(JNIEnv *env, jclass clazz, jlong display, jlong vinfo_mask, jlong vinfo_template,
jlong nitems_return)
{
AWT_CHECK_HAVE_LOCK_RETURN(0);
@@ -1624,11 +1582,10 @@
{
AWT_CHECK_HAVE_LOCK();
XBell((Display*)jlong_to_ptr(display), percent);
}
-
/*
* Class: sun_awt_X11_XlibWrapper
* Method: XAllocColor
* Signature: (JJJ)Z
*/
@@ -1641,11 +1598,10 @@
if (status == 0) return JNI_FALSE;
else return JNI_TRUE;
}
-
/*
* Class: sun_awt_X11_XlibWrapper
* Method: XCreateBitmapFromData
* Signature: (JJJII)J
*/
@@ -1655,11 +1611,10 @@
return (jlong) XCreateBitmapFromData((Display *) jlong_to_ptr(display), (Drawable) drawable,
(char *) jlong_to_ptr(data), width, height);
}
-
/*
* Class: sun_awt_X11_XlibWrapper
* Method: XFreePixmap
* Signature: (JJ)V
*/
@@ -1770,10 +1725,11 @@
Java_sun_awt_X11_XlibWrapper_XCreatePixmap(JNIEnv *env, jclass clazz, jlong display, jlong drawable, jint width, jint height, jint depth)
{
AWT_CHECK_HAVE_LOCK_RETURN(0);
return XCreatePixmap((Display*)jlong_to_ptr(display), (Drawable)drawable, width, height, depth);
}
+
JNIEXPORT jlong JNICALL
Java_sun_awt_X11_XlibWrapper_XCreateImage
(JNIEnv *env, jclass clazz, jlong display, jlong visual_ptr,
jint depth, jint format, jint offset, jlong data, jint width,
jint height, jint bitmap_pad, jint bytes_per_line)
@@ -1781,10 +1737,11 @@
AWT_CHECK_HAVE_LOCK_RETURN(0);
return ptr_to_jlong(XCreateImage((Display*) jlong_to_ptr(display), (Visual*) jlong_to_ptr(visual_ptr),
depth, format, offset, (char*) jlong_to_ptr(data),
width, height, bitmap_pad, bytes_per_line));
}
+
JNIEXPORT jlong JNICALL
Java_sun_awt_X11_XlibWrapper_XCreateGC
(JNIEnv *env, jclass clazz, jlong display, jlong drawable,
jlong valuemask, jlong values)
{
@@ -1804,29 +1761,33 @@
// So we should NULL the data pointer before calling XDestroyImage so
// that X does not free the pointer for us.
img->data = NULL;
XDestroyImage(img);
}
+
JNIEXPORT void JNICALL
Java_sun_awt_X11_XlibWrapper_XPutImage(JNIEnv *env, jclass clazz, jlong display, jlong drawable, jlong gc, jlong image, jint src_x, jint src_y, jint dest_x, jint dest_y, jint width, jint height)
{
AWT_CHECK_HAVE_LOCK();
XPutImage((Display*)jlong_to_ptr(display), (Drawable)drawable, (GC) jlong_to_ptr(gc), (XImage*) jlong_to_ptr(image), src_x, src_y,
dest_x, dest_y, width, height);
}
+
JNIEXPORT void JNICALL
Java_sun_awt_X11_XlibWrapper_XFreeGC(JNIEnv *env, jclass clazz, jlong display, jlong gc)
{
AWT_CHECK_HAVE_LOCK();
XFreeGC((Display*) jlong_to_ptr(display), (GC) jlong_to_ptr(gc));
}
+
JNIEXPORT void JNICALL
Java_sun_awt_X11_XlibWrapper_XSetWindowBackgroundPixmap(JNIEnv *env, jclass clazz, jlong display, jlong window, jlong pixmap)
{
AWT_CHECK_HAVE_LOCK();
XSetWindowBackgroundPixmap((Display*) jlong_to_ptr(display), (Window)window, (Pixmap)pixmap);
}
+
JNIEXPORT void JNICALL
Java_sun_awt_X11_XlibWrapper_XClearWindow(JNIEnv *env, jclass clazz, jlong display, jlong window)
{
AWT_CHECK_HAVE_LOCK();
XClearWindow((Display*) jlong_to_ptr(display), (Window)window);
@@ -1920,11 +1881,10 @@
return XdbeSwapBuffers((Display*) jlong_to_ptr(display), (XdbeSwapInfo *) jlong_to_ptr(swap_info), num_windows);
}
JNIEXPORT void JNICALL Java_sun_awt_X11_XlibWrapper_XQueryKeymap
(JNIEnv *env, jclass clazz, jlong display, jlong vector)
{
-
AWT_CHECK_HAVE_LOCK();
XQueryKeymap( (Display *) jlong_to_ptr(display), (char *) jlong_to_ptr(vector));
}
// XKeycodeToKeysym is deprecated but for compatibility we keep the API.
@@ -1959,10 +1919,11 @@
// printf(" compat_lookup_mods:0x%0X\n",sr.compat_lookup_mods);
// printf(" ptr_buttons:0x%0X\n",sr.ptr_buttons);
// printf("-------------------------------------^^^^\n");
return (jint)(sr.group);
}
+
JNIEXPORT jlong JNICALL
Java_sun_awt_X11_XlibWrapper_XkbKeycodeToKeysym(JNIEnv *env, jclass clazz,
jlong display, jint keycode,
jint group, jint level) {
AWT_CHECK_HAVE_LOCK_RETURN(0);
@@ -1987,10 +1948,11 @@
Java_sun_awt_X11_XlibWrapper_XFreeModifiermap(JNIEnv *env, jclass clazz,
jlong keymap) {
AWT_CHECK_HAVE_LOCK();
XFreeModifiermap((XModifierKeymap*) jlong_to_ptr(keymap));
}
+
/*
* Class: sun_awt_X11_XlibWrapper
* Method: XRefreshKeyboardMapping
* Signature: (J)V
*/
@@ -2032,11 +1994,10 @@
(event->type == ConfigureNotify
&& event->xany.window == *(Window*) xawt_root_window)
) ? True : False;
}
-
JNIEXPORT jboolean JNICALL
Java_sun_awt_X11_XlibWrapper_XNextSecondaryLoopEvent(JNIEnv *env, jclass clazz,
jlong display, jlong ptr) {
uint32_t timeout = 1;
@@ -2060,11 +2021,10 @@
DASSERT(!exitSecondaryLoop);
AWT_CHECK_HAVE_LOCK();
exitSecondaryLoop = True;
AWT_NOTIFY_ALL();
}
-/*******************************************************************************/
JNIEXPORT jobjectArray JNICALL
Java_sun_awt_X11_XlibWrapper_XTextPropertyToStringList(JNIEnv *env,
jclass clazz,
jbyteArray bytes,
@@ -2179,11 +2139,10 @@
*/
XFreeStringList(strings);
return ret;
}
-
JNIEXPORT void JNICALL
Java_sun_awt_X11_XlibWrapper_XPutBackEvent(JNIEnv *env,
jclass clazz,
jlong display,
jlong event) {
< prev index next >