jdk/src/solaris/native/sun/xawt/XlibWrapper.c
author duke
Sat, 01 Dec 2007 00:00:00 +0000
changeset 2 90ce3da70b43
child 433 a7f6bc61993d
permissions -rw-r--r--
Initial load
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
     1
/*
90ce3da70b43 Initial load
duke
parents:
diff changeset
     2
 * Copyright 2002-2007 Sun Microsystems, Inc.  All Rights Reserved.
90ce3da70b43 Initial load
duke
parents:
diff changeset
     3
 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
90ce3da70b43 Initial load
duke
parents:
diff changeset
     4
 *
90ce3da70b43 Initial load
duke
parents:
diff changeset
     5
 * This code is free software; you can redistribute it and/or modify it
90ce3da70b43 Initial load
duke
parents:
diff changeset
     6
 * under the terms of the GNU General Public License version 2 only, as
90ce3da70b43 Initial load
duke
parents:
diff changeset
     7
 * published by the Free Software Foundation.  Sun designates this
90ce3da70b43 Initial load
duke
parents:
diff changeset
     8
 * particular file as subject to the "Classpath" exception as provided
90ce3da70b43 Initial load
duke
parents:
diff changeset
     9
 * by Sun in the LICENSE file that accompanied this code.
90ce3da70b43 Initial load
duke
parents:
diff changeset
    10
 *
90ce3da70b43 Initial load
duke
parents:
diff changeset
    11
 * This code is distributed in the hope that it will be useful, but WITHOUT
90ce3da70b43 Initial load
duke
parents:
diff changeset
    12
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
90ce3da70b43 Initial load
duke
parents:
diff changeset
    13
 * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
90ce3da70b43 Initial load
duke
parents:
diff changeset
    14
 * version 2 for more details (a copy is included in the LICENSE file that
90ce3da70b43 Initial load
duke
parents:
diff changeset
    15
 * accompanied this code).
90ce3da70b43 Initial load
duke
parents:
diff changeset
    16
 *
90ce3da70b43 Initial load
duke
parents:
diff changeset
    17
 * You should have received a copy of the GNU General Public License version
90ce3da70b43 Initial load
duke
parents:
diff changeset
    18
 * 2 along with this work; if not, write to the Free Software Foundation,
90ce3da70b43 Initial load
duke
parents:
diff changeset
    19
 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
90ce3da70b43 Initial load
duke
parents:
diff changeset
    20
 *
90ce3da70b43 Initial load
duke
parents:
diff changeset
    21
 * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
90ce3da70b43 Initial load
duke
parents:
diff changeset
    22
 * CA 95054 USA or visit www.sun.com if you need additional information or
90ce3da70b43 Initial load
duke
parents:
diff changeset
    23
 * have any questions.
90ce3da70b43 Initial load
duke
parents:
diff changeset
    24
 */
90ce3da70b43 Initial load
duke
parents:
diff changeset
    25
90ce3da70b43 Initial load
duke
parents:
diff changeset
    26
#include "sun_awt_X11_XlibWrapper.h"
90ce3da70b43 Initial load
duke
parents:
diff changeset
    27
#include <X11/Xlib.h>
90ce3da70b43 Initial load
duke
parents:
diff changeset
    28
#include <X11/keysym.h>
90ce3da70b43 Initial load
duke
parents:
diff changeset
    29
#include <X11/Xutil.h>
90ce3da70b43 Initial load
duke
parents:
diff changeset
    30
#include <X11/Xos.h>
90ce3da70b43 Initial load
duke
parents:
diff changeset
    31
#include <X11/Xatom.h>
90ce3da70b43 Initial load
duke
parents:
diff changeset
    32
#include <X11/extensions/Xdbe.h>
90ce3da70b43 Initial load
duke
parents:
diff changeset
    33
#include <X11/extensions/shape.h>
90ce3da70b43 Initial load
duke
parents:
diff changeset
    34
#include <string.h>
90ce3da70b43 Initial load
duke
parents:
diff changeset
    35
#include <stdlib.h>
90ce3da70b43 Initial load
duke
parents:
diff changeset
    36
90ce3da70b43 Initial load
duke
parents:
diff changeset
    37
#include <jni.h>
90ce3da70b43 Initial load
duke
parents:
diff changeset
    38
#include <jni_util.h>
90ce3da70b43 Initial load
duke
parents:
diff changeset
    39
#include <jlong.h>
90ce3da70b43 Initial load
duke
parents:
diff changeset
    40
90ce3da70b43 Initial load
duke
parents:
diff changeset
    41
#include <awt.h>
90ce3da70b43 Initial load
duke
parents:
diff changeset
    42
#include <jvm.h>
90ce3da70b43 Initial load
duke
parents:
diff changeset
    43
90ce3da70b43 Initial load
duke
parents:
diff changeset
    44
#include <Region.h>
90ce3da70b43 Initial load
duke
parents:
diff changeset
    45
90ce3da70b43 Initial load
duke
parents:
diff changeset
    46
#if defined(DEBUG) || defined(INTERNAL_BUILD)
90ce3da70b43 Initial load
duke
parents:
diff changeset
    47
static jmethodID lockIsHeldMID = NULL;
90ce3da70b43 Initial load
duke
parents:
diff changeset
    48
90ce3da70b43 Initial load
duke
parents:
diff changeset
    49
static void
90ce3da70b43 Initial load
duke
parents:
diff changeset
    50
CheckHaveAWTLock(JNIEnv *env)
90ce3da70b43 Initial load
duke
parents:
diff changeset
    51
{
90ce3da70b43 Initial load
duke
parents:
diff changeset
    52
    if (lockIsHeldMID == NULL) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
    53
        if (tkClass == NULL) return;
90ce3da70b43 Initial load
duke
parents:
diff changeset
    54
        lockIsHeldMID =
90ce3da70b43 Initial load
duke
parents:
diff changeset
    55
            (*env)->GetStaticMethodID(env, tkClass,
90ce3da70b43 Initial load
duke
parents:
diff changeset
    56
                                      "isAWTLockHeldByCurrentThread", "()Z");
90ce3da70b43 Initial load
duke
parents:
diff changeset
    57
    }
90ce3da70b43 Initial load
duke
parents:
diff changeset
    58
    if (!(*env)->CallStaticBooleanMethod(env, tkClass, lockIsHeldMID)) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
    59
        JNU_ThrowInternalError(env, "Current thread does not hold AWT_LOCK!");
90ce3da70b43 Initial load
duke
parents:
diff changeset
    60
    }
90ce3da70b43 Initial load
duke
parents:
diff changeset
    61
}
90ce3da70b43 Initial load
duke
parents:
diff changeset
    62
90ce3da70b43 Initial load
duke
parents:
diff changeset
    63
#define AWT_CHECK_HAVE_LOCK() CheckHaveAWTLock(env)
90ce3da70b43 Initial load
duke
parents:
diff changeset
    64
#else
90ce3da70b43 Initial load
duke
parents:
diff changeset
    65
#define AWT_CHECK_HAVE_LOCK()
90ce3da70b43 Initial load
duke
parents:
diff changeset
    66
#endif
90ce3da70b43 Initial load
duke
parents:
diff changeset
    67
90ce3da70b43 Initial load
duke
parents:
diff changeset
    68
90ce3da70b43 Initial load
duke
parents:
diff changeset
    69
/*
90ce3da70b43 Initial load
duke
parents:
diff changeset
    70
 * Class:     XlibWrapper
90ce3da70b43 Initial load
duke
parents:
diff changeset
    71
 * Method:    XOpenDisplay
90ce3da70b43 Initial load
duke
parents:
diff changeset
    72
 * Signature: (J)J
90ce3da70b43 Initial load
duke
parents:
diff changeset
    73
 */
90ce3da70b43 Initial load
duke
parents:
diff changeset
    74
90ce3da70b43 Initial load
duke
parents:
diff changeset
    75
JNIEXPORT jlong JNICALL Java_sun_awt_X11_XlibWrapper_XOpenDisplay
90ce3da70b43 Initial load
duke
parents:
diff changeset
    76
(JNIEnv *env, jclass clazz, jlong display_name)
90ce3da70b43 Initial load
duke
parents:
diff changeset
    77
{
90ce3da70b43 Initial load
duke
parents:
diff changeset
    78
    Display *dp;
90ce3da70b43 Initial load
duke
parents:
diff changeset
    79
    AWT_CHECK_HAVE_LOCK();
90ce3da70b43 Initial load
duke
parents:
diff changeset
    80
    dp  =  XOpenDisplay((char *) jlong_to_ptr(display_name));
90ce3da70b43 Initial load
duke
parents:
diff changeset
    81
90ce3da70b43 Initial load
duke
parents:
diff changeset
    82
    return ptr_to_jlong(dp);
90ce3da70b43 Initial load
duke
parents:
diff changeset
    83
}
90ce3da70b43 Initial load
duke
parents:
diff changeset
    84
90ce3da70b43 Initial load
duke
parents:
diff changeset
    85
JNIEXPORT void JNICALL
90ce3da70b43 Initial load
duke
parents:
diff changeset
    86
Java_sun_awt_X11_XlibWrapper_XCloseDisplay(JNIEnv *env, jclass clazz,
90ce3da70b43 Initial load
duke
parents:
diff changeset
    87
                       jlong display) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
    88
    AWT_CHECK_HAVE_LOCK();
90ce3da70b43 Initial load
duke
parents:
diff changeset
    89
    XCloseDisplay((Display*) jlong_to_ptr(display));
90ce3da70b43 Initial load
duke
parents:
diff changeset
    90
}
90ce3da70b43 Initial load
duke
parents:
diff changeset
    91
90ce3da70b43 Initial load
duke
parents:
diff changeset
    92
JNIEXPORT jlong JNICALL
90ce3da70b43 Initial load
duke
parents:
diff changeset
    93
Java_sun_awt_X11_XlibWrapper_XDisplayString(JNIEnv *env, jclass clazz,
90ce3da70b43 Initial load
duke
parents:
diff changeset
    94
                        jlong display) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
    95
    AWT_CHECK_HAVE_LOCK();
90ce3da70b43 Initial load
duke
parents:
diff changeset
    96
    return ptr_to_jlong(XDisplayString((Display*) jlong_to_ptr(display)));
90ce3da70b43 Initial load
duke
parents:
diff changeset
    97
}
90ce3da70b43 Initial load
duke
parents:
diff changeset
    98
90ce3da70b43 Initial load
duke
parents:
diff changeset
    99
JNIEXPORT void JNICALL
90ce3da70b43 Initial load
duke
parents:
diff changeset
   100
Java_sun_awt_X11_XlibWrapper_XSetCloseDownMode(JNIEnv *env, jclass clazz,
90ce3da70b43 Initial load
duke
parents:
diff changeset
   101
                           jlong display, jint mode) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
   102
    AWT_CHECK_HAVE_LOCK();
90ce3da70b43 Initial load
duke
parents:
diff changeset
   103
    XSetCloseDownMode((Display*) jlong_to_ptr(display), (int)mode);
90ce3da70b43 Initial load
duke
parents:
diff changeset
   104
}
90ce3da70b43 Initial load
duke
parents:
diff changeset
   105
90ce3da70b43 Initial load
duke
parents:
diff changeset
   106
/*
90ce3da70b43 Initial load
duke
parents:
diff changeset
   107
 * Class:     sun_awt_X11_XlibWrapper
90ce3da70b43 Initial load
duke
parents:
diff changeset
   108
 * Method:    DefaultScreen
90ce3da70b43 Initial load
duke
parents:
diff changeset
   109
 * Signature: (J)J
90ce3da70b43 Initial load
duke
parents:
diff changeset
   110
 */
90ce3da70b43 Initial load
duke
parents:
diff changeset
   111
JNIEXPORT jlong JNICALL Java_sun_awt_X11_XlibWrapper_DefaultScreen (JNIEnv *env, jclass clazz, jlong display) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
   112
90ce3da70b43 Initial load
duke
parents:
diff changeset
   113
    AWT_CHECK_HAVE_LOCK();
90ce3da70b43 Initial load
duke
parents:
diff changeset
   114
    return (jlong) DefaultScreen((Display *) jlong_to_ptr(display));
90ce3da70b43 Initial load
duke
parents:
diff changeset
   115
}
90ce3da70b43 Initial load
duke
parents:
diff changeset
   116
90ce3da70b43 Initial load
duke
parents:
diff changeset
   117
/*
90ce3da70b43 Initial load
duke
parents:
diff changeset
   118
 * Class:     sun_awt_X11_XlibWrapper
90ce3da70b43 Initial load
duke
parents:
diff changeset
   119
 * Method:    ScreenOfDisplay
90ce3da70b43 Initial load
duke
parents:
diff changeset
   120
 * Signature: (JJ)J
90ce3da70b43 Initial load
duke
parents:
diff changeset
   121
 */
90ce3da70b43 Initial load
duke
parents:
diff changeset
   122
JNIEXPORT jlong JNICALL Java_sun_awt_X11_XlibWrapper_ScreenOfDisplay(JNIEnv *env, jclass clazz, jlong display, jlong screen_number) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
   123
    AWT_CHECK_HAVE_LOCK();
90ce3da70b43 Initial load
duke
parents:
diff changeset
   124
    return ptr_to_jlong(ScreenOfDisplay((Display *) jlong_to_ptr(display),
90ce3da70b43 Initial load
duke
parents:
diff changeset
   125
                                        screen_number));
90ce3da70b43 Initial load
duke
parents:
diff changeset
   126
}
90ce3da70b43 Initial load
duke
parents:
diff changeset
   127
90ce3da70b43 Initial load
duke
parents:
diff changeset
   128
/*
90ce3da70b43 Initial load
duke
parents:
diff changeset
   129
 * Class:     sun_awt_X11_XlibWrapper
90ce3da70b43 Initial load
duke
parents:
diff changeset
   130
 * Method:    DoesBackingStore
90ce3da70b43 Initial load
duke
parents:
diff changeset
   131
 * Signature: (J)I
90ce3da70b43 Initial load
duke
parents:
diff changeset
   132
 */
90ce3da70b43 Initial load
duke
parents:
diff changeset
   133
JNIEXPORT jint JNICALL Java_sun_awt_X11_XlibWrapper_DoesBackingStore(JNIEnv *env, jclass clazz, jlong screen) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
   134
    AWT_CHECK_HAVE_LOCK();
90ce3da70b43 Initial load
duke
parents:
diff changeset
   135
    return (jint) DoesBackingStore((Screen*) jlong_to_ptr(screen));
90ce3da70b43 Initial load
duke
parents:
diff changeset
   136
}
90ce3da70b43 Initial load
duke
parents:
diff changeset
   137
90ce3da70b43 Initial load
duke
parents:
diff changeset
   138
/*
90ce3da70b43 Initial load
duke
parents:
diff changeset
   139
 * Class:     sun_awt_X11_XlibWrapper
90ce3da70b43 Initial load
duke
parents:
diff changeset
   140
 * Method:    DisplayWidth
90ce3da70b43 Initial load
duke
parents:
diff changeset
   141
 * Signature: (JJ)J
90ce3da70b43 Initial load
duke
parents:
diff changeset
   142
 */
90ce3da70b43 Initial load
duke
parents:
diff changeset
   143
JNIEXPORT jlong JNICALL Java_sun_awt_X11_XlibWrapper_DisplayWidth
90ce3da70b43 Initial load
duke
parents:
diff changeset
   144
(JNIEnv *env, jclass clazz, jlong display, jlong screen) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
   145
90ce3da70b43 Initial load
duke
parents:
diff changeset
   146
    AWT_CHECK_HAVE_LOCK();
90ce3da70b43 Initial load
duke
parents:
diff changeset
   147
    return (jlong) DisplayWidth((Display *) jlong_to_ptr(display),screen);
90ce3da70b43 Initial load
duke
parents:
diff changeset
   148
90ce3da70b43 Initial load
duke
parents:
diff changeset
   149
}
90ce3da70b43 Initial load
duke
parents:
diff changeset
   150
90ce3da70b43 Initial load
duke
parents:
diff changeset
   151
/*
90ce3da70b43 Initial load
duke
parents:
diff changeset
   152
 * Class:     sun_awt_X11_XlibWrapper
90ce3da70b43 Initial load
duke
parents:
diff changeset
   153
 * Method:    DisplayWidthMM
90ce3da70b43 Initial load
duke
parents:
diff changeset
   154
 * Signature: (JJ)J
90ce3da70b43 Initial load
duke
parents:
diff changeset
   155
 */
90ce3da70b43 Initial load
duke
parents:
diff changeset
   156
JNIEXPORT jlong JNICALL Java_sun_awt_X11_XlibWrapper_DisplayWidthMM
90ce3da70b43 Initial load
duke
parents:
diff changeset
   157
(JNIEnv *env, jclass clazz, jlong display, jlong screen) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
   158
    AWT_CHECK_HAVE_LOCK();
90ce3da70b43 Initial load
duke
parents:
diff changeset
   159
    return (jlong) DisplayWidthMM((Display *) jlong_to_ptr(display),screen);
90ce3da70b43 Initial load
duke
parents:
diff changeset
   160
}
90ce3da70b43 Initial load
duke
parents:
diff changeset
   161
90ce3da70b43 Initial load
duke
parents:
diff changeset
   162
/*
90ce3da70b43 Initial load
duke
parents:
diff changeset
   163
 * Class:     sun_awt_X11_XlibWrapper
90ce3da70b43 Initial load
duke
parents:
diff changeset
   164
 * Method:    DisplayHeight
90ce3da70b43 Initial load
duke
parents:
diff changeset
   165
 * Signature: (JJ)J
90ce3da70b43 Initial load
duke
parents:
diff changeset
   166
 */
90ce3da70b43 Initial load
duke
parents:
diff changeset
   167
JNIEXPORT jlong JNICALL Java_sun_awt_X11_XlibWrapper_DisplayHeight
90ce3da70b43 Initial load
duke
parents:
diff changeset
   168
(JNIEnv *env, jclass clazz, jlong display, jlong screen) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
   169
90ce3da70b43 Initial load
duke
parents:
diff changeset
   170
    AWT_CHECK_HAVE_LOCK();
90ce3da70b43 Initial load
duke
parents:
diff changeset
   171
    return (jlong) DisplayHeight((Display *) jlong_to_ptr(display),screen);
90ce3da70b43 Initial load
duke
parents:
diff changeset
   172
}
90ce3da70b43 Initial load
duke
parents:
diff changeset
   173
/*
90ce3da70b43 Initial load
duke
parents:
diff changeset
   174
 * Class:     sun_awt_X11_XlibWrapper
90ce3da70b43 Initial load
duke
parents:
diff changeset
   175
 * Method:    DisplayHeightMM
90ce3da70b43 Initial load
duke
parents:
diff changeset
   176
 * Signature: (JJ)J
90ce3da70b43 Initial load
duke
parents:
diff changeset
   177
 */
90ce3da70b43 Initial load
duke
parents:
diff changeset
   178
JNIEXPORT jlong JNICALL Java_sun_awt_X11_XlibWrapper_DisplayHeightMM
90ce3da70b43 Initial load
duke
parents:
diff changeset
   179
(JNIEnv *env, jclass clazz, jlong display, jlong screen) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
   180
    AWT_CHECK_HAVE_LOCK();
90ce3da70b43 Initial load
duke
parents:
diff changeset
   181
    return (jlong) DisplayHeightMM((Display *) jlong_to_ptr(display),screen);
90ce3da70b43 Initial load
duke
parents:
diff changeset
   182
}
90ce3da70b43 Initial load
duke
parents:
diff changeset
   183
90ce3da70b43 Initial load
duke
parents:
diff changeset
   184
/*
90ce3da70b43 Initial load
duke
parents:
diff changeset
   185
 * Class:     sun_awt_X11_XlibWrapper
90ce3da70b43 Initial load
duke
parents:
diff changeset
   186
 * Method:    RootWindow
90ce3da70b43 Initial load
duke
parents:
diff changeset
   187
 * Signature: (JJ)J
90ce3da70b43 Initial load
duke
parents:
diff changeset
   188
 */
90ce3da70b43 Initial load
duke
parents:
diff changeset
   189
JNIEXPORT jlong JNICALL Java_sun_awt_X11_XlibWrapper_RootWindow
90ce3da70b43 Initial load
duke
parents:
diff changeset
   190
(JNIEnv *env , jclass clazz, jlong display, jlong screen_number) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
   191
    AWT_CHECK_HAVE_LOCK();
90ce3da70b43 Initial load
duke
parents:
diff changeset
   192
    return (jlong) RootWindow((Display *) jlong_to_ptr(display), screen_number);
90ce3da70b43 Initial load
duke
parents:
diff changeset
   193
}
90ce3da70b43 Initial load
duke
parents:
diff changeset
   194
90ce3da70b43 Initial load
duke
parents:
diff changeset
   195
/*
90ce3da70b43 Initial load
duke
parents:
diff changeset
   196
 * Class:     sun_awt_X11_XlibWrapper
90ce3da70b43 Initial load
duke
parents:
diff changeset
   197
 * Method:    ScreenCount
90ce3da70b43 Initial load
duke
parents:
diff changeset
   198
 */
90ce3da70b43 Initial load
duke
parents:
diff changeset
   199
JNIEXPORT jint JNICALL Java_sun_awt_X11_XlibWrapper_ScreenCount
90ce3da70b43 Initial load
duke
parents:
diff changeset
   200
(JNIEnv *env , jclass clazz, jlong display) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
   201
    AWT_CHECK_HAVE_LOCK();
90ce3da70b43 Initial load
duke
parents:
diff changeset
   202
    return ScreenCount((Display *) jlong_to_ptr(display));
90ce3da70b43 Initial load
duke
parents:
diff changeset
   203
}
90ce3da70b43 Initial load
duke
parents:
diff changeset
   204
90ce3da70b43 Initial load
duke
parents:
diff changeset
   205
90ce3da70b43 Initial load
duke
parents:
diff changeset
   206
/*
90ce3da70b43 Initial load
duke
parents:
diff changeset
   207
 * Class:     XlibWrapper
90ce3da70b43 Initial load
duke
parents:
diff changeset
   208
 * Method:    XCreateWindow
90ce3da70b43 Initial load
duke
parents:
diff changeset
   209
 * Signature: (JJIIIIIIJJJJ)J
90ce3da70b43 Initial load
duke
parents:
diff changeset
   210
 */
90ce3da70b43 Initial load
duke
parents:
diff changeset
   211
JNIEXPORT jlong JNICALL Java_sun_awt_X11_XlibWrapper_XCreateWindow
90ce3da70b43 Initial load
duke
parents:
diff changeset
   212
  (JNIEnv *env, jclass clazz, jlong display, jlong window,
90ce3da70b43 Initial load
duke
parents:
diff changeset
   213
   jint x, jint y, jint w, jint h , jint border_width, jint depth,
90ce3da70b43 Initial load
duke
parents:
diff changeset
   214
   jlong wclass, jlong visual, jlong valuemask, jlong attributes)
90ce3da70b43 Initial load
duke
parents:
diff changeset
   215
{
90ce3da70b43 Initial load
duke
parents:
diff changeset
   216
    AWT_CHECK_HAVE_LOCK();
90ce3da70b43 Initial load
duke
parents:
diff changeset
   217
    return  XCreateWindow((Display *) jlong_to_ptr(display),(Window) window, x, y, w, h,
90ce3da70b43 Initial load
duke
parents:
diff changeset
   218
              border_width, depth, wclass, (Visual *) jlong_to_ptr(visual),
90ce3da70b43 Initial load
duke
parents:
diff changeset
   219
              valuemask, (XSetWindowAttributes *) jlong_to_ptr(attributes));
90ce3da70b43 Initial load
duke
parents:
diff changeset
   220
90ce3da70b43 Initial load
duke
parents:
diff changeset
   221
}
90ce3da70b43 Initial load
duke
parents:
diff changeset
   222
90ce3da70b43 Initial load
duke
parents:
diff changeset
   223
/*
90ce3da70b43 Initial load
duke
parents:
diff changeset
   224
 * Class:     XlibWrapper
90ce3da70b43 Initial load
duke
parents:
diff changeset
   225
 * Method:    XConvertCase
90ce3da70b43 Initial load
duke
parents:
diff changeset
   226
 * Signature: (JJJ)V
90ce3da70b43 Initial load
duke
parents:
diff changeset
   227
 */
90ce3da70b43 Initial load
duke
parents:
diff changeset
   228
JNIEXPORT void JNICALL Java_sun_awt_X11_XlibWrapper_XConvertCase
90ce3da70b43 Initial load
duke
parents:
diff changeset
   229
  (JNIEnv *env, jclass clazz, jlong keysym,
90ce3da70b43 Initial load
duke
parents:
diff changeset
   230
   jlong keysym_lowercase, jlong keysym_uppercase)
90ce3da70b43 Initial load
duke
parents:
diff changeset
   231
{
90ce3da70b43 Initial load
duke
parents:
diff changeset
   232
    AWT_CHECK_HAVE_LOCK();
90ce3da70b43 Initial load
duke
parents:
diff changeset
   233
    XConvertCase(keysym, (jlong_to_ptr(keysym_lowercase)),
90ce3da70b43 Initial load
duke
parents:
diff changeset
   234
                         (jlong_to_ptr(keysym_uppercase)));
90ce3da70b43 Initial load
duke
parents:
diff changeset
   235
}
90ce3da70b43 Initial load
duke
parents:
diff changeset
   236
90ce3da70b43 Initial load
duke
parents:
diff changeset
   237
90ce3da70b43 Initial load
duke
parents:
diff changeset
   238
/*
90ce3da70b43 Initial load
duke
parents:
diff changeset
   239
 * Class:     XlibWrapper
90ce3da70b43 Initial load
duke
parents:
diff changeset
   240
 * Method:    XMapWindow
90ce3da70b43 Initial load
duke
parents:
diff changeset
   241
 * Signature: (JJ)V
90ce3da70b43 Initial load
duke
parents:
diff changeset
   242
 */
90ce3da70b43 Initial load
duke
parents:
diff changeset
   243
JNIEXPORT void JNICALL Java_sun_awt_X11_XlibWrapper_XMapWindow
90ce3da70b43 Initial load
duke
parents:
diff changeset
   244
(JNIEnv *env, jclass clazz, jlong display, jlong window)
90ce3da70b43 Initial load
duke
parents:
diff changeset
   245
{
90ce3da70b43 Initial load
duke
parents:
diff changeset
   246
    AWT_CHECK_HAVE_LOCK();
90ce3da70b43 Initial load
duke
parents:
diff changeset
   247
    XMapWindow( (Display *)jlong_to_ptr(display),(Window) window);
90ce3da70b43 Initial load
duke
parents:
diff changeset
   248
90ce3da70b43 Initial load
duke
parents:
diff changeset
   249
}
90ce3da70b43 Initial load
duke
parents:
diff changeset
   250
90ce3da70b43 Initial load
duke
parents:
diff changeset
   251
/*
90ce3da70b43 Initial load
duke
parents:
diff changeset
   252
 * Class:     XlibWrapper
90ce3da70b43 Initial load
duke
parents:
diff changeset
   253
 * Method:    XMapRaised
90ce3da70b43 Initial load
duke
parents:
diff changeset
   254
 * Signature: (JJ)V
90ce3da70b43 Initial load
duke
parents:
diff changeset
   255
 */
90ce3da70b43 Initial load
duke
parents:
diff changeset
   256
JNIEXPORT void JNICALL Java_sun_awt_X11_XlibWrapper_XMapRaised
90ce3da70b43 Initial load
duke
parents:
diff changeset
   257
(JNIEnv *env, jclass clazz, jlong display, jlong window)
90ce3da70b43 Initial load
duke
parents:
diff changeset
   258
{
90ce3da70b43 Initial load
duke
parents:
diff changeset
   259
    AWT_CHECK_HAVE_LOCK();
90ce3da70b43 Initial load
duke
parents:
diff changeset
   260
    XMapRaised( (Display *)jlong_to_ptr(display),(Window) window);
90ce3da70b43 Initial load
duke
parents:
diff changeset
   261
90ce3da70b43 Initial load
duke
parents:
diff changeset
   262
}
90ce3da70b43 Initial load
duke
parents:
diff changeset
   263
90ce3da70b43 Initial load
duke
parents:
diff changeset
   264
/*
90ce3da70b43 Initial load
duke
parents:
diff changeset
   265
 * Class:     XlibWrapper
90ce3da70b43 Initial load
duke
parents:
diff changeset
   266
 * Method:    XRaiseWindow
90ce3da70b43 Initial load
duke
parents:
diff changeset
   267
 * Signature: (JJ)V
90ce3da70b43 Initial load
duke
parents:
diff changeset
   268
 */
90ce3da70b43 Initial load
duke
parents:
diff changeset
   269
JNIEXPORT void JNICALL Java_sun_awt_X11_XlibWrapper_XRaiseWindow
90ce3da70b43 Initial load
duke
parents:
diff changeset
   270
(JNIEnv *env, jclass clazz, jlong display, jlong window)
90ce3da70b43 Initial load
duke
parents:
diff changeset
   271
{
90ce3da70b43 Initial load
duke
parents:
diff changeset
   272
90ce3da70b43 Initial load
duke
parents:
diff changeset
   273
    AWT_CHECK_HAVE_LOCK();
90ce3da70b43 Initial load
duke
parents:
diff changeset
   274
    XRaiseWindow( (Display *)jlong_to_ptr(display),(Window) window);
90ce3da70b43 Initial load
duke
parents:
diff changeset
   275
90ce3da70b43 Initial load
duke
parents:
diff changeset
   276
}
90ce3da70b43 Initial load
duke
parents:
diff changeset
   277
90ce3da70b43 Initial load
duke
parents:
diff changeset
   278
/*
90ce3da70b43 Initial load
duke
parents:
diff changeset
   279
 * Class:     XlibWrapper
90ce3da70b43 Initial load
duke
parents:
diff changeset
   280
 * Method:    XLowerWindow
90ce3da70b43 Initial load
duke
parents:
diff changeset
   281
 * Signature: (JJ)V
90ce3da70b43 Initial load
duke
parents:
diff changeset
   282
 */
90ce3da70b43 Initial load
duke
parents:
diff changeset
   283
JNIEXPORT void JNICALL Java_sun_awt_X11_XlibWrapper_XLowerWindow
90ce3da70b43 Initial load
duke
parents:
diff changeset
   284
(JNIEnv *env, jclass clazz, jlong display, jlong window)
90ce3da70b43 Initial load
duke
parents:
diff changeset
   285
{
90ce3da70b43 Initial load
duke
parents:
diff changeset
   286
90ce3da70b43 Initial load
duke
parents:
diff changeset
   287
    AWT_CHECK_HAVE_LOCK();
90ce3da70b43 Initial load
duke
parents:
diff changeset
   288
    XLowerWindow( (Display *)jlong_to_ptr(display),(Window) window);
90ce3da70b43 Initial load
duke
parents:
diff changeset
   289
90ce3da70b43 Initial load
duke
parents:
diff changeset
   290
}
90ce3da70b43 Initial load
duke
parents:
diff changeset
   291
90ce3da70b43 Initial load
duke
parents:
diff changeset
   292
/*
90ce3da70b43 Initial load
duke
parents:
diff changeset
   293
 * Class:     XlibWrapper
90ce3da70b43 Initial load
duke
parents:
diff changeset
   294
 * Method:    XRestackWindows
90ce3da70b43 Initial load
duke
parents:
diff changeset
   295
 * Signature: (JJI)V
90ce3da70b43 Initial load
duke
parents:
diff changeset
   296
 */
90ce3da70b43 Initial load
duke
parents:
diff changeset
   297
JNIEXPORT void JNICALL Java_sun_awt_X11_XlibWrapper_XRestackWindows
90ce3da70b43 Initial load
duke
parents:
diff changeset
   298
(JNIEnv *env, jclass clazz, jlong display, jlong windows, jint length)
90ce3da70b43 Initial load
duke
parents:
diff changeset
   299
{
90ce3da70b43 Initial load
duke
parents:
diff changeset
   300
90ce3da70b43 Initial load
duke
parents:
diff changeset
   301
    AWT_CHECK_HAVE_LOCK();
90ce3da70b43 Initial load
duke
parents:
diff changeset
   302
    XRestackWindows( (Display *) jlong_to_ptr(display), (Window *) jlong_to_ptr(windows), length);
90ce3da70b43 Initial load
duke
parents:
diff changeset
   303
90ce3da70b43 Initial load
duke
parents:
diff changeset
   304
}
90ce3da70b43 Initial load
duke
parents:
diff changeset
   305
90ce3da70b43 Initial load
duke
parents:
diff changeset
   306
/*
90ce3da70b43 Initial load
duke
parents:
diff changeset
   307
 * Class:     XlibWrapper
90ce3da70b43 Initial load
duke
parents:
diff changeset
   308
 * Method:    XSetInputFocus
90ce3da70b43 Initial load
duke
parents:
diff changeset
   309
 * Signature: (JJ)V
90ce3da70b43 Initial load
duke
parents:
diff changeset
   310
 */
90ce3da70b43 Initial load
duke
parents:
diff changeset
   311
JNIEXPORT void JNICALL Java_sun_awt_X11_XlibWrapper_XSetInputFocus
90ce3da70b43 Initial load
duke
parents:
diff changeset
   312
(JNIEnv *env, jclass clazz, jlong display, jlong window)
90ce3da70b43 Initial load
duke
parents:
diff changeset
   313
{
90ce3da70b43 Initial load
duke
parents:
diff changeset
   314
90ce3da70b43 Initial load
duke
parents:
diff changeset
   315
    AWT_CHECK_HAVE_LOCK();
90ce3da70b43 Initial load
duke
parents:
diff changeset
   316
    XSetInputFocus( (Display *)jlong_to_ptr(display),(Window) window, RevertToPointerRoot, CurrentTime);
90ce3da70b43 Initial load
duke
parents:
diff changeset
   317
90ce3da70b43 Initial load
duke
parents:
diff changeset
   318
}
90ce3da70b43 Initial load
duke
parents:
diff changeset
   319
/*
90ce3da70b43 Initial load
duke
parents:
diff changeset
   320
 * Class:     XlibWrapper
90ce3da70b43 Initial load
duke
parents:
diff changeset
   321
 * Method:    XSetInputFocus2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   322
 * Signature: (JJJ)V
90ce3da70b43 Initial load
duke
parents:
diff changeset
   323
 */
90ce3da70b43 Initial load
duke
parents:
diff changeset
   324
JNIEXPORT void JNICALL Java_sun_awt_X11_XlibWrapper_XSetInputFocus2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   325
(JNIEnv *env, jclass clazz, jlong display, jlong window, jlong time)
90ce3da70b43 Initial load
duke
parents:
diff changeset
   326
{
90ce3da70b43 Initial load
duke
parents:
diff changeset
   327
90ce3da70b43 Initial load
duke
parents:
diff changeset
   328
    AWT_CHECK_HAVE_LOCK();
90ce3da70b43 Initial load
duke
parents:
diff changeset
   329
    XSetInputFocus( (Display *)jlong_to_ptr(display),(Window) window, RevertToPointerRoot, time);
90ce3da70b43 Initial load
duke
parents:
diff changeset
   330
90ce3da70b43 Initial load
duke
parents:
diff changeset
   331
}
90ce3da70b43 Initial load
duke
parents:
diff changeset
   332
90ce3da70b43 Initial load
duke
parents:
diff changeset
   333
/*
90ce3da70b43 Initial load
duke
parents:
diff changeset
   334
 * Class:     XlibWrapper
90ce3da70b43 Initial load
duke
parents:
diff changeset
   335
 * Method:    XGetInputFocus
90ce3da70b43 Initial load
duke
parents:
diff changeset
   336
 * Signature: (JJ)V
90ce3da70b43 Initial load
duke
parents:
diff changeset
   337
 */
90ce3da70b43 Initial load
duke
parents:
diff changeset
   338
JNIEXPORT jlong JNICALL Java_sun_awt_X11_XlibWrapper_XGetInputFocus
90ce3da70b43 Initial load
duke
parents:
diff changeset
   339
(JNIEnv *env, jclass clazz, jlong display)
90ce3da70b43 Initial load
duke
parents:
diff changeset
   340
{
90ce3da70b43 Initial load
duke
parents:
diff changeset
   341
90ce3da70b43 Initial load
duke
parents:
diff changeset
   342
    Window focusOwner;
90ce3da70b43 Initial load
duke
parents:
diff changeset
   343
    int revert_to;
90ce3da70b43 Initial load
duke
parents:
diff changeset
   344
    AWT_CHECK_HAVE_LOCK();
90ce3da70b43 Initial load
duke
parents:
diff changeset
   345
    XGetInputFocus( (Display *)jlong_to_ptr(display), &focusOwner, &revert_to);
90ce3da70b43 Initial load
duke
parents:
diff changeset
   346
    return focusOwner;
90ce3da70b43 Initial load
duke
parents:
diff changeset
   347
}
90ce3da70b43 Initial load
duke
parents:
diff changeset
   348
90ce3da70b43 Initial load
duke
parents:
diff changeset
   349
90ce3da70b43 Initial load
duke
parents:
diff changeset
   350
/*
90ce3da70b43 Initial load
duke
parents:
diff changeset
   351
 * Class:     XlibWrapper
90ce3da70b43 Initial load
duke
parents:
diff changeset
   352
 * Method:    XDestroyWindow
90ce3da70b43 Initial load
duke
parents:
diff changeset
   353
 * Signature: (JJ)V
90ce3da70b43 Initial load
duke
parents:
diff changeset
   354
 */
90ce3da70b43 Initial load
duke
parents:
diff changeset
   355
JNIEXPORT void JNICALL Java_sun_awt_X11_XlibWrapper_XDestroyWindow
90ce3da70b43 Initial load
duke
parents:
diff changeset
   356
(JNIEnv *env, jclass clazz, jlong display, jlong window)
90ce3da70b43 Initial load
duke
parents:
diff changeset
   357
{
90ce3da70b43 Initial load
duke
parents:
diff changeset
   358
    AWT_CHECK_HAVE_LOCK();
90ce3da70b43 Initial load
duke
parents:
diff changeset
   359
    XDestroyWindow( (Display *)jlong_to_ptr(display),(Window) window);
90ce3da70b43 Initial load
duke
parents:
diff changeset
   360
}
90ce3da70b43 Initial load
duke
parents:
diff changeset
   361
90ce3da70b43 Initial load
duke
parents:
diff changeset
   362
JNIEXPORT int JNICALL Java_sun_awt_X11_XlibWrapper_XGrabPointer
90ce3da70b43 Initial load
duke
parents:
diff changeset
   363
(JNIEnv *env, jclass clazz, jlong display, jlong window,
90ce3da70b43 Initial load
duke
parents:
diff changeset
   364
 jint owner_events, jint event_mask, jint pointer_mode,
90ce3da70b43 Initial load
duke
parents:
diff changeset
   365
 jint keyboard_mode, jlong confine_to, jlong cursor, jlong time)
90ce3da70b43 Initial load
duke
parents:
diff changeset
   366
{
90ce3da70b43 Initial load
duke
parents:
diff changeset
   367
    AWT_CHECK_HAVE_LOCK();
90ce3da70b43 Initial load
duke
parents:
diff changeset
   368
    return XGrabPointer( (Display *)jlong_to_ptr(display), (Window) window,
90ce3da70b43 Initial load
duke
parents:
diff changeset
   369
             (Bool) owner_events, (unsigned int) event_mask, (int) pointer_mode,
90ce3da70b43 Initial load
duke
parents:
diff changeset
   370
             (int) keyboard_mode, (Window) confine_to, (Cursor) cursor, (Time) time);
90ce3da70b43 Initial load
duke
parents:
diff changeset
   371
}
90ce3da70b43 Initial load
duke
parents:
diff changeset
   372
90ce3da70b43 Initial load
duke
parents:
diff changeset
   373
JNIEXPORT void JNICALL Java_sun_awt_X11_XlibWrapper_XUngrabPointer
90ce3da70b43 Initial load
duke
parents:
diff changeset
   374
(JNIEnv *env, jclass clazz, jlong display, jlong time)
90ce3da70b43 Initial load
duke
parents:
diff changeset
   375
{
90ce3da70b43 Initial load
duke
parents:
diff changeset
   376
    AWT_CHECK_HAVE_LOCK();
90ce3da70b43 Initial load
duke
parents:
diff changeset
   377
    XUngrabPointer( (Display *)jlong_to_ptr(display), (Time) time);
90ce3da70b43 Initial load
duke
parents:
diff changeset
   378
}
90ce3da70b43 Initial load
duke
parents:
diff changeset
   379
90ce3da70b43 Initial load
duke
parents:
diff changeset
   380
JNIEXPORT int JNICALL Java_sun_awt_X11_XlibWrapper_XGrabKeyboard
90ce3da70b43 Initial load
duke
parents:
diff changeset
   381
(JNIEnv *env, jclass clazz, jlong display, jlong window,
90ce3da70b43 Initial load
duke
parents:
diff changeset
   382
 jint owner_events, jint pointer_mode,
90ce3da70b43 Initial load
duke
parents:
diff changeset
   383
 jint keyboard_mode, jlong time)
90ce3da70b43 Initial load
duke
parents:
diff changeset
   384
{
90ce3da70b43 Initial load
duke
parents:
diff changeset
   385
    AWT_CHECK_HAVE_LOCK();
90ce3da70b43 Initial load
duke
parents:
diff changeset
   386
    return XGrabKeyboard( (Display *)jlong_to_ptr(display), (Window) window,
90ce3da70b43 Initial load
duke
parents:
diff changeset
   387
              (Bool) owner_events, (int) pointer_mode,
90ce3da70b43 Initial load
duke
parents:
diff changeset
   388
              (int) keyboard_mode, (Time) time);
90ce3da70b43 Initial load
duke
parents:
diff changeset
   389
}
90ce3da70b43 Initial load
duke
parents:
diff changeset
   390
90ce3da70b43 Initial load
duke
parents:
diff changeset
   391
JNIEXPORT void JNICALL Java_sun_awt_X11_XlibWrapper_XUngrabKeyboard
90ce3da70b43 Initial load
duke
parents:
diff changeset
   392
(JNIEnv *env, jclass clazz, jlong display, jlong time)
90ce3da70b43 Initial load
duke
parents:
diff changeset
   393
{
90ce3da70b43 Initial load
duke
parents:
diff changeset
   394
    AWT_CHECK_HAVE_LOCK();
90ce3da70b43 Initial load
duke
parents:
diff changeset
   395
    XUngrabKeyboard( (Display *)jlong_to_ptr(display), (Time) time);
90ce3da70b43 Initial load
duke
parents:
diff changeset
   396
}
90ce3da70b43 Initial load
duke
parents:
diff changeset
   397
90ce3da70b43 Initial load
duke
parents:
diff changeset
   398
JNIEXPORT void JNICALL
90ce3da70b43 Initial load
duke
parents:
diff changeset
   399
Java_sun_awt_X11_XlibWrapper_XGrabServer(JNIEnv *env, jclass clazz,
90ce3da70b43 Initial load
duke
parents:
diff changeset
   400
                                         jlong display) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
   401
     AWT_CHECK_HAVE_LOCK();
90ce3da70b43 Initial load
duke
parents:
diff changeset
   402
     XGrabServer((Display*)jlong_to_ptr(display));
90ce3da70b43 Initial load
duke
parents:
diff changeset
   403
}
90ce3da70b43 Initial load
duke
parents:
diff changeset
   404
90ce3da70b43 Initial load
duke
parents:
diff changeset
   405
JNIEXPORT void JNICALL
90ce3da70b43 Initial load
duke
parents:
diff changeset
   406
Java_sun_awt_X11_XlibWrapper_XUngrabServer(JNIEnv *env, jclass clazz,
90ce3da70b43 Initial load
duke
parents:
diff changeset
   407
                                           jlong display) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
   408
     AWT_CHECK_HAVE_LOCK();
90ce3da70b43 Initial load
duke
parents:
diff changeset
   409
     XUngrabServer((Display*)jlong_to_ptr(display));
90ce3da70b43 Initial load
duke
parents:
diff changeset
   410
     /* Workaround for bug 5039226 */
90ce3da70b43 Initial load
duke
parents:
diff changeset
   411
     XSync((Display*)jlong_to_ptr(display), False);
90ce3da70b43 Initial load
duke
parents:
diff changeset
   412
}
90ce3da70b43 Initial load
duke
parents:
diff changeset
   413
90ce3da70b43 Initial load
duke
parents:
diff changeset
   414
/*
90ce3da70b43 Initial load
duke
parents:
diff changeset
   415
 * Class:     XlibWrapper
90ce3da70b43 Initial load
duke
parents:
diff changeset
   416
 * Method:    XUnmapWindow
90ce3da70b43 Initial load
duke
parents:
diff changeset
   417
 * Signature: (JJ)V
90ce3da70b43 Initial load
duke
parents:
diff changeset
   418
 */
90ce3da70b43 Initial load
duke
parents:
diff changeset
   419
JNIEXPORT void JNICALL Java_sun_awt_X11_XlibWrapper_XUnmapWindow
90ce3da70b43 Initial load
duke
parents:
diff changeset
   420
(JNIEnv *env, jclass clazz, jlong display, jlong window)
90ce3da70b43 Initial load
duke
parents:
diff changeset
   421
{
90ce3da70b43 Initial load
duke
parents:
diff changeset
   422
90ce3da70b43 Initial load
duke
parents:
diff changeset
   423
    AWT_CHECK_HAVE_LOCK();
90ce3da70b43 Initial load
duke
parents:
diff changeset
   424
    XUnmapWindow( (Display *)jlong_to_ptr(display),(Window) window);
90ce3da70b43 Initial load
duke
parents:
diff changeset
   425
90ce3da70b43 Initial load
duke
parents:
diff changeset
   426
}
90ce3da70b43 Initial load
duke
parents:
diff changeset
   427
90ce3da70b43 Initial load
duke
parents:
diff changeset
   428
90ce3da70b43 Initial load
duke
parents:
diff changeset
   429
90ce3da70b43 Initial load
duke
parents:
diff changeset
   430
JNIEXPORT void JNICALL Java_sun_awt_X11_XlibWrapper_XSelectInput
90ce3da70b43 Initial load
duke
parents:
diff changeset
   431
(JNIEnv *env, jclass clazz, jlong display, jlong window, jlong mask)
90ce3da70b43 Initial load
duke
parents:
diff changeset
   432
{
90ce3da70b43 Initial load
duke
parents:
diff changeset
   433
    AWT_CHECK_HAVE_LOCK();
90ce3da70b43 Initial load
duke
parents:
diff changeset
   434
    XSelectInput((Display *) jlong_to_ptr(display), (Window) window, mask);
90ce3da70b43 Initial load
duke
parents:
diff changeset
   435
}
90ce3da70b43 Initial load
duke
parents:
diff changeset
   436
90ce3da70b43 Initial load
duke
parents:
diff changeset
   437
/*
90ce3da70b43 Initial load
duke
parents:
diff changeset
   438
 * Class:     sun_awt_X11_XlibWrapper
90ce3da70b43 Initial load
duke
parents:
diff changeset
   439
 * Method:    XNextEvent
90ce3da70b43 Initial load
duke
parents:
diff changeset
   440
 * Signature: (JJ)V
90ce3da70b43 Initial load
duke
parents:
diff changeset
   441
 */
90ce3da70b43 Initial load
duke
parents:
diff changeset
   442
90ce3da70b43 Initial load
duke
parents:
diff changeset
   443
90ce3da70b43 Initial load
duke
parents:
diff changeset
   444
JNIEXPORT void JNICALL Java_sun_awt_X11_XlibWrapper_XNextEvent
90ce3da70b43 Initial load
duke
parents:
diff changeset
   445
(JNIEnv *env, jclass clazz, jlong display, jlong ptr)
90ce3da70b43 Initial load
duke
parents:
diff changeset
   446
{
90ce3da70b43 Initial load
duke
parents:
diff changeset
   447
    AWT_CHECK_HAVE_LOCK();
90ce3da70b43 Initial load
duke
parents:
diff changeset
   448
    XNextEvent( (Display *) jlong_to_ptr(display), jlong_to_ptr(ptr));
90ce3da70b43 Initial load
duke
parents:
diff changeset
   449
}
90ce3da70b43 Initial load
duke
parents:
diff changeset
   450
90ce3da70b43 Initial load
duke
parents:
diff changeset
   451
/*
90ce3da70b43 Initial load
duke
parents:
diff changeset
   452
 * Class:     sun_awt_X11_XlibWrapper
90ce3da70b43 Initial load
duke
parents:
diff changeset
   453
 * Method:    XMaskEvent
90ce3da70b43 Initial load
duke
parents:
diff changeset
   454
 * Signature: (JJJ)V
90ce3da70b43 Initial load
duke
parents:
diff changeset
   455
 */
90ce3da70b43 Initial load
duke
parents:
diff changeset
   456
90ce3da70b43 Initial load
duke
parents:
diff changeset
   457
JNIEXPORT void JNICALL Java_sun_awt_X11_XlibWrapper_XMaskEvent
90ce3da70b43 Initial load
duke
parents:
diff changeset
   458
  (JNIEnv *env, jclass clazz, jlong display, jlong event_mask, jlong event_return)
90ce3da70b43 Initial load
duke
parents:
diff changeset
   459
{
90ce3da70b43 Initial load
duke
parents:
diff changeset
   460
    AWT_CHECK_HAVE_LOCK();
90ce3da70b43 Initial load
duke
parents:
diff changeset
   461
    XMaskEvent( (Display *) jlong_to_ptr(display), event_mask, (XEvent *) jlong_to_ptr(event_return));
90ce3da70b43 Initial load
duke
parents:
diff changeset
   462
}
90ce3da70b43 Initial load
duke
parents:
diff changeset
   463
90ce3da70b43 Initial load
duke
parents:
diff changeset
   464
/*
90ce3da70b43 Initial load
duke
parents:
diff changeset
   465
 * Class:     sun_awt_X11_XlibWrapper
90ce3da70b43 Initial load
duke
parents:
diff changeset
   466
 * Method:    XWindowEvent
90ce3da70b43 Initial load
duke
parents:
diff changeset
   467
 * Signature: (JJJJ)V
90ce3da70b43 Initial load
duke
parents:
diff changeset
   468
 */
90ce3da70b43 Initial load
duke
parents:
diff changeset
   469
90ce3da70b43 Initial load
duke
parents:
diff changeset
   470
JNIEXPORT void JNICALL Java_sun_awt_X11_XlibWrapper_XWindowEvent
90ce3da70b43 Initial load
duke
parents:
diff changeset
   471
  (JNIEnv *env, jclass clazz, jlong display, jlong window, jlong event_mask, jlong event_return)
90ce3da70b43 Initial load
duke
parents:
diff changeset
   472
{
90ce3da70b43 Initial load
duke
parents:
diff changeset
   473
    AWT_CHECK_HAVE_LOCK();
90ce3da70b43 Initial load
duke
parents:
diff changeset
   474
    XWindowEvent( (Display *) jlong_to_ptr(display), (Window)window, event_mask, (XEvent *) jlong_to_ptr(event_return));
90ce3da70b43 Initial load
duke
parents:
diff changeset
   475
}
90ce3da70b43 Initial load
duke
parents:
diff changeset
   476
90ce3da70b43 Initial load
duke
parents:
diff changeset
   477
/*
90ce3da70b43 Initial load
duke
parents:
diff changeset
   478
 * Class:     sun_awt_X11_XlibWrapper
90ce3da70b43 Initial load
duke
parents:
diff changeset
   479
 * Method:    XFilterEvent
90ce3da70b43 Initial load
duke
parents:
diff changeset
   480
 * Signature: (JJ)Z
90ce3da70b43 Initial load
duke
parents:
diff changeset
   481
 */
90ce3da70b43 Initial load
duke
parents:
diff changeset
   482
JNIEXPORT jboolean JNICALL Java_sun_awt_X11_XlibWrapper_XFilterEvent
90ce3da70b43 Initial load
duke
parents:
diff changeset
   483
(JNIEnv *env, jclass clazz, jlong ptr, jlong window)
90ce3da70b43 Initial load
duke
parents:
diff changeset
   484
{
90ce3da70b43 Initial load
duke
parents:
diff changeset
   485
    AWT_CHECK_HAVE_LOCK();
90ce3da70b43 Initial load
duke
parents:
diff changeset
   486
    return (jboolean) XFilterEvent((XEvent *) jlong_to_ptr(ptr), (Window) window);
90ce3da70b43 Initial load
duke
parents:
diff changeset
   487
}
90ce3da70b43 Initial load
duke
parents:
diff changeset
   488
90ce3da70b43 Initial load
duke
parents:
diff changeset
   489
/*
90ce3da70b43 Initial load
duke
parents:
diff changeset
   490
 * Class:     sun_awt_X11_XlibWrapper
90ce3da70b43 Initial load
duke
parents:
diff changeset
   491
 * Method:    XSupportsLocale
90ce3da70b43 Initial load
duke
parents:
diff changeset
   492
 * Signature: ()Z
90ce3da70b43 Initial load
duke
parents:
diff changeset
   493
 */
90ce3da70b43 Initial load
duke
parents:
diff changeset
   494
JNIEXPORT jboolean JNICALL Java_sun_awt_X11_XlibWrapper_XSupportsLocale
90ce3da70b43 Initial load
duke
parents:
diff changeset
   495
(JNIEnv *env, jclass clazz)
90ce3da70b43 Initial load
duke
parents:
diff changeset
   496
{
90ce3da70b43 Initial load
duke
parents:
diff changeset
   497
    AWT_CHECK_HAVE_LOCK();
90ce3da70b43 Initial load
duke
parents:
diff changeset
   498
    return (jboolean)XSupportsLocale();
90ce3da70b43 Initial load
duke
parents:
diff changeset
   499
}
90ce3da70b43 Initial load
duke
parents:
diff changeset
   500
90ce3da70b43 Initial load
duke
parents:
diff changeset
   501
/*
90ce3da70b43 Initial load
duke
parents:
diff changeset
   502
 * Class:     sun_awt_X11_XlibWrapper
90ce3da70b43 Initial load
duke
parents:
diff changeset
   503
 * Method:    XSetLocaleModifiers
90ce3da70b43 Initial load
duke
parents:
diff changeset
   504
 * Signature: (Ljava/lang/String;)Ljava/lang/String;
90ce3da70b43 Initial load
duke
parents:
diff changeset
   505
 */
90ce3da70b43 Initial load
duke
parents:
diff changeset
   506
JNIEXPORT jstring JNICALL Java_sun_awt_X11_XlibWrapper_XSetLocaleModifiers
90ce3da70b43 Initial load
duke
parents:
diff changeset
   507
(JNIEnv *env, jclass clazz, jstring jstr)
90ce3da70b43 Initial load
duke
parents:
diff changeset
   508
{
90ce3da70b43 Initial load
duke
parents:
diff changeset
   509
    char * modifier_list = NULL;
90ce3da70b43 Initial load
duke
parents:
diff changeset
   510
    char * ret = NULL;
90ce3da70b43 Initial load
duke
parents:
diff changeset
   511
90ce3da70b43 Initial load
duke
parents:
diff changeset
   512
    if (!JNU_IsNull(env, jstr)) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
   513
        modifier_list = (char *)JNU_GetStringPlatformChars(env, jstr, NULL);
90ce3da70b43 Initial load
duke
parents:
diff changeset
   514
    }
90ce3da70b43 Initial load
duke
parents:
diff changeset
   515
90ce3da70b43 Initial load
duke
parents:
diff changeset
   516
    AWT_CHECK_HAVE_LOCK();
90ce3da70b43 Initial load
duke
parents:
diff changeset
   517
    if (modifier_list) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
   518
        ret = XSetLocaleModifiers(modifier_list);
90ce3da70b43 Initial load
duke
parents:
diff changeset
   519
        JNU_ReleaseStringPlatformChars(env, jstr, (const char *) modifier_list);
90ce3da70b43 Initial load
duke
parents:
diff changeset
   520
    } else {
90ce3da70b43 Initial load
duke
parents:
diff changeset
   521
        ret = XSetLocaleModifiers("");
90ce3da70b43 Initial load
duke
parents:
diff changeset
   522
    }
90ce3da70b43 Initial load
duke
parents:
diff changeset
   523
90ce3da70b43 Initial load
duke
parents:
diff changeset
   524
    return (ret != NULL ? JNU_NewStringPlatform(env, ret): NULL);
90ce3da70b43 Initial load
duke
parents:
diff changeset
   525
}
90ce3da70b43 Initial load
duke
parents:
diff changeset
   526
90ce3da70b43 Initial load
duke
parents:
diff changeset
   527
90ce3da70b43 Initial load
duke
parents:
diff changeset
   528
/*
90ce3da70b43 Initial load
duke
parents:
diff changeset
   529
 * Class:     sun_awt_X11_wrappers_XlibWrapper
90ce3da70b43 Initial load
duke
parents:
diff changeset
   530
 * Method:    XPeekEvent
90ce3da70b43 Initial load
duke
parents:
diff changeset
   531
 * Signature: (JJ)V
90ce3da70b43 Initial load
duke
parents:
diff changeset
   532
 */
90ce3da70b43 Initial load
duke
parents:
diff changeset
   533
90ce3da70b43 Initial load
duke
parents:
diff changeset
   534
90ce3da70b43 Initial load
duke
parents:
diff changeset
   535
JNIEXPORT void JNICALL Java_sun_awt_X11_XlibWrapper_XPeekEvent
90ce3da70b43 Initial load
duke
parents:
diff changeset
   536
(JNIEnv *env, jclass clazz, jlong display, jlong ptr)
90ce3da70b43 Initial load
duke
parents:
diff changeset
   537
{
90ce3da70b43 Initial load
duke
parents:
diff changeset
   538
    AWT_CHECK_HAVE_LOCK();
90ce3da70b43 Initial load
duke
parents:
diff changeset
   539
    XPeekEvent((Display *) jlong_to_ptr(display),jlong_to_ptr(ptr));
90ce3da70b43 Initial load
duke
parents:
diff changeset
   540
}
90ce3da70b43 Initial load
duke
parents:
diff changeset
   541
90ce3da70b43 Initial load
duke
parents:
diff changeset
   542
90ce3da70b43 Initial load
duke
parents:
diff changeset
   543
/*
90ce3da70b43 Initial load
duke
parents:
diff changeset
   544
 * Class:     sun_awt_X11_XlibWrapper
90ce3da70b43 Initial load
duke
parents:
diff changeset
   545
 * Method:    XMoveResizeWindow
90ce3da70b43 Initial load
duke
parents:
diff changeset
   546
 * Signature: (JJIIII)V
90ce3da70b43 Initial load
duke
parents:
diff changeset
   547
 */
90ce3da70b43 Initial load
duke
parents:
diff changeset
   548
90ce3da70b43 Initial load
duke
parents:
diff changeset
   549
JNIEXPORT void JNICALL  Java_sun_awt_X11_XlibWrapper_XMoveResizeWindow
90ce3da70b43 Initial load
duke
parents:
diff changeset
   550
(JNIEnv *env, jclass clazz, jlong display, jlong window, jint x , jint y , jint width, jint height) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
   551
90ce3da70b43 Initial load
duke
parents:
diff changeset
   552
    AWT_CHECK_HAVE_LOCK();
90ce3da70b43 Initial load
duke
parents:
diff changeset
   553
    XMoveResizeWindow( (Display *) jlong_to_ptr(display), (Window) window, x, y, width, height);
90ce3da70b43 Initial load
duke
parents:
diff changeset
   554
90ce3da70b43 Initial load
duke
parents:
diff changeset
   555
}
90ce3da70b43 Initial load
duke
parents:
diff changeset
   556
90ce3da70b43 Initial load
duke
parents:
diff changeset
   557
/*
90ce3da70b43 Initial load
duke
parents:
diff changeset
   558
 * Class:     sun_awt_X11_XlibWrapper
90ce3da70b43 Initial load
duke
parents:
diff changeset
   559
 * Method:    XResizeWindow
90ce3da70b43 Initial load
duke
parents:
diff changeset
   560
 * Signature: (JJII)V
90ce3da70b43 Initial load
duke
parents:
diff changeset
   561
 */
90ce3da70b43 Initial load
duke
parents:
diff changeset
   562
90ce3da70b43 Initial load
duke
parents:
diff changeset
   563
JNIEXPORT void JNICALL  Java_sun_awt_X11_XlibWrapper_XResizeWindow
90ce3da70b43 Initial load
duke
parents:
diff changeset
   564
(JNIEnv *env, jclass clazz, jlong display, jlong window, jint width, jint height)
90ce3da70b43 Initial load
duke
parents:
diff changeset
   565
{
90ce3da70b43 Initial load
duke
parents:
diff changeset
   566
    AWT_CHECK_HAVE_LOCK();
90ce3da70b43 Initial load
duke
parents:
diff changeset
   567
    XResizeWindow( (Display *) jlong_to_ptr(display),(Window) window,width,height);
90ce3da70b43 Initial load
duke
parents:
diff changeset
   568
}
90ce3da70b43 Initial load
duke
parents:
diff changeset
   569
90ce3da70b43 Initial load
duke
parents:
diff changeset
   570
/*
90ce3da70b43 Initial load
duke
parents:
diff changeset
   571
 * Class:     sun_awt_X11_XlibWrapper
90ce3da70b43 Initial load
duke
parents:
diff changeset
   572
 * Method:    XMoveWindow
90ce3da70b43 Initial load
duke
parents:
diff changeset
   573
 * Signature: (JJII)V
90ce3da70b43 Initial load
duke
parents:
diff changeset
   574
 */
90ce3da70b43 Initial load
duke
parents:
diff changeset
   575
90ce3da70b43 Initial load
duke
parents:
diff changeset
   576
JNIEXPORT void JNICALL  Java_sun_awt_X11_XlibWrapper_XMoveWindow
90ce3da70b43 Initial load
duke
parents:
diff changeset
   577
(JNIEnv *env, jclass clazz, jlong display, jlong window, jint width, jint height)
90ce3da70b43 Initial load
duke
parents:
diff changeset
   578
{
90ce3da70b43 Initial load
duke
parents:
diff changeset
   579
    AWT_CHECK_HAVE_LOCK();
90ce3da70b43 Initial load
duke
parents:
diff changeset
   580
    XMoveWindow( (Display *) jlong_to_ptr(display),(Window) window,width,height);
90ce3da70b43 Initial load
duke
parents:
diff changeset
   581
}
90ce3da70b43 Initial load
duke
parents:
diff changeset
   582
90ce3da70b43 Initial load
duke
parents:
diff changeset
   583
90ce3da70b43 Initial load
duke
parents:
diff changeset
   584
/*
90ce3da70b43 Initial load
duke
parents:
diff changeset
   585
 * Class:     sun_awt_X11_XlibWrapper
90ce3da70b43 Initial load
duke
parents:
diff changeset
   586
 * Method:    XSetWindowBackground
90ce3da70b43 Initial load
duke
parents:
diff changeset
   587
 * Signature: (JJJ)V
90ce3da70b43 Initial load
duke
parents:
diff changeset
   588
 */
90ce3da70b43 Initial load
duke
parents:
diff changeset
   589
90ce3da70b43 Initial load
duke
parents:
diff changeset
   590
JNIEXPORT void JNICALL  Java_sun_awt_X11_XlibWrapper_XSetWindowBackground
90ce3da70b43 Initial load
duke
parents:
diff changeset
   591
(JNIEnv *env, jclass clazz, jlong display, jlong window, jlong background_pixel) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
   592
90ce3da70b43 Initial load
duke
parents:
diff changeset
   593
    AWT_CHECK_HAVE_LOCK();
90ce3da70b43 Initial load
duke
parents:
diff changeset
   594
    XSetWindowBackground((Display *) jlong_to_ptr(display),window,background_pixel);
90ce3da70b43 Initial load
duke
parents:
diff changeset
   595
90ce3da70b43 Initial load
duke
parents:
diff changeset
   596
}
90ce3da70b43 Initial load
duke
parents:
diff changeset
   597
90ce3da70b43 Initial load
duke
parents:
diff changeset
   598
90ce3da70b43 Initial load
duke
parents:
diff changeset
   599
/*
90ce3da70b43 Initial load
duke
parents:
diff changeset
   600
 * Class:     sun_awt_X11_XlibWrapper
90ce3da70b43 Initial load
duke
parents:
diff changeset
   601
 * Method:    XFlush
90ce3da70b43 Initial load
duke
parents:
diff changeset
   602
 * Signature: (J)V
90ce3da70b43 Initial load
duke
parents:
diff changeset
   603
 */
90ce3da70b43 Initial load
duke
parents:
diff changeset
   604
JNIEXPORT void JNICALL Java_sun_awt_X11_XlibWrapper_XFlush
90ce3da70b43 Initial load
duke
parents:
diff changeset
   605
(JNIEnv *env, jclass clazz, jlong display) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
   606
90ce3da70b43 Initial load
duke
parents:
diff changeset
   607
    AWT_CHECK_HAVE_LOCK();
90ce3da70b43 Initial load
duke
parents:
diff changeset
   608
    XFlush((Display *)jlong_to_ptr(display));
90ce3da70b43 Initial load
duke
parents:
diff changeset
   609
}
90ce3da70b43 Initial load
duke
parents:
diff changeset
   610
90ce3da70b43 Initial load
duke
parents:
diff changeset
   611
/*
90ce3da70b43 Initial load
duke
parents:
diff changeset
   612
 * Class:     sun_awt_X11_XlibWrapper
90ce3da70b43 Initial load
duke
parents:
diff changeset
   613
 * Method:    XSync
90ce3da70b43 Initial load
duke
parents:
diff changeset
   614
 * Signature: (JI)V
90ce3da70b43 Initial load
duke
parents:
diff changeset
   615
 */
90ce3da70b43 Initial load
duke
parents:
diff changeset
   616
JNIEXPORT void JNICALL Java_sun_awt_X11_XlibWrapper_XSync
90ce3da70b43 Initial load
duke
parents:
diff changeset
   617
(JNIEnv *env, jclass clazz, jlong display, jint discard) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
   618
90ce3da70b43 Initial load
duke
parents:
diff changeset
   619
    AWT_CHECK_HAVE_LOCK();
90ce3da70b43 Initial load
duke
parents:
diff changeset
   620
    XSync((Display *) jlong_to_ptr(display), discard);
90ce3da70b43 Initial load
duke
parents:
diff changeset
   621
90ce3da70b43 Initial load
duke
parents:
diff changeset
   622
}
90ce3da70b43 Initial load
duke
parents:
diff changeset
   623
90ce3da70b43 Initial load
duke
parents:
diff changeset
   624
JNIEXPORT int JNICALL Java_sun_awt_X11_XlibWrapper_XTranslateCoordinates
90ce3da70b43 Initial load
duke
parents:
diff changeset
   625
(JNIEnv *env, jclass clazz, jlong display, jlong src_w, jlong dest_w,
90ce3da70b43 Initial load
duke
parents:
diff changeset
   626
 jlong src_x, jlong src_y, jlong dest_x_return, jlong dest_y_return,
90ce3da70b43 Initial load
duke
parents:
diff changeset
   627
 jlong child_return)
90ce3da70b43 Initial load
duke
parents:
diff changeset
   628
{
90ce3da70b43 Initial load
duke
parents:
diff changeset
   629
    AWT_CHECK_HAVE_LOCK();
90ce3da70b43 Initial load
duke
parents:
diff changeset
   630
    return XTranslateCoordinates( (Display *) jlong_to_ptr(display), src_w, dest_w,
90ce3da70b43 Initial load
duke
parents:
diff changeset
   631
                  src_x, src_y,
90ce3da70b43 Initial load
duke
parents:
diff changeset
   632
                  (int *) jlong_to_ptr(dest_x_return),
90ce3da70b43 Initial load
duke
parents:
diff changeset
   633
                  (int *) jlong_to_ptr(dest_y_return),
90ce3da70b43 Initial load
duke
parents:
diff changeset
   634
                  (Window *) jlong_to_ptr(child_return));
90ce3da70b43 Initial load
duke
parents:
diff changeset
   635
}
90ce3da70b43 Initial load
duke
parents:
diff changeset
   636
90ce3da70b43 Initial load
duke
parents:
diff changeset
   637
JNIEXPORT int JNICALL Java_sun_awt_X11_XlibWrapper_XEventsQueued
90ce3da70b43 Initial load
duke
parents:
diff changeset
   638
(JNIEnv *env, jclass clazz, jlong display, jint mode) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
   639
90ce3da70b43 Initial load
duke
parents:
diff changeset
   640
    AWT_CHECK_HAVE_LOCK();
90ce3da70b43 Initial load
duke
parents:
diff changeset
   641
    return XEventsQueued((Display *) jlong_to_ptr(display), mode);
90ce3da70b43 Initial load
duke
parents:
diff changeset
   642
90ce3da70b43 Initial load
duke
parents:
diff changeset
   643
}
90ce3da70b43 Initial load
duke
parents:
diff changeset
   644
90ce3da70b43 Initial load
duke
parents:
diff changeset
   645
/*
90ce3da70b43 Initial load
duke
parents:
diff changeset
   646
 * Class:     sun_awt_X11_XlibWrapper
90ce3da70b43 Initial load
duke
parents:
diff changeset
   647
 * Method:    SetProperty
90ce3da70b43 Initial load
duke
parents:
diff changeset
   648
 * Signature: (JJJLjava/lang/String;)V
90ce3da70b43 Initial load
duke
parents:
diff changeset
   649
 */
90ce3da70b43 Initial load
duke
parents:
diff changeset
   650
JNIEXPORT void JNICALL Java_sun_awt_X11_XlibWrapper_SetProperty
90ce3da70b43 Initial load
duke
parents:
diff changeset
   651
(JNIEnv *env, jclass clazz, jlong display, jlong window, jlong atom, jstring jstr) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
   652
    char *cname;
90ce3da70b43 Initial load
duke
parents:
diff changeset
   653
    XTextProperty tp;
90ce3da70b43 Initial load
duke
parents:
diff changeset
   654
    int32_t status;
90ce3da70b43 Initial load
duke
parents:
diff changeset
   655
90ce3da70b43 Initial load
duke
parents:
diff changeset
   656
    /*
90ce3da70b43 Initial load
duke
parents:
diff changeset
   657
       In case there are direct support of UTF-8 declared, use UTF-8 strings.
90ce3da70b43 Initial load
duke
parents:
diff changeset
   658
    */
90ce3da70b43 Initial load
duke
parents:
diff changeset
   659
    if (!JNU_IsNull(env, jstr)) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
   660
#ifdef X_HAVE_UTF8_STRING
90ce3da70b43 Initial load
duke
parents:
diff changeset
   661
        cname = (char *) (*env)->GetStringUTFChars(env, jstr, JNI_FALSE);
90ce3da70b43 Initial load
duke
parents:
diff changeset
   662
#else
90ce3da70b43 Initial load
duke
parents:
diff changeset
   663
        cname = (char *) JNU_GetStringPlatformChars(env, jstr, NULL);
90ce3da70b43 Initial load
duke
parents:
diff changeset
   664
#endif
90ce3da70b43 Initial load
duke
parents:
diff changeset
   665
    } else {
90ce3da70b43 Initial load
duke
parents:
diff changeset
   666
        cname = "";
90ce3da70b43 Initial load
duke
parents:
diff changeset
   667
    }
90ce3da70b43 Initial load
duke
parents:
diff changeset
   668
90ce3da70b43 Initial load
duke
parents:
diff changeset
   669
90ce3da70b43 Initial load
duke
parents:
diff changeset
   670
    AWT_CHECK_HAVE_LOCK();
90ce3da70b43 Initial load
duke
parents:
diff changeset
   671
90ce3da70b43 Initial load
duke
parents:
diff changeset
   672
#ifdef X_HAVE_UTF8_STRING
90ce3da70b43 Initial load
duke
parents:
diff changeset
   673
    status = Xutf8TextListToTextProperty((Display *)jlong_to_ptr(display), &cname, 1,
90ce3da70b43 Initial load
duke
parents:
diff changeset
   674
                                       XStdICCTextStyle, &tp);
90ce3da70b43 Initial load
duke
parents:
diff changeset
   675
#else
90ce3da70b43 Initial load
duke
parents:
diff changeset
   676
    status = XmbTextListToTextProperty((Display *)jlong_to_ptr(display), &cname, 1,
90ce3da70b43 Initial load
duke
parents:
diff changeset
   677
                                       XStdICCTextStyle, &tp);
90ce3da70b43 Initial load
duke
parents:
diff changeset
   678
#endif
90ce3da70b43 Initial load
duke
parents:
diff changeset
   679
90ce3da70b43 Initial load
duke
parents:
diff changeset
   680
90ce3da70b43 Initial load
duke
parents:
diff changeset
   681
    if (status == Success || status > 0) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
   682
        XChangeProperty((Display *)jlong_to_ptr(display), window, atom, tp.encoding, tp.format, PropModeReplace, tp.value, tp.nitems);
90ce3da70b43 Initial load
duke
parents:
diff changeset
   683
        if (tp.value != NULL) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
   684
            XFree(tp.value);
90ce3da70b43 Initial load
duke
parents:
diff changeset
   685
        }
90ce3da70b43 Initial load
duke
parents:
diff changeset
   686
    }
90ce3da70b43 Initial load
duke
parents:
diff changeset
   687
90ce3da70b43 Initial load
duke
parents:
diff changeset
   688
    if (!JNU_IsNull(env, jstr)) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
   689
#ifdef X_HAVE_UTF8_STRING
90ce3da70b43 Initial load
duke
parents:
diff changeset
   690
        (*env)->ReleaseStringUTFChars(env, jstr, (const char *) cname);
90ce3da70b43 Initial load
duke
parents:
diff changeset
   691
#else
90ce3da70b43 Initial load
duke
parents:
diff changeset
   692
        JNU_ReleaseStringPlatformChars(env, jstr, (const char *) cname);
90ce3da70b43 Initial load
duke
parents:
diff changeset
   693
#endif
90ce3da70b43 Initial load
duke
parents:
diff changeset
   694
    }
90ce3da70b43 Initial load
duke
parents:
diff changeset
   695
}
90ce3da70b43 Initial load
duke
parents:
diff changeset
   696
90ce3da70b43 Initial load
duke
parents:
diff changeset
   697
/*
90ce3da70b43 Initial load
duke
parents:
diff changeset
   698
 * Class:     sun_awt_X11_XlibWrapper
90ce3da70b43 Initial load
duke
parents:
diff changeset
   699
 * Method:    XChangeProperty
90ce3da70b43 Initial load
duke
parents:
diff changeset
   700
 * Signature: (JJJJJJJJJJJ)V
90ce3da70b43 Initial load
duke
parents:
diff changeset
   701
 */
90ce3da70b43 Initial load
duke
parents:
diff changeset
   702
JNIEXPORT void JNICALL Java_sun_awt_X11_XlibWrapper_XChangePropertyImpl(
90ce3da70b43 Initial load
duke
parents:
diff changeset
   703
    JNIEnv *env, jclass clazz, jlong display, jlong window, jlong property,
90ce3da70b43 Initial load
duke
parents:
diff changeset
   704
    jlong type, jint format, jint mode, jlong data, jint nelements)
90ce3da70b43 Initial load
duke
parents:
diff changeset
   705
{
90ce3da70b43 Initial load
duke
parents:
diff changeset
   706
    AWT_CHECK_HAVE_LOCK();
90ce3da70b43 Initial load
duke
parents:
diff changeset
   707
    XChangeProperty((Display*) jlong_to_ptr(display), (Window) window, (Atom) property,
90ce3da70b43 Initial load
duke
parents:
diff changeset
   708
            (Atom) type, format, mode, (unsigned char*) jlong_to_ptr(data),
90ce3da70b43 Initial load
duke
parents:
diff changeset
   709
            nelements);
90ce3da70b43 Initial load
duke
parents:
diff changeset
   710
}
90ce3da70b43 Initial load
duke
parents:
diff changeset
   711
/*
90ce3da70b43 Initial load
duke
parents:
diff changeset
   712
 * Class:     sun_awt_X11_XlibWrapper
90ce3da70b43 Initial load
duke
parents:
diff changeset
   713
 * Method:    XChangePropertyS
90ce3da70b43 Initial load
duke
parents:
diff changeset
   714
 * Signature: (JJJJJJJJJLjava/lang/String;)V
90ce3da70b43 Initial load
duke
parents:
diff changeset
   715
 */
90ce3da70b43 Initial load
duke
parents:
diff changeset
   716
JNIEXPORT void JNICALL Java_sun_awt_X11_XlibWrapper_XChangePropertyS(
90ce3da70b43 Initial load
duke
parents:
diff changeset
   717
    JNIEnv *env, jclass clazz, jlong display, jlong window, jlong property,
90ce3da70b43 Initial load
duke
parents:
diff changeset
   718
    jlong type, jint format, jint mode, jstring value)
90ce3da70b43 Initial load
duke
parents:
diff changeset
   719
{
90ce3da70b43 Initial load
duke
parents:
diff changeset
   720
    jboolean iscopy;
90ce3da70b43 Initial load
duke
parents:
diff changeset
   721
    const char * chars = JNU_GetStringPlatformChars(env, value, &iscopy);
90ce3da70b43 Initial load
duke
parents:
diff changeset
   722
    AWT_CHECK_HAVE_LOCK();
90ce3da70b43 Initial load
duke
parents:
diff changeset
   723
    XChangeProperty((Display*)jlong_to_ptr(display), window, (Atom)property,
90ce3da70b43 Initial load
duke
parents:
diff changeset
   724
                    (Atom)type, format, mode, (unsigned char*)chars, strlen(chars));
90ce3da70b43 Initial load
duke
parents:
diff changeset
   725
    if (iscopy) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
   726
        JNU_ReleaseStringPlatformChars(env, value, chars);
90ce3da70b43 Initial load
duke
parents:
diff changeset
   727
    }
90ce3da70b43 Initial load
duke
parents:
diff changeset
   728
}
90ce3da70b43 Initial load
duke
parents:
diff changeset
   729
90ce3da70b43 Initial load
duke
parents:
diff changeset
   730
/*
90ce3da70b43 Initial load
duke
parents:
diff changeset
   731
 * Class:     sun_awt_X11_XlibWrapper
90ce3da70b43 Initial load
duke
parents:
diff changeset
   732
 * Method:    XGetWindowProperty
90ce3da70b43 Initial load
duke
parents:
diff changeset
   733
 * Signature: (JJJJJJJJJJJ)J;
90ce3da70b43 Initial load
duke
parents:
diff changeset
   734
 */
90ce3da70b43 Initial load
duke
parents:
diff changeset
   735
JNIEXPORT jint JNICALL Java_sun_awt_X11_XlibWrapper_XGetWindowProperty
90ce3da70b43 Initial load
duke
parents:
diff changeset
   736
(JNIEnv *env, jclass clazz, jlong display, jlong window, jlong property, jlong long_offset,
90ce3da70b43 Initial load
duke
parents:
diff changeset
   737
 jlong long_length, jlong delete, jlong req_type, jlong actual_type,
90ce3da70b43 Initial load
duke
parents:
diff changeset
   738
 jlong actual_format, jlong nitems_ptr, jlong bytes_after, jlong data_ptr)
90ce3da70b43 Initial load
duke
parents:
diff changeset
   739
{
90ce3da70b43 Initial load
duke
parents:
diff changeset
   740
    AWT_CHECK_HAVE_LOCK();
90ce3da70b43 Initial load
duke
parents:
diff changeset
   741
    return XGetWindowProperty((Display*) jlong_to_ptr(display), window, property, long_offset, long_length,
90ce3da70b43 Initial load
duke
parents:
diff changeset
   742
                  delete, (Atom) req_type, (Atom*) jlong_to_ptr(actual_type),
90ce3da70b43 Initial load
duke
parents:
diff changeset
   743
                  (int *) jlong_to_ptr(actual_format), (unsigned long *) jlong_to_ptr(nitems_ptr),
90ce3da70b43 Initial load
duke
parents:
diff changeset
   744
                  (unsigned long*) jlong_to_ptr(bytes_after), (unsigned char**) jlong_to_ptr(data_ptr));
90ce3da70b43 Initial load
duke
parents:
diff changeset
   745
}
90ce3da70b43 Initial load
duke
parents:
diff changeset
   746
90ce3da70b43 Initial load
duke
parents:
diff changeset
   747
/*
90ce3da70b43 Initial load
duke
parents:
diff changeset
   748
 * Class:     sun_awt_X11_XlibWrapper
90ce3da70b43 Initial load
duke
parents:
diff changeset
   749
 * Method:    GetProperty
90ce3da70b43 Initial load
duke
parents:
diff changeset
   750
 * Signature: (JJJ)Ljava/lang/String;
90ce3da70b43 Initial load
duke
parents:
diff changeset
   751
 */
90ce3da70b43 Initial load
duke
parents:
diff changeset
   752
JNIEXPORT jstring JNICALL Java_sun_awt_X11_XlibWrapper_GetProperty
90ce3da70b43 Initial load
duke
parents:
diff changeset
   753
(JNIEnv *env, jclass clazz, jlong display, jlong window, jlong atom)
90ce3da70b43 Initial load
duke
parents:
diff changeset
   754
{
90ce3da70b43 Initial load
duke
parents:
diff changeset
   755
    /* Request status */
90ce3da70b43 Initial load
duke
parents:
diff changeset
   756
    int status;
90ce3da70b43 Initial load
duke
parents:
diff changeset
   757
90ce3da70b43 Initial load
duke
parents:
diff changeset
   758
    /* Returns of XGetWindowProperty */
90ce3da70b43 Initial load
duke
parents:
diff changeset
   759
    Atom actual_type;
90ce3da70b43 Initial load
duke
parents:
diff changeset
   760
    int actual_format;
90ce3da70b43 Initial load
duke
parents:
diff changeset
   761
    unsigned long nitems;
90ce3da70b43 Initial load
duke
parents:
diff changeset
   762
    unsigned long bytes_after;
90ce3da70b43 Initial load
duke
parents:
diff changeset
   763
    unsigned char * string;
90ce3da70b43 Initial load
duke
parents:
diff changeset
   764
    jstring res;
90ce3da70b43 Initial load
duke
parents:
diff changeset
   765
    AWT_CHECK_HAVE_LOCK();
90ce3da70b43 Initial load
duke
parents:
diff changeset
   766
    status = XGetWindowProperty((Display*)jlong_to_ptr(display), window,
90ce3da70b43 Initial load
duke
parents:
diff changeset
   767
                                atom, 0, 0xFFFF, False, XA_STRING,
90ce3da70b43 Initial load
duke
parents:
diff changeset
   768
                                &actual_type, &actual_format, &nitems, &bytes_after,
90ce3da70b43 Initial load
duke
parents:
diff changeset
   769
                                &string);
90ce3da70b43 Initial load
duke
parents:
diff changeset
   770
    if (status != Success || string == NULL) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
   771
    return NULL;
90ce3da70b43 Initial load
duke
parents:
diff changeset
   772
    }
90ce3da70b43 Initial load
duke
parents:
diff changeset
   773
90ce3da70b43 Initial load
duke
parents:
diff changeset
   774
    if (actual_type != XA_STRING || actual_format != 8) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
   775
    XFree(string);
90ce3da70b43 Initial load
duke
parents:
diff changeset
   776
    return NULL;
90ce3da70b43 Initial load
duke
parents:
diff changeset
   777
    }
90ce3da70b43 Initial load
duke
parents:
diff changeset
   778
90ce3da70b43 Initial load
duke
parents:
diff changeset
   779
    // Memory leak???
90ce3da70b43 Initial load
duke
parents:
diff changeset
   780
    return JNU_NewStringPlatform(env,(char*) string);
90ce3da70b43 Initial load
duke
parents:
diff changeset
   781
}
90ce3da70b43 Initial load
duke
parents:
diff changeset
   782
90ce3da70b43 Initial load
duke
parents:
diff changeset
   783
/*
90ce3da70b43 Initial load
duke
parents:
diff changeset
   784
 * Class:     sun_awt_X11_XlibWrapper
90ce3da70b43 Initial load
duke
parents:
diff changeset
   785
 * Method:    InternAtom
90ce3da70b43 Initial load
duke
parents:
diff changeset
   786
 * Signature: (JLjava/lang/String;I)J
90ce3da70b43 Initial load
duke
parents:
diff changeset
   787
 */
90ce3da70b43 Initial load
duke
parents:
diff changeset
   788
JNIEXPORT jlong JNICALL Java_sun_awt_X11_XlibWrapper_InternAtom
90ce3da70b43 Initial load
duke
parents:
diff changeset
   789
(JNIEnv *env, jclass clazz, jlong display, jstring jstr, jint ife) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
   790
90ce3da70b43 Initial load
duke
parents:
diff changeset
   791
    char *cname;
90ce3da70b43 Initial load
duke
parents:
diff changeset
   792
    unsigned long atom;
90ce3da70b43 Initial load
duke
parents:
diff changeset
   793
90ce3da70b43 Initial load
duke
parents:
diff changeset
   794
    if (!JNU_IsNull(env, jstr)) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
   795
        cname = (char *)JNU_GetStringPlatformChars(env, jstr, NULL);
90ce3da70b43 Initial load
duke
parents:
diff changeset
   796
    } else {
90ce3da70b43 Initial load
duke
parents:
diff changeset
   797
        cname = "";
90ce3da70b43 Initial load
duke
parents:
diff changeset
   798
    }
90ce3da70b43 Initial load
duke
parents:
diff changeset
   799
90ce3da70b43 Initial load
duke
parents:
diff changeset
   800
    AWT_CHECK_HAVE_LOCK();
90ce3da70b43 Initial load
duke
parents:
diff changeset
   801
    atom = XInternAtom((Display *) jlong_to_ptr(display), cname, ife);
90ce3da70b43 Initial load
duke
parents:
diff changeset
   802
90ce3da70b43 Initial load
duke
parents:
diff changeset
   803
    if (!JNU_IsNull(env, jstr)) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
   804
        JNU_ReleaseStringPlatformChars(env, jstr, (const char *) cname);
90ce3da70b43 Initial load
duke
parents:
diff changeset
   805
    }
90ce3da70b43 Initial load
duke
parents:
diff changeset
   806
90ce3da70b43 Initial load
duke
parents:
diff changeset
   807
    return (jlong) atom;
90ce3da70b43 Initial load
duke
parents:
diff changeset
   808
90ce3da70b43 Initial load
duke
parents:
diff changeset
   809
}
90ce3da70b43 Initial load
duke
parents:
diff changeset
   810
90ce3da70b43 Initial load
duke
parents:
diff changeset
   811
JNIEXPORT jint JNICALL Java_sun_awt_X11_XlibWrapper_XCreateFontCursor
90ce3da70b43 Initial load
duke
parents:
diff changeset
   812
(JNIEnv *env, jclass clazz, jlong display, jint shape) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
   813
    AWT_CHECK_HAVE_LOCK();
90ce3da70b43 Initial load
duke
parents:
diff changeset
   814
    return XCreateFontCursor((Display *) jlong_to_ptr(display), (int) shape);
90ce3da70b43 Initial load
duke
parents:
diff changeset
   815
}
90ce3da70b43 Initial load
duke
parents:
diff changeset
   816
90ce3da70b43 Initial load
duke
parents:
diff changeset
   817
90ce3da70b43 Initial load
duke
parents:
diff changeset
   818
/*
90ce3da70b43 Initial load
duke
parents:
diff changeset
   819
 * Class:     sun_awt_X11_XlibWrapper
90ce3da70b43 Initial load
duke
parents:
diff changeset
   820
 * Method:    XCreatePixmapCursor
90ce3da70b43 Initial load
duke
parents:
diff changeset
   821
 * Signature: (JJJJJII)J
90ce3da70b43 Initial load
duke
parents:
diff changeset
   822
 */
90ce3da70b43 Initial load
duke
parents:
diff changeset
   823
JNIEXPORT jlong JNICALL Java_sun_awt_X11_XlibWrapper_XCreatePixmapCursor
90ce3da70b43 Initial load
duke
parents:
diff changeset
   824
(JNIEnv *env , jclass clazz, jlong display, jlong source, jlong mask, jlong fore, jlong back, jint x , jint y) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
   825
90ce3da70b43 Initial load
duke
parents:
diff changeset
   826
    AWT_CHECK_HAVE_LOCK();
90ce3da70b43 Initial load
duke
parents:
diff changeset
   827
    return (jlong) XCreatePixmapCursor((Display *) jlong_to_ptr(display), (Pixmap) source, (Pixmap) mask,
90ce3da70b43 Initial load
duke
parents:
diff changeset
   828
                                       (XColor *) jlong_to_ptr(fore), (XColor *) jlong_to_ptr(back), x, y);
90ce3da70b43 Initial load
duke
parents:
diff changeset
   829
}
90ce3da70b43 Initial load
duke
parents:
diff changeset
   830
90ce3da70b43 Initial load
duke
parents:
diff changeset
   831
90ce3da70b43 Initial load
duke
parents:
diff changeset
   832
/*
90ce3da70b43 Initial load
duke
parents:
diff changeset
   833
 * Class:     sun_awt_X11_XlibWrapper
90ce3da70b43 Initial load
duke
parents:
diff changeset
   834
 * Method:    XQueryBestCursor
90ce3da70b43 Initial load
duke
parents:
diff changeset
   835
 * Signature: (JJIIJJ)Z
90ce3da70b43 Initial load
duke
parents:
diff changeset
   836
 */
90ce3da70b43 Initial load
duke
parents:
diff changeset
   837
JNIEXPORT jboolean JNICALL Java_sun_awt_X11_XlibWrapper_XQueryBestCursor
90ce3da70b43 Initial load
duke
parents:
diff changeset
   838
(JNIEnv *env, jclass clazz, jlong display, jlong drawable, jint width, jint height, jlong width_return, jlong height_return) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
   839
90ce3da70b43 Initial load
duke
parents:
diff changeset
   840
    Status status;
90ce3da70b43 Initial load
duke
parents:
diff changeset
   841
90ce3da70b43 Initial load
duke
parents:
diff changeset
   842
    AWT_CHECK_HAVE_LOCK();
90ce3da70b43 Initial load
duke
parents:
diff changeset
   843
    status  =  XQueryBestCursor((Display *) jlong_to_ptr(display), (Drawable) drawable, width,height,
90ce3da70b43 Initial load
duke
parents:
diff changeset
   844
                                (unsigned int *) jlong_to_ptr(width_return), (unsigned int *) jlong_to_ptr(height_return));
90ce3da70b43 Initial load
duke
parents:
diff changeset
   845
90ce3da70b43 Initial load
duke
parents:
diff changeset
   846
    if (status == 0) return JNI_FALSE;
90ce3da70b43 Initial load
duke
parents:
diff changeset
   847
    else return JNI_TRUE;
90ce3da70b43 Initial load
duke
parents:
diff changeset
   848
}
90ce3da70b43 Initial load
duke
parents:
diff changeset
   849
90ce3da70b43 Initial load
duke
parents:
diff changeset
   850
90ce3da70b43 Initial load
duke
parents:
diff changeset
   851
/*
90ce3da70b43 Initial load
duke
parents:
diff changeset
   852
 * Class:     sun_awt_X11_XlibWrapper
90ce3da70b43 Initial load
duke
parents:
diff changeset
   853
 * Method:    XFreeCursor
90ce3da70b43 Initial load
duke
parents:
diff changeset
   854
 * Signature: (JJ)V
90ce3da70b43 Initial load
duke
parents:
diff changeset
   855
 */
90ce3da70b43 Initial load
duke
parents:
diff changeset
   856
JNIEXPORT void JNICALL Java_sun_awt_X11_XlibWrapper_XFreeCursor
90ce3da70b43 Initial load
duke
parents:
diff changeset
   857
(JNIEnv *env, jclass clazz, jlong display, jlong cursor) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
   858
90ce3da70b43 Initial load
duke
parents:
diff changeset
   859
    AWT_CHECK_HAVE_LOCK();
90ce3da70b43 Initial load
duke
parents:
diff changeset
   860
    XFreeCursor( (Display *) jlong_to_ptr(display), (Cursor) cursor);
90ce3da70b43 Initial load
duke
parents:
diff changeset
   861
}
90ce3da70b43 Initial load
duke
parents:
diff changeset
   862
90ce3da70b43 Initial load
duke
parents:
diff changeset
   863
/*
90ce3da70b43 Initial load
duke
parents:
diff changeset
   864
 * Class:     sun_awt_X11_XlibWrapper
90ce3da70b43 Initial load
duke
parents:
diff changeset
   865
 * Method:    XQueryPointer
90ce3da70b43 Initial load
duke
parents:
diff changeset
   866
 * Signature: (JJJJJJJJJ)Z
90ce3da70b43 Initial load
duke
parents:
diff changeset
   867
 */
90ce3da70b43 Initial load
duke
parents:
diff changeset
   868
JNIEXPORT jboolean JNICALL Java_sun_awt_X11_XlibWrapper_XQueryPointer
90ce3da70b43 Initial load
duke
parents:
diff changeset
   869
(JNIEnv *env, jclass clazz, jlong display, jlong w, jlong root_return, jlong child_return, jlong root_x_return , jlong root_y_return, jlong win_x_return, jlong win_y_return, jlong mask_return) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
   870
90ce3da70b43 Initial load
duke
parents:
diff changeset
   871
    Bool b;
90ce3da70b43 Initial load
duke
parents:
diff changeset
   872
90ce3da70b43 Initial load
duke
parents:
diff changeset
   873
    AWT_CHECK_HAVE_LOCK();
90ce3da70b43 Initial load
duke
parents:
diff changeset
   874
    b = XQueryPointer((Display *) jlong_to_ptr(display),
90ce3da70b43 Initial load
duke
parents:
diff changeset
   875
                      (Window) w, (Window *) jlong_to_ptr(root_return), (Window *) jlong_to_ptr(child_return),
90ce3da70b43 Initial load
duke
parents:
diff changeset
   876
                      (int *) jlong_to_ptr(root_x_return), (int *) jlong_to_ptr(root_y_return),
90ce3da70b43 Initial load
duke
parents:
diff changeset
   877
                      (int *) jlong_to_ptr(win_x_return), (int *) jlong_to_ptr(win_y_return),
90ce3da70b43 Initial load
duke
parents:
diff changeset
   878
                      (unsigned int *) jlong_to_ptr(mask_return));
90ce3da70b43 Initial load
duke
parents:
diff changeset
   879
    if (b == True) return JNI_TRUE;
90ce3da70b43 Initial load
duke
parents:
diff changeset
   880
    else return JNI_FALSE;
90ce3da70b43 Initial load
duke
parents:
diff changeset
   881
90ce3da70b43 Initial load
duke
parents:
diff changeset
   882
}
90ce3da70b43 Initial load
duke
parents:
diff changeset
   883
90ce3da70b43 Initial load
duke
parents:
diff changeset
   884
/*
90ce3da70b43 Initial load
duke
parents:
diff changeset
   885
 * Class:     sun_awt_X11_XlibWrapper
90ce3da70b43 Initial load
duke
parents:
diff changeset
   886
 * Method:    XChangeWindowAttributes
90ce3da70b43 Initial load
duke
parents:
diff changeset
   887
 * Signature: (JJJJ)V
90ce3da70b43 Initial load
duke
parents:
diff changeset
   888
 */
90ce3da70b43 Initial load
duke
parents:
diff changeset
   889
JNIEXPORT void JNICALL Java_sun_awt_X11_XlibWrapper_XChangeWindowAttributes
90ce3da70b43 Initial load
duke
parents:
diff changeset
   890
(JNIEnv *env, jclass clazz, jlong display, jlong window, jlong valuemask, jlong attributes) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
   891
90ce3da70b43 Initial load
duke
parents:
diff changeset
   892
    AWT_CHECK_HAVE_LOCK();
90ce3da70b43 Initial load
duke
parents:
diff changeset
   893
    XChangeWindowAttributes((Display *) jlong_to_ptr(display), (Window) window, (unsigned long) valuemask,
90ce3da70b43 Initial load
duke
parents:
diff changeset
   894
                            (XSetWindowAttributes *) jlong_to_ptr(attributes));
90ce3da70b43 Initial load
duke
parents:
diff changeset
   895
}
90ce3da70b43 Initial load
duke
parents:
diff changeset
   896
90ce3da70b43 Initial load
duke
parents:
diff changeset
   897
90ce3da70b43 Initial load
duke
parents:
diff changeset
   898
/*
90ce3da70b43 Initial load
duke
parents:
diff changeset
   899
 * Class:     sun_awt_X11_XlibWrapper
90ce3da70b43 Initial load
duke
parents:
diff changeset
   900
 * Method:    XSetTransientFor
90ce3da70b43 Initial load
duke
parents:
diff changeset
   901
 * Signature: (JJJ)V
90ce3da70b43 Initial load
duke
parents:
diff changeset
   902
 */
90ce3da70b43 Initial load
duke
parents:
diff changeset
   903
JNIEXPORT void JNICALL Java_sun_awt_X11_XlibWrapper_XSetTransientFor
90ce3da70b43 Initial load
duke
parents:
diff changeset
   904
(JNIEnv *env, jclass clazz, jlong display, jlong window, jlong transient_for_window)
90ce3da70b43 Initial load
duke
parents:
diff changeset
   905
{
90ce3da70b43 Initial load
duke
parents:
diff changeset
   906
    AWT_CHECK_HAVE_LOCK();
90ce3da70b43 Initial load
duke
parents:
diff changeset
   907
    XSetTransientForHint((Display *) jlong_to_ptr(display), window, transient_for_window);
90ce3da70b43 Initial load
duke
parents:
diff changeset
   908
}
90ce3da70b43 Initial load
duke
parents:
diff changeset
   909
90ce3da70b43 Initial load
duke
parents:
diff changeset
   910
/*
90ce3da70b43 Initial load
duke
parents:
diff changeset
   911
 * Class:     sun_awt_X11_XlibWrapper
90ce3da70b43 Initial load
duke
parents:
diff changeset
   912
 * Method:    XSetWMHints
90ce3da70b43 Initial load
duke
parents:
diff changeset
   913
 * Signature: (JJJ)V
90ce3da70b43 Initial load
duke
parents:
diff changeset
   914
 */
90ce3da70b43 Initial load
duke
parents:
diff changeset
   915
JNIEXPORT void JNICALL Java_sun_awt_X11_XlibWrapper_XSetWMHints
90ce3da70b43 Initial load
duke
parents:
diff changeset
   916
(JNIEnv *env, jclass clazz, jlong display, jlong window, jlong hints)
90ce3da70b43 Initial load
duke
parents:
diff changeset
   917
{
90ce3da70b43 Initial load
duke
parents:
diff changeset
   918
    AWT_CHECK_HAVE_LOCK();
90ce3da70b43 Initial load
duke
parents:
diff changeset
   919
    XSetWMHints((Display *) jlong_to_ptr(display), window, (XWMHints *) jlong_to_ptr(hints));
90ce3da70b43 Initial load
duke
parents:
diff changeset
   920
}
90ce3da70b43 Initial load
duke
parents:
diff changeset
   921
90ce3da70b43 Initial load
duke
parents:
diff changeset
   922
/*
90ce3da70b43 Initial load
duke
parents:
diff changeset
   923
 * Class:     sun_awt_X11_XlibWrapper
90ce3da70b43 Initial load
duke
parents:
diff changeset
   924
 * Method:    XGetWMHints
90ce3da70b43 Initial load
duke
parents:
diff changeset
   925
 * Signature: (JJJ)V
90ce3da70b43 Initial load
duke
parents:
diff changeset
   926
 */
90ce3da70b43 Initial load
duke
parents:
diff changeset
   927
JNIEXPORT void JNICALL Java_sun_awt_X11_XlibWrapper_XGetWMHints
90ce3da70b43 Initial load
duke
parents:
diff changeset
   928
(JNIEnv *env, jclass clazz, jlong display, jlong window, jlong hints)
90ce3da70b43 Initial load
duke
parents:
diff changeset
   929
{
90ce3da70b43 Initial load
duke
parents:
diff changeset
   930
    XWMHints * get_hints;
90ce3da70b43 Initial load
duke
parents:
diff changeset
   931
    AWT_CHECK_HAVE_LOCK();
90ce3da70b43 Initial load
duke
parents:
diff changeset
   932
    get_hints = XGetWMHints((Display*)jlong_to_ptr(display), window);
90ce3da70b43 Initial load
duke
parents:
diff changeset
   933
    if (get_hints != NULL) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
   934
        memcpy(jlong_to_ptr(hints), get_hints, sizeof(XWMHints));
90ce3da70b43 Initial load
duke
parents:
diff changeset
   935
        XFree(get_hints);
90ce3da70b43 Initial load
duke
parents:
diff changeset
   936
    } else {
90ce3da70b43 Initial load
duke
parents:
diff changeset
   937
        memset(jlong_to_ptr(hints), 0, sizeof(XWMHints));
90ce3da70b43 Initial load
duke
parents:
diff changeset
   938
    }
90ce3da70b43 Initial load
duke
parents:
diff changeset
   939
}
90ce3da70b43 Initial load
duke
parents:
diff changeset
   940
90ce3da70b43 Initial load
duke
parents:
diff changeset
   941
/*
90ce3da70b43 Initial load
duke
parents:
diff changeset
   942
 * Class:     sun_awt_X11_XlibWrapper
90ce3da70b43 Initial load
duke
parents:
diff changeset
   943
 * Method:    XGetPointerMapping
90ce3da70b43 Initial load
duke
parents:
diff changeset
   944
 * Signature: (JJI)I
90ce3da70b43 Initial load
duke
parents:
diff changeset
   945
 */
90ce3da70b43 Initial load
duke
parents:
diff changeset
   946
JNIEXPORT jint JNICALL Java_sun_awt_X11_XlibWrapper_XGetPointerMapping
90ce3da70b43 Initial load
duke
parents:
diff changeset
   947
(JNIEnv *env, jclass clazz, jlong display, jlong map, jint buttonNumber)
90ce3da70b43 Initial load
duke
parents:
diff changeset
   948
{
90ce3da70b43 Initial load
duke
parents:
diff changeset
   949
    AWT_CHECK_HAVE_LOCK();
90ce3da70b43 Initial load
duke
parents:
diff changeset
   950
    return XGetPointerMapping((Display*)jlong_to_ptr(display), (unsigned char*) jlong_to_ptr(map), buttonNumber);
90ce3da70b43 Initial load
duke
parents:
diff changeset
   951
}
90ce3da70b43 Initial load
duke
parents:
diff changeset
   952
90ce3da70b43 Initial load
duke
parents:
diff changeset
   953
/*
90ce3da70b43 Initial load
duke
parents:
diff changeset
   954
 * Class:     sun_awt_X11_XlibWrapper
90ce3da70b43 Initial load
duke
parents:
diff changeset
   955
 * Method:    XGetDefault
90ce3da70b43 Initial load
duke
parents:
diff changeset
   956
 * Signature: (JJI)I
90ce3da70b43 Initial load
duke
parents:
diff changeset
   957
 */
90ce3da70b43 Initial load
duke
parents:
diff changeset
   958
JNIEXPORT jstring JNICALL Java_sun_awt_X11_XlibWrapper_XGetDefault
90ce3da70b43 Initial load
duke
parents:
diff changeset
   959
(JNIEnv *env, jclass clazz, jlong display, jstring program, jstring option)
90ce3da70b43 Initial load
duke
parents:
diff changeset
   960
{
90ce3da70b43 Initial load
duke
parents:
diff changeset
   961
    char * c_program = NULL;
90ce3da70b43 Initial load
duke
parents:
diff changeset
   962
    char * c_option = NULL;
90ce3da70b43 Initial load
duke
parents:
diff changeset
   963
    char * c_res = NULL;
90ce3da70b43 Initial load
duke
parents:
diff changeset
   964
90ce3da70b43 Initial load
duke
parents:
diff changeset
   965
    if (!JNU_IsNull(env, program)) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
   966
        c_program = (char *)JNU_GetStringPlatformChars(env, program, NULL);
90ce3da70b43 Initial load
duke
parents:
diff changeset
   967
    }
90ce3da70b43 Initial load
duke
parents:
diff changeset
   968
    if (!JNU_IsNull(env, option)) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
   969
        c_option = (char *)JNU_GetStringPlatformChars(env, option, NULL);
90ce3da70b43 Initial load
duke
parents:
diff changeset
   970
    }
90ce3da70b43 Initial load
duke
parents:
diff changeset
   971
90ce3da70b43 Initial load
duke
parents:
diff changeset
   972
    if (c_program == NULL || c_option == NULL) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
   973
        if (!JNU_IsNull(env, program)) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
   974
            JNU_ReleaseStringPlatformChars(env, program, (const char *) c_program);
90ce3da70b43 Initial load
duke
parents:
diff changeset
   975
        }
90ce3da70b43 Initial load
duke
parents:
diff changeset
   976
        if (!JNU_IsNull(env, option)) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
   977
            JNU_ReleaseStringPlatformChars(env, option, (const char *) c_option);
90ce3da70b43 Initial load
duke
parents:
diff changeset
   978
        }
90ce3da70b43 Initial load
duke
parents:
diff changeset
   979
        return NULL;
90ce3da70b43 Initial load
duke
parents:
diff changeset
   980
    }
90ce3da70b43 Initial load
duke
parents:
diff changeset
   981
    AWT_CHECK_HAVE_LOCK();
90ce3da70b43 Initial load
duke
parents:
diff changeset
   982
    c_res = XGetDefault((Display*)jlong_to_ptr(display), c_program, c_option);
90ce3da70b43 Initial load
duke
parents:
diff changeset
   983
90ce3da70b43 Initial load
duke
parents:
diff changeset
   984
    if (!JNU_IsNull(env, program)) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
   985
        JNU_ReleaseStringPlatformChars(env, program, (const char *) c_program);
90ce3da70b43 Initial load
duke
parents:
diff changeset
   986
    }
90ce3da70b43 Initial load
duke
parents:
diff changeset
   987
    if (!JNU_IsNull(env, option)) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
   988
        JNU_ReleaseStringPlatformChars(env, option, (const char *) c_option);
90ce3da70b43 Initial load
duke
parents:
diff changeset
   989
    }
90ce3da70b43 Initial load
duke
parents:
diff changeset
   990
90ce3da70b43 Initial load
duke
parents:
diff changeset
   991
    if (c_res != NULL) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
   992
        // Memory leak???
90ce3da70b43 Initial load
duke
parents:
diff changeset
   993
        return JNU_NewStringPlatform(env, c_res);
90ce3da70b43 Initial load
duke
parents:
diff changeset
   994
    } else {
90ce3da70b43 Initial load
duke
parents:
diff changeset
   995
        return NULL;
90ce3da70b43 Initial load
duke
parents:
diff changeset
   996
    }
90ce3da70b43 Initial load
duke
parents:
diff changeset
   997
}
90ce3da70b43 Initial load
duke
parents:
diff changeset
   998
90ce3da70b43 Initial load
duke
parents:
diff changeset
   999
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1000
/*
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1001
 * Class:     sun_awt_X11_XlibWrapper
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1002
 * Method:    getScreenOfWindow
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1003
 * Signature: (JJ)J
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1004
 */
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1005
JNIEXPORT jlong JNICALL Java_sun_awt_X11_XlibWrapper_getScreenOfWindow
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1006
(JNIEnv *env, jclass clazz, jlong display, jlong window)
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1007
{
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1008
    XWindowAttributes attrs;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1009
    memset(&attrs, 0, sizeof(attrs));
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1010
    AWT_CHECK_HAVE_LOCK();
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1011
    XGetWindowAttributes((Display *) jlong_to_ptr(display), window, &attrs);
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1012
    return ptr_to_jlong(attrs.screen);
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1013
}
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1014
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1015
/*
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1016
 * Class:     sun_awt_X11_XlibWrapper
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1017
 * Method:    XScreenNumberOfScreen
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1018
 * Signature: (J)J
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1019
 */
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1020
JNIEXPORT jlong JNICALL Java_sun_awt_X11_XlibWrapper_XScreenNumberOfScreen
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1021
(JNIEnv *env, jclass clazz, jlong screen)
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1022
{
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1023
    AWT_CHECK_HAVE_LOCK();
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1024
    if(jlong_to_ptr(screen) == NULL) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1025
        return -1;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1026
    }
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1027
    return XScreenNumberOfScreen((Screen*) jlong_to_ptr(screen));
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1028
}
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1029
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1030
/*
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1031
 * Class:     sun_awt_X11_XlibWrapper
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1032
 * Method:    XIconifyWindow
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1033
 * Signature: (JJJ)V
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1034
 */
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1035
JNIEXPORT jint JNICALL Java_sun_awt_X11_XlibWrapper_XIconifyWindow
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1036
(JNIEnv *env, jclass clazz, jlong display, jlong window, jlong screenNumber)
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1037
{
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1038
    AWT_CHECK_HAVE_LOCK();
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1039
    return XIconifyWindow((Display*) jlong_to_ptr(display), window, screenNumber);
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1040
}
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1041
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1042
/*
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1043
 * Class:     sun_awt_X11_XlibWrapper
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1044
 * Method:    XFree
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1045
 * Signature: (J)V
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1046
 */
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1047
JNIEXPORT void JNICALL Java_sun_awt_X11_XlibWrapper_XFree
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1048
(JNIEnv *env, jclass clazz, jlong ptr)
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1049
{
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1050
    AWT_CHECK_HAVE_LOCK();
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1051
    XFree(jlong_to_ptr(ptr));
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1052
}
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1053
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1054
/*
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1055
 * Class:     sun_awt_X11_XlibWrapper
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1056
 * Method:    XFree
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1057
 * Signature: (J)V
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1058
 */
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1059
JNIEXPORT jbyteArray JNICALL Java_sun_awt_X11_XlibWrapper_getStringBytes
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1060
(JNIEnv *env, jclass clazz, jlong str_ptr)
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1061
{
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1062
    unsigned char * str = (unsigned char*) jlong_to_ptr(str_ptr);
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1063
    long length = strlen((char*)str);
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1064
    jbyteArray res = (*env)->NewByteArray(env, length);
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1065
    void * storage = malloc(length+1);
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1066
    memcpy(storage, str, length+1);
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1067
    (*env)->SetByteArrayRegion(env, res, 0, length,
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1068
                   (const signed char*) storage);
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1069
    return res;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1070
}
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1071
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1072
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1073
/*
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1074
 * Class:     sun_awt_X11_XlibWrapper
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1075
 * Method:    ServerVendor
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1076
 * Signature: (J)Ljava/lang/String;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1077
 */
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1078
JNIEXPORT jstring JNICALL Java_sun_awt_X11_XlibWrapper_ServerVendor
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1079
(JNIEnv *env, jclass clazz, jlong display)
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1080
{
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1081
    AWT_CHECK_HAVE_LOCK();
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1082
    return JNU_NewStringPlatform(env, ServerVendor((Display*)jlong_to_ptr(display)));
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1083
}
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1084
/*
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1085
 * Class:     sun_awt_X11_XlibWrapper
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1086
 * Method:    VendorRelease
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1087
 * Signature: (J)I;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1088
 */
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1089
JNIEXPORT jint JNICALL Java_sun_awt_X11_XlibWrapper_VendorRelease
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1090
(JNIEnv *env, jclass clazz, jlong display)
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1091
{
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1092
    AWT_CHECK_HAVE_LOCK();
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1093
    return VendorRelease((Display*)jlong_to_ptr(display));
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1094
}
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1095
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1096
JavaVM* jvm = NULL;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1097
static int ToolkitErrorHandler(Display * dpy, XErrorEvent * event) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1098
    if (jvm != NULL) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1099
        JNIEnv * env = (JNIEnv *)JNU_GetEnv(jvm, JNI_VERSION_1_2);
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1100
        return JNU_CallStaticMethodByName(env, NULL, "sun/awt/X11/XToolkit", "GlobalErrorHandler", "(JJ)I",
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1101
                                          ptr_to_jlong(dpy), ptr_to_jlong(event)).i;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1102
    } else {
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1103
        return 0;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1104
    }
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1105
}
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1106
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1107
/*
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1108
 * Class:     sun_awt_X11_XlibWrapper
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1109
 * Method:    SetToolkitErrorHandler
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1110
 * Signature: ()J
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1111
 */
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1112
JNIEXPORT jlong JNICALL Java_sun_awt_X11_XlibWrapper_SetToolkitErrorHandler
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1113
(JNIEnv *env, jclass clazz)
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1114
{
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1115
    (*env)->GetJavaVM(env, &jvm);
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1116
    AWT_CHECK_HAVE_LOCK();
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1117
    return ptr_to_jlong(XSetErrorHandler(ToolkitErrorHandler));
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1118
}
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1119
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1120
/*
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1121
 * Class:     sun_awt_X11_XlibWrapper
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1122
 * Method:    XSetErrorHandler
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1123
 * Signature: (J)V
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1124
 */
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1125
JNIEXPORT void JNICALL Java_sun_awt_X11_XlibWrapper_XSetErrorHandler
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1126
(JNIEnv *env, jclass clazz, jlong handler)
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1127
{
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1128
    AWT_CHECK_HAVE_LOCK();
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1129
    XSetErrorHandler((XErrorHandler) jlong_to_ptr(handler));
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1130
}
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1131
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1132
/*
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1133
 * Class:     sun_awt_X11_XlibWrapper
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1134
 * Method:    CallErrorHandler
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1135
 * Signature: (JJJ)I
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1136
 */
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1137
JNIEXPORT jint JNICALL Java_sun_awt_X11_XlibWrapper_CallErrorHandler
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1138
(JNIEnv *env, jclass clazz, jlong handler, jlong display, jlong event_ptr)
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1139
{
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1140
    return (*(XErrorHandler)jlong_to_ptr(handler))((Display*) jlong_to_ptr(display), (XErrorEvent*) jlong_to_ptr(event_ptr));
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1141
}
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1142
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1143
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1144
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1145
/*
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1146
 * Class:     sun_awt_X11_XlibWrapper
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1147
 * Method:    XInternAtoms
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1148
 * Signature: (J[Ljava/lang/String;ZJ)I
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1149
 */
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1150
JNIEXPORT jint JNICALL Java_sun_awt_X11_XlibWrapper_XInternAtoms
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1151
(JNIEnv *env, jclass clazz, jlong display, jobjectArray names_arr, jboolean only_if_exists, jlong atoms)
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1152
{
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1153
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1154
    int length = (*env)->GetArrayLength(env, names_arr);
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1155
    char ** names = (char**)malloc(length*sizeof(char*));
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1156
    jboolean copy;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1157
    int index, name_index = 0;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1158
    int status;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1159
    for (index = 0; index < length; index++) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1160
        jstring str = (*env)->GetObjectArrayElement(env, names_arr, index);
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1161
        if (!JNU_IsNull(env, str)) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1162
            const char * str_char = JNU_GetStringPlatformChars(env, str, NULL);
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1163
            names[name_index++] = strdup(str_char);
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1164
            JNU_ReleaseStringPlatformChars(env, str, str_char);
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1165
            (*env)->DeleteLocalRef(env, str);
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1166
        }
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1167
    }
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1168
    AWT_CHECK_HAVE_LOCK();
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1169
    status = XInternAtoms((Display*)jlong_to_ptr(display), names, name_index, only_if_exists, (Atom*) jlong_to_ptr(atoms));
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1170
    for (index = 0; index < length; index++) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1171
        free(names[index]);
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1172
    }
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1173
    free(names);
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1174
    return status;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1175
}
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1176
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1177
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1178
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1179
/*
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1180
 * Class:     sun_awt_X11_XlibWrapper
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1181
 * Method:    XGetWindowAttributes
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1182
 * Signature: (JJJ)I
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1183
 */
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1184
JNIEXPORT jint JNICALL Java_sun_awt_X11_XlibWrapper_XGetWindowAttributes
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1185
(JNIEnv *env, jclass clazz, jlong display, jlong window, jlong attr_ptr)
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1186
{
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1187
    jint status;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1188
    AWT_CHECK_HAVE_LOCK();
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1189
    memset((XWindowAttributes*) jlong_to_ptr(attr_ptr), 0, sizeof(XWindowAttributes));
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1190
    status =  XGetWindowAttributes((Display*)jlong_to_ptr(display), window, (XWindowAttributes*) jlong_to_ptr(attr_ptr));
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1191
    return status;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1192
}
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1193
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1194
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1195
/*
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1196
 * Class:     sun_awt_X11_XlibWrapper
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1197
 * Method:    XGetGeometry
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1198
 * Signature: (JJJJJJJJJ)I
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1199
 */
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1200
JNIEXPORT jint JNICALL Java_sun_awt_X11_XlibWrapper_XGetGeometry
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1201
(JNIEnv *env, jclass clazz, jlong display, jlong drawable, jlong root_return,
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1202
     jlong x_return, jlong y_return, jlong width_return, jlong height_return,
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1203
     jlong border_width_return, jlong depth_return)
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1204
{
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1205
    jint status;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1206
    AWT_CHECK_HAVE_LOCK();
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1207
    status = XGetGeometry((Display *)jlong_to_ptr(display),
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1208
                          (Drawable)drawable, (Window *)jlong_to_ptr(root_return),
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1209
                          (int *)jlong_to_ptr(x_return), (int *)jlong_to_ptr(y_return),
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1210
                          (unsigned int *)jlong_to_ptr(width_return), (unsigned int *)jlong_to_ptr(height_return),
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1211
                          (unsigned int *)jlong_to_ptr(border_width_return),
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1212
                          (unsigned int *)jlong_to_ptr(depth_return));
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1213
    return status;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1214
}
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1215
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1216
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1217
/*
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1218
 * Class:     sun_awt_X11_XlibWrapper
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1219
 * Method:    XGetWMNormalHints
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1220
 * Signature: (JJJJ)I
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1221
 */
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1222
JNIEXPORT jint JNICALL Java_sun_awt_X11_XlibWrapper_XGetWMNormalHints
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1223
(JNIEnv *env, jclass clazz, jlong display, jlong window, jlong hints, jlong supplied_return)
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1224
{
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1225
    AWT_CHECK_HAVE_LOCK();
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1226
    return XGetWMNormalHints((Display*) jlong_to_ptr(display),
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1227
                             window,
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1228
                             (XSizeHints*) jlong_to_ptr(hints),
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1229
                             (long*) jlong_to_ptr(supplied_return));
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1230
}
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1231
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1232
/*
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1233
 * Class:     sun_awt_X11_XlibWrapper
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1234
 * Method:    XSetWMNormalHints
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1235
 * Signature: (JJJ)V
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1236
 */
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1237
JNIEXPORT void JNICALL Java_sun_awt_X11_XlibWrapper_XSetWMNormalHints
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1238
(JNIEnv *env, jclass clazz, jlong display, jlong window, jlong hints)
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1239
{
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1240
    AWT_CHECK_HAVE_LOCK();
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1241
    XSetWMNormalHints((Display*) jlong_to_ptr(display), window, (XSizeHints*) jlong_to_ptr(hints));
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1242
}
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1243
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1244
/*
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1245
 * Class:     sun_awt_X11_XlibWrapper
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1246
 * Method:    XDeleteProperty
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1247
 * Signature: (JJJ)V
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1248
 */
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1249
JNIEXPORT void JNICALL Java_sun_awt_X11_XlibWrapper_XDeleteProperty
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1250
(JNIEnv *env, jclass clazz, jlong display, jlong window, jlong atom)
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1251
{
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1252
    AWT_CHECK_HAVE_LOCK();
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1253
    XDeleteProperty((Display*) jlong_to_ptr(display), window, (Atom)atom);
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1254
}
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1255
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1256
/*
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1257
 * Class:     sun_awt_X11_XlibWrapper
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1258
 * Method:    XSendEvent
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1259
 * Signature: (JJZJJ)V
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1260
 */
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1261
JNIEXPORT jint JNICALL Java_sun_awt_X11_XlibWrapper_XSendEvent
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1262
(JNIEnv *env, jclass clazz, jlong display, jlong window, jboolean propagate, jlong event_mask, jlong event)
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1263
{
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1264
    AWT_CHECK_HAVE_LOCK();
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1265
    return XSendEvent((Display*) jlong_to_ptr(display),
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1266
                      window,
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1267
                      propagate==JNI_TRUE?True:False,
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1268
                      (long) event_mask,
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1269
                      (XEvent*) jlong_to_ptr(event));
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1270
}
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1271
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1272
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1273
/*
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1274
 * Class:     sun_awt_X11_XlibWrapper
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1275
 * Method:    XQueryTree
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1276
 * Signature: (JJJJJJ)I
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1277
 */
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1278
JNIEXPORT jint JNICALL Java_sun_awt_X11_XlibWrapper_XQueryTree
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1279
(JNIEnv *env, jclass clazz, jlong display, jlong window, jlong root_return, jlong parent_return, jlong children_return, jlong nchildren_return)
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1280
{
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1281
    AWT_CHECK_HAVE_LOCK();
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1282
    return XQueryTree((Display*) jlong_to_ptr(display),
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1283
                      window,
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1284
                      (Window *) jlong_to_ptr(root_return),
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1285
                      (Window*) jlong_to_ptr(parent_return),
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1286
                      (Window**) jlong_to_ptr(children_return),
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1287
                      (unsigned int*) jlong_to_ptr(nchildren_return));
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1288
}
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1289
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1290
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1291
/*
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1292
 * Class:     sun_awt_X11_XlibWrapper
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1293
 * Method:    memcpy
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1294
 * Signature: (JJJ)V
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1295
 */
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1296
JNIEXPORT void JNICALL Java_sun_awt_X11_XlibWrapper_memcpy
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1297
(JNIEnv *env, jclass clazz, jlong dest_ptr, jlong src_ptr, jlong length)
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1298
{
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1299
    memcpy(jlong_to_ptr(dest_ptr), jlong_to_ptr(src_ptr), length);
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1300
}
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1301
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1302
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1303
JNIEXPORT void JNICALL Java_sun_awt_X11_XlibWrapper_XSetMinMaxHints
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1304
(JNIEnv *env, jclass clazz, jlong display, jlong window, jint x, jint y, jint width, jint height, jlong flags) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1305
    XSizeHints * hints;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1306
    AWT_CHECK_HAVE_LOCK();
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1307
    hints = XAllocSizeHints();
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1308
    hints->flags = flags;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1309
    hints->width = width;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1310
    hints->min_width = width;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1311
    hints->max_width = width;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1312
    hints->height = height;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1313
    hints->min_height = height;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1314
    hints->max_height = height;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1315
    hints->x = x;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1316
    hints->y = y;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1317
    XSetWMNormalHints((Display*) jlong_to_ptr(display), window, hints);
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1318
    XFree(hints);
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1319
}
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1320
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1321
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1322
JNIEXPORT jlong JNICALL Java_sun_awt_X11_XlibWrapper_XGetVisualInfo
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1323
(JNIEnv *env, jclass clazz, jlong display, jlong vinfo_mask, jlong vinfo_template,
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1324
 jlong nitems_return)
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1325
{
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1326
    AWT_CHECK_HAVE_LOCK();
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1327
    return ptr_to_jlong(XGetVisualInfo((Display*) jlong_to_ptr(display),
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1328
                                       (long) vinfo_mask,
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1329
                                       (XVisualInfo*) jlong_to_ptr(vinfo_template),
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1330
                                       (int*) jlong_to_ptr(nitems_return)));
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1331
}
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1332
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1333
JNIEXPORT jlong JNICALL Java_sun_awt_X11_XlibWrapper_XAllocSizeHints
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1334
  (JNIEnv *env, jclass clazz)
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1335
{
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1336
    AWT_CHECK_HAVE_LOCK();
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1337
    return ptr_to_jlong(XAllocSizeHints());
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1338
}
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1339
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1340
/*
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1341
 * Class:     sun_awt_X11_XlibWrapper
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1342
 * Method:    XIconifyWindow
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1343
 * Signature: (JJJ)V
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1344
 */
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1345
JNIEXPORT void JNICALL Java_sun_awt_X11_XlibWrapper_XBell
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1346
(JNIEnv *env, jclass clazz, jlong display, jint percent)
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1347
{
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1348
    AWT_CHECK_HAVE_LOCK();
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1349
    XBell((Display*)jlong_to_ptr(display), percent);
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1350
}
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1351
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1352
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1353
/*
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1354
 * Class:     sun_awt_X11_XlibWrapper
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1355
 * Method:    XAllocColor
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1356
 * Signature: (JJJ)Z
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1357
 */
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1358
JNIEXPORT jboolean JNICALL Java_sun_awt_X11_XlibWrapper_XAllocColor
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1359
(JNIEnv *env, jclass clazz, jlong display , jlong colormap, jlong xcolor) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1360
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1361
    Status status;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1362
    AWT_CHECK_HAVE_LOCK();
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1363
    status = XAllocColor((Display *) jlong_to_ptr(display), (Colormap) colormap, (XColor *) jlong_to_ptr(xcolor));
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1364
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1365
    if (status == 0) return JNI_FALSE;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1366
    else return JNI_TRUE;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1367
}
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1368
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1369
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1370
/*
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1371
 * Class:     sun_awt_X11_XlibWrapper
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1372
 * Method:    XCreateBitmapFromData
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1373
 * Signature: (JJJII)J
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1374
 */
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1375
JNIEXPORT jlong JNICALL Java_sun_awt_X11_XlibWrapper_XCreateBitmapFromData
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1376
(JNIEnv *env, jclass clazz, jlong display, jlong drawable, jlong data, jint width, jint height) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1377
    AWT_CHECK_HAVE_LOCK();
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1378
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1379
    return (jlong) XCreateBitmapFromData((Display *) jlong_to_ptr(display), (Drawable) drawable,
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1380
                                         (char *) jlong_to_ptr(data), width, height);
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1381
}
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1382
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1383
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1384
/*
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1385
 * Class:     sun_awt_X11_XlibWrapper
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1386
 * Method:    XFreePixmap
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1387
 * Signature: (JJ)V
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1388
 */
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1389
JNIEXPORT void JNICALL Java_sun_awt_X11_XlibWrapper_XFreePixmap
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1390
(JNIEnv *env, jclass clazz, jlong display, jlong pixmap) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1391
    AWT_CHECK_HAVE_LOCK();
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1392
    XFreePixmap((Display *)jlong_to_ptr(display), (Pixmap) pixmap);
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1393
}
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1394
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1395
/*
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1396
 * Class:     sun_awt_X11_XlibWrapper
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1397
 * Method:    XReparentWindow
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1398
 * Signature: (JJJII)V
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1399
 */
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1400
JNIEXPORT void JNICALL Java_sun_awt_X11_XlibWrapper_XReparentWindow
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1401
(JNIEnv *env, jclass clazz, jlong display, jlong window, jlong parent, jint x, jint y) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1402
    AWT_CHECK_HAVE_LOCK();
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1403
    XReparentWindow((Display*)jlong_to_ptr(display), window, parent, x, y);
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1404
}
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1405
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1406
/*
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1407
 * Class:     sun_awt_X11_XlibWrapper
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1408
 * Method:    XConvertSelection
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1409
 * Signature: (JJJJJJ)V
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1410
 */
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1411
JNIEXPORT void JNICALL
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1412
Java_sun_awt_X11_XlibWrapper_XConvertSelection(JNIEnv *env, jclass clazz,
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1413
                           jlong display, jlong selection,
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1414
                           jlong target, jlong property,
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1415
                           jlong requestor, jlong time) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1416
    AWT_CHECK_HAVE_LOCK();
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1417
    XConvertSelection((Display*)jlong_to_ptr(display), selection, target, property, requestor,
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1418
              time);
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1419
}
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1420
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1421
/*
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1422
 * Class:     sun_awt_X11_XlibWrapper
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1423
 * Method:    XSetSelectionOwner
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1424
 * Signature: (JJJJ)V
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1425
 */
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1426
JNIEXPORT void JNICALL
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1427
Java_sun_awt_X11_XlibWrapper_XSetSelectionOwner(JNIEnv *env, jclass clazz,
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1428
                        jlong display, jlong selection,
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1429
                        jlong owner, jlong time) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1430
    AWT_CHECK_HAVE_LOCK();
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1431
    XSetSelectionOwner((Display*)jlong_to_ptr(display), selection, owner, time);
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1432
}
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1433
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1434
/*
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1435
 * Class:     sun_awt_X11_XlibWrapper
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1436
 * Method:    XGetSelectionOwner
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1437
 * Signature: (JJ)J
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1438
 */
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1439
JNIEXPORT jlong JNICALL
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1440
Java_sun_awt_X11_XlibWrapper_XGetSelectionOwner(JNIEnv *env, jclass clazz,
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1441
                        jlong display, jlong selection) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1442
    AWT_CHECK_HAVE_LOCK();
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1443
    return (jlong)XGetSelectionOwner((Display*)jlong_to_ptr(display), selection);
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1444
}
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1445
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1446
/*
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1447
 * Class:     sun_awt_X11_XlibWrapper
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1448
 * Method:    XGetAtomName
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1449
 * Signature: (JJ)Ljava/lang/String;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1450
 */
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1451
JNIEXPORT jstring JNICALL
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1452
Java_sun_awt_X11_XlibWrapper_XGetAtomName(JNIEnv *env, jclass clazz,
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1453
                      jlong display, jlong atom)
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1454
{
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1455
    jstring string = NULL;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1456
    char* name;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1457
    AWT_CHECK_HAVE_LOCK();
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1458
    name = (char*) XGetAtomName((Display*)jlong_to_ptr(display), atom);
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1459
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1460
    if (name == NULL) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1461
        fprintf(stderr, "Atom was %d\n", (int)atom);
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1462
        JNU_ThrowNullPointerException(env, "Failed to retrieve atom name.");
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1463
        return NULL;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1464
    }
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1465
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1466
    string = (*env)->NewStringUTF(env, (const char *)name);
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1467
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1468
    XFree(name);
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1469
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1470
    return string;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1471
}
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1472
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1473
/*
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1474
 * Class:     sun_awt_X11_XlibWrapper
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1475
 * Method:    XMaxRequestSize
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1476
 * Signature: (J)J
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1477
 */
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1478
JNIEXPORT jlong JNICALL
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1479
Java_sun_awt_X11_XlibWrapper_XMaxRequestSize(JNIEnv *env, jclass clazz,
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1480
                         jlong display) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1481
    AWT_CHECK_HAVE_LOCK();
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1482
    return XMaxRequestSize((Display*) jlong_to_ptr(display));
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1483
}
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1484
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1485
JNIEXPORT jlong JNICALL
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1486
Java_sun_awt_X11_XlibWrapper_XAllocWMHints(JNIEnv *env, jclass clazz)
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1487
{
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1488
    AWT_CHECK_HAVE_LOCK();
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1489
    return ptr_to_jlong(XAllocWMHints());
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1490
}
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1491
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1492
JNIEXPORT jlong JNICALL
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1493
Java_sun_awt_X11_XlibWrapper_XCreatePixmap(JNIEnv *env, jclass clazz, jlong display, jlong drawable, jint width, jint height, jint depth)
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1494
{
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1495
    AWT_CHECK_HAVE_LOCK();
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1496
    return XCreatePixmap((Display*)jlong_to_ptr(display), (Drawable)drawable, width, height, depth);
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1497
}
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1498
JNIEXPORT jlong JNICALL
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1499
Java_sun_awt_X11_XlibWrapper_XCreateImage
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1500
  (JNIEnv *env, jclass clazz, jlong display, jlong visual_ptr,
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1501
   jint depth, jint format, jint offset, jlong data, jint width,
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1502
   jint height, jint bitmap_pad, jint bytes_per_line)
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1503
{
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1504
    AWT_CHECK_HAVE_LOCK();
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1505
    return ptr_to_jlong(XCreateImage((Display*) jlong_to_ptr(display), (Visual*) jlong_to_ptr(visual_ptr),
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1506
                depth, format, offset, (char*) jlong_to_ptr(data),
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1507
                width, height, bitmap_pad, bytes_per_line));
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1508
}
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1509
JNIEXPORT jlong JNICALL
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1510
Java_sun_awt_X11_XlibWrapper_XCreateGC
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1511
  (JNIEnv *env, jclass clazz, jlong display, jlong drawable,
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1512
   jlong valuemask, jlong values)
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1513
{
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1514
    AWT_CHECK_HAVE_LOCK();
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1515
    return ptr_to_jlong(XCreateGC((Display*) jlong_to_ptr(display), (Drawable)drawable, valuemask, (XGCValues*) jlong_to_ptr(values)));
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1516
}
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1517
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1518
JNIEXPORT void JNICALL
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1519
Java_sun_awt_X11_XlibWrapper_XDestroyImage(JNIEnv *env, jclass clazz, jlong image)
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1520
{
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1521
    XImage *img = (XImage*) jlong_to_ptr(image);
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1522
    AWT_CHECK_HAVE_LOCK();
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1523
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1524
    // Fix for bug 4903671 :
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1525
    // We should be careful to not double free the memory pointed to data
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1526
    // Since we use unsafe to allocate it, we should use unsafe to free it.
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1527
    // So we should NULL the data pointer before calling XDestroyImage so
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1528
    // that X does not free the pointer for us.
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1529
    img->data = NULL;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1530
    XDestroyImage(img);
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1531
}
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1532
JNIEXPORT void JNICALL
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1533
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)
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1534
{
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1535
    AWT_CHECK_HAVE_LOCK();
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1536
    XPutImage((Display*)jlong_to_ptr(display), (Drawable)drawable, (GC) jlong_to_ptr(gc), (XImage*) jlong_to_ptr(image), src_x, src_y,
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1537
              dest_x, dest_y, width, height);
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1538
}
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1539
JNIEXPORT void JNICALL
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1540
Java_sun_awt_X11_XlibWrapper_XFreeGC(JNIEnv *env, jclass clazz, jlong display, jlong gc)
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1541
{
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1542
    AWT_CHECK_HAVE_LOCK();
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1543
    XFreeGC((Display*) jlong_to_ptr(display), (GC) jlong_to_ptr(gc));
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1544
}
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1545
JNIEXPORT void JNICALL
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1546
Java_sun_awt_X11_XlibWrapper_XSetWindowBackgroundPixmap(JNIEnv *env, jclass clazz, jlong display, jlong window, jlong pixmap)
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1547
{
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1548
    AWT_CHECK_HAVE_LOCK();
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1549
    XSetWindowBackgroundPixmap((Display*) jlong_to_ptr(display), (Window)window, (Pixmap)pixmap);
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1550
}
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1551
JNIEXPORT void JNICALL
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1552
Java_sun_awt_X11_XlibWrapper_XClearWindow(JNIEnv *env, jclass clazz, jlong display, jlong window)
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1553
{
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1554
    AWT_CHECK_HAVE_LOCK();
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1555
    XClearWindow((Display*) jlong_to_ptr(display), (Window)window);
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1556
}
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1557
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1558
JNIEXPORT jint JNICALL
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1559
Java_sun_awt_X11_XlibWrapper_XGetIconSizes(JNIEnv *env, jclass clazz, jlong display, jlong window, jlong ret_sizes, jlong ret_count)
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1560
{
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1561
    XIconSize** psize = (XIconSize**) jlong_to_ptr(ret_sizes);
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1562
    int * pcount = (int *) jlong_to_ptr(ret_count);
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1563
    Status res;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1564
    AWT_CHECK_HAVE_LOCK();
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1565
    res = XGetIconSizes((Display*) jlong_to_ptr(display), (Window)window, psize, pcount);
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1566
    return res;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1567
}
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1568
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1569
JNIEXPORT jint JNICALL Java_sun_awt_X11_XlibWrapper_XdbeQueryExtension
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1570
  (JNIEnv *env, jclass clazz, jlong display, jlong major_version_return,
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1571
   jlong minor_version_return)
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1572
{
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1573
    AWT_CHECK_HAVE_LOCK();
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1574
    return XdbeQueryExtension((Display*) jlong_to_ptr(display), (int *) jlong_to_ptr(major_version_return),
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1575
                  (int *) jlong_to_ptr(minor_version_return));
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1576
}
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1577
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1578
JNIEXPORT jboolean JNICALL Java_sun_awt_X11_XlibWrapper_XQueryExtension
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1579
  (JNIEnv *env, jclass clazz, jlong display, jstring jstr, jlong mop_return,
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1580
   jlong feve_return, jlong err_return)
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1581
{
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1582
    char *cname;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1583
    Boolean bu;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1584
    if (!JNU_IsNull(env, jstr)) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1585
        cname = (char *)JNU_GetStringPlatformChars(env, jstr, NULL);
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1586
    } else {
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1587
        cname = "";
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1588
    }
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1589
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1590
    AWT_CHECK_HAVE_LOCK();
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1591
    bu = XQueryExtension((Display*) jlong_to_ptr(display), cname, (int *) jlong_to_ptr(mop_return),
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1592
                (int *) jlong_to_ptr(feve_return),  (int *) jlong_to_ptr(err_return));
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1593
    if (!JNU_IsNull(env, jstr)) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1594
        JNU_ReleaseStringPlatformChars(env, jstr, (const char *) cname);
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1595
    }
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1596
    return bu ? JNI_TRUE : JNI_FALSE;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1597
}
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1598
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1599
JNIEXPORT jboolean JNICALL Java_sun_awt_X11_XlibWrapper_IsKeypadKey
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1600
  (JNIEnv *env, jclass clazz, jlong keysym)
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1601
{
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1602
    AWT_CHECK_HAVE_LOCK();
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1603
    if(IsKeypadKey(keysym)) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1604
        return JNI_TRUE;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1605
    }
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1606
    return JNI_FALSE;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1607
}
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1608
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1609
JNIEXPORT jlong JNICALL Java_sun_awt_X11_XlibWrapper_XdbeAllocateBackBufferName
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1610
  (JNIEnv *env, jclass clazz, jlong display, jlong window, jint swap_action)
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1611
{
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1612
    AWT_CHECK_HAVE_LOCK();
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1613
    return XdbeAllocateBackBufferName((Display*) jlong_to_ptr(display), (Window) window,
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1614
                      (XdbeSwapAction) swap_action);
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1615
}
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1616
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1617
JNIEXPORT jint JNICALL Java_sun_awt_X11_XlibWrapper_XdbeDeallocateBackBufferName
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1618
  (JNIEnv *env, jclass clazz, jlong display, jlong buffer)
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1619
{
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1620
    AWT_CHECK_HAVE_LOCK();
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1621
    return XdbeDeallocateBackBufferName((Display*) jlong_to_ptr(display), (XdbeBackBuffer) buffer);
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1622
}
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1623
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1624
JNIEXPORT jint JNICALL Java_sun_awt_X11_XlibWrapper_XdbeBeginIdiom
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1625
  (JNIEnv *env, jclass clazz, jlong display)
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1626
{
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1627
    AWT_CHECK_HAVE_LOCK();
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1628
    return XdbeBeginIdiom((Display*) jlong_to_ptr(display));
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1629
}
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1630
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1631
JNIEXPORT jint JNICALL Java_sun_awt_X11_XlibWrapper_XdbeEndIdiom
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1632
  (JNIEnv *env, jclass clazz, jlong display)
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1633
{
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1634
    AWT_CHECK_HAVE_LOCK();
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1635
    return XdbeEndIdiom((Display*) jlong_to_ptr(display));
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1636
}
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1637
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1638
JNIEXPORT jint JNICALL Java_sun_awt_X11_XlibWrapper_XdbeSwapBuffers
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1639
  (JNIEnv *env, jclass clazz, jlong display, jlong swap_info, jint num_windows)
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1640
{
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1641
    AWT_CHECK_HAVE_LOCK();
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1642
    return XdbeSwapBuffers((Display*) jlong_to_ptr(display), (XdbeSwapInfo *) jlong_to_ptr(swap_info), num_windows);
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1643
}
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1644
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1645
JNIEXPORT jlong JNICALL
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1646
Java_sun_awt_X11_XlibWrapper_XKeycodeToKeysym(JNIEnv *env, jclass clazz,
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1647
                                              jlong display, jint keycode,
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1648
                                              jint index) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1649
    AWT_CHECK_HAVE_LOCK();
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1650
    return XKeycodeToKeysym((Display*) jlong_to_ptr(display), (unsigned int)keycode, (int)index);
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1651
}
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1652
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1653
JNIEXPORT jint JNICALL
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1654
Java_sun_awt_X11_XlibWrapper_XKeysymToKeycode(JNIEnv *env, jclass clazz,
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1655
                                              jlong display, jlong keysym) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1656
    AWT_CHECK_HAVE_LOCK();
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1657
    return XKeysymToKeycode((Display*) jlong_to_ptr(display), (KeySym)keysym);
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1658
}
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1659
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1660
JNIEXPORT jlong JNICALL
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1661
Java_sun_awt_X11_XlibWrapper_XGetModifierMapping(JNIEnv *env, jclass clazz,
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1662
                                              jlong display) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1663
    AWT_CHECK_HAVE_LOCK();
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1664
    return ptr_to_jlong(XGetModifierMapping((Display*) jlong_to_ptr(display)));
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1665
}
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1666
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1667
JNIEXPORT void JNICALL
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1668
Java_sun_awt_X11_XlibWrapper_XFreeModifiermap(JNIEnv *env, jclass clazz,
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1669
                                              jlong keymap) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1670
    AWT_CHECK_HAVE_LOCK();
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1671
    XFreeModifiermap((XModifierKeymap*) jlong_to_ptr(keymap));
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1672
}
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1673
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1674
JNIEXPORT void JNICALL
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1675
Java_sun_awt_X11_XlibWrapper_XChangeActivePointerGrab(JNIEnv *env, jclass clazz,
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1676
                                                      jlong display, jint mask,
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1677
                                                      jlong cursor, jlong time) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1678
    AWT_CHECK_HAVE_LOCK();
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1679
    XChangeActivePointerGrab((Display*)jlong_to_ptr(display), (unsigned int)mask,
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1680
                             (Cursor)cursor, (Time)time);
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1681
}
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1682
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1683
/******************* Secondary loop support ************************************/
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1684
#define AWT_SECONDARY_LOOP_TIMEOUT 250
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1685
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1686
static Bool exitSecondaryLoop = True;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1687
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1688
/*
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1689
 * This predicate procedure allows the Toolkit thread to process specific events
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1690
 * while it is blocked waiting for the event dispatch thread to process
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1691
 * a SunDropTargetEvent. We need this to prevent deadlock when the client code
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1692
 * processing SunDropTargetEvent sets or gets the contents of the system
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1693
 * clipboard/selection. In this case the event dispatch thread waits for the
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1694
 * Toolkit thread to process PropertyNotify or SelectionNotify events.
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1695
 */
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1696
static Bool
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1697
secondary_loop_event(Display* dpy, XEvent* event, char* arg) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1698
    return (event->type == SelectionNotify ||
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1699
            event->type == SelectionClear  ||
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1700
            event->type == PropertyNotify) ? True : False;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1701
}
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1702
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1703
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1704
JNIEXPORT jboolean JNICALL
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1705
Java_sun_awt_X11_XlibWrapper_XNextSecondaryLoopEvent(JNIEnv *env, jclass clazz,
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1706
                                                     jlong display, jlong ptr) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1707
    AWT_CHECK_HAVE_LOCK();
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1708
    exitSecondaryLoop = False;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1709
    while (!exitSecondaryLoop) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1710
        if (XCheckIfEvent((Display*) jlong_to_ptr(display), (XEvent*) jlong_to_ptr(ptr), secondary_loop_event, NULL)) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1711
            return JNI_TRUE;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1712
        }
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1713
        AWT_WAIT(AWT_SECONDARY_LOOP_TIMEOUT);
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1714
    }
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1715
    return JNI_FALSE;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1716
}
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1717
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1718
JNIEXPORT void JNICALL
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1719
Java_sun_awt_X11_XlibWrapper_ExitSecondaryLoop(JNIEnv *env, jclass clazz) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1720
    DASSERT(!exitSecondaryLoop);
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1721
    AWT_CHECK_HAVE_LOCK();
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1722
    exitSecondaryLoop = True;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1723
    AWT_NOTIFY_ALL();
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1724
}
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1725
/*******************************************************************************/
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1726
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1727
JNIEXPORT jobjectArray JNICALL
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1728
Java_sun_awt_X11_XlibWrapper_XTextPropertyToStringList(JNIEnv *env,
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1729
                                                       jclass clazz,
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1730
                                                       jbyteArray bytes,
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1731
                                                       jlong encodingAtom) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1732
    XTextProperty tp;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1733
    jbyte         *value;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1734
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1735
    char**        strings  = (char **)NULL;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1736
    int32_t       nstrings = 0;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1737
    jobjectArray  ret = NULL;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1738
    int32_t       i;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1739
    jsize         len;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1740
    jboolean      isCopy = JNI_FALSE;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1741
    static jclass stringClass = NULL;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1742
    jclass        stringClassLocal = NULL;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1743
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1744
    AWT_CHECK_HAVE_LOCK();
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1745
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1746
    if (JNU_IsNull(env, stringClass)) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1747
        stringClassLocal = (*env)->FindClass(env, "java/lang/String");
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1748
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1749
        if ((*env)->ExceptionCheck(env)) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1750
            (*env)->ExceptionDescribe(env);
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1751
            (*env)->ExceptionClear(env);
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1752
            DASSERT(False);
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1753
        }
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1754
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1755
        if (JNU_IsNull(env, stringClassLocal)) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1756
            return NULL;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1757
        }
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1758
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1759
        stringClass = (*env)->NewGlobalRef(env, stringClassLocal); /* never freed! */
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1760
        (*env)->DeleteLocalRef(env, stringClassLocal);
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1761
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1762
        if (JNU_IsNull(env, stringClass)) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1763
            JNU_ThrowOutOfMemoryError(env, "");
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1764
            return NULL;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1765
        }
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1766
    }
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1767
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1768
    /*
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1769
     * If the length of the byte array is 0 just return a null
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1770
     */
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1771
    len = (*env)->GetArrayLength(env, bytes);
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1772
    if (len == 0) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1773
        return (*env)->NewObjectArray(env, 0, stringClass, NULL);
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1774
    }
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1775
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1776
    value = (*env)->GetByteArrayElements(env, bytes, &isCopy);
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1777
    if (JNU_IsNull(env, value)) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1778
        return NULL;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1779
    }
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1780
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1781
    tp.encoding = encodingAtom;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1782
    tp.value    = (unsigned char *)value;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1783
    tp.nitems   = len;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1784
    tp.format   = 8;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1785
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1786
    /*
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1787
     * Convert the byte stream into a list of X11 strings
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1788
     */
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1789
    if (XTextPropertyToStringList(&tp, &strings, &nstrings) == 0) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1790
        (*env)->ReleaseByteArrayElements(env, bytes, value, JNI_ABORT);
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1791
        return NULL;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1792
    }
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1793
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1794
    (*env)->ReleaseByteArrayElements(env, bytes, value, JNI_ABORT);
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1795
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1796
    if (nstrings == 0) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1797
        return (*env)->NewObjectArray(env, 0, stringClass, NULL);
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1798
    }
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1799
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1800
    ret = (*env)->NewObjectArray(env, nstrings, stringClass, NULL);
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1801
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1802
    if ((*env)->ExceptionCheck(env)) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1803
        (*env)->ExceptionDescribe(env);
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1804
        (*env)->ExceptionClear(env);
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1805
        goto wayout;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1806
    }
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1807
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1808
    if (JNU_IsNull(env, ret)) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1809
        goto wayout;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1810
    }
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1811
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1812
    for (i = 0; i < nstrings; i++) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1813
        jstring string = (*env)->NewStringUTF(env,
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1814
                                              (const char *)strings[i]);
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1815
        if ((*env)->ExceptionCheck(env)) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1816
            (*env)->ExceptionDescribe(env);
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1817
            (*env)->ExceptionClear(env);
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1818
            goto wayout;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1819
        }
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1820
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1821
        if (JNU_IsNull(env, string)) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1822
            goto wayout;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1823
        }
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1824
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1825
        (*env)->SetObjectArrayElement(env, ret, i, string);
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1826
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1827
        if ((*env)->ExceptionCheck(env)) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1828
            (*env)->ExceptionDescribe(env);
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1829
            (*env)->ExceptionClear(env);
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1830
            goto wayout;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1831
        }
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1832
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1833
        (*env)->DeleteLocalRef(env, string);
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1834
    }
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1835
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1836
 wayout:
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1837
    /*
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1838
     * Clean up and return
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1839
     */
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1840
    XFreeStringList(strings);
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1841
    return ret;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1842
}
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1843
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1844
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1845
JNIEXPORT void JNICALL
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1846
Java_sun_awt_X11_XlibWrapper_XPutBackEvent(JNIEnv *env,
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1847
                                           jclass clazz,
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1848
                                           jlong display,
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1849
                                           jlong event) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1850
    XPutBackEvent((Display*)jlong_to_ptr(display), (XEvent*) jlong_to_ptr(event));
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1851
}
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1852
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1853
JNIEXPORT jlong JNICALL
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1854
Java_sun_awt_X11_XlibWrapper_getAddress(JNIEnv *env,
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1855
                                           jclass clazz,
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1856
                                           jobject o) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1857
    return ptr_to_jlong(o);
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1858
}
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1859
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1860
JNIEXPORT void JNICALL
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1861
Java_sun_awt_X11_XlibWrapper_copyIntArray(JNIEnv *env,
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1862
                                           jclass clazz,
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1863
                                           jlong dest, jobject array, jint size) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1864
    jboolean isCopy = JNI_FALSE;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1865
    jint * ints = (*env)->GetIntArrayElements(env, array, &isCopy);
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1866
    memcpy(jlong_to_ptr(dest), ints, size);
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1867
    if (isCopy) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1868
        (*env)->ReleaseIntArrayElements(env, array, ints, JNI_ABORT);
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1869
    }
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1870
}
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1871
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1872
JNIEXPORT void JNICALL
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1873
Java_sun_awt_X11_XlibWrapper_copyLongArray(JNIEnv *env,
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1874
                                           jclass clazz,
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1875
                                           jlong dest, jobject array, jint size) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1876
    jboolean isCopy = JNI_FALSE;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1877
    jlong * longs = (*env)->GetLongArrayElements(env, array, &isCopy);
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1878
    memcpy(jlong_to_ptr(dest), longs, size);
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1879
    if (isCopy) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1880
        (*env)->ReleaseLongArrayElements(env, array, longs, JNI_ABORT);
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1881
    }
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1882
}
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1883
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1884
JNIEXPORT jint JNICALL
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1885
Java_sun_awt_X11_XlibWrapper_XSynchronize(JNIEnv *env, jclass clazz, jlong display, jboolean onoff)
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1886
{
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1887
    return (jint) XSynchronize((Display*)jlong_to_ptr(display), (onoff == JNI_TRUE ? True : False));
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1888
}
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1889
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1890
JNIEXPORT jboolean JNICALL
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1891
Java_sun_awt_X11_XlibWrapper_XShapeQueryExtension
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1892
(JNIEnv *env, jclass clazz, jlong display, jlong event_base_return, jlong error_base_return)
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1893
{
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1894
    jboolean status;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1895
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1896
    AWT_CHECK_HAVE_LOCK();
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1897
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1898
    status = XShapeQueryExtension((Display *)jlong_to_ptr(display),
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1899
            (int *)jlong_to_ptr(event_base_return), (int *)jlong_to_ptr(error_base_return));
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1900
    return status;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1901
}
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1902
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1903
/*
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1904
 * Class:     XlibWrapper
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1905
 * Method:    SetRectangularShape
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1906
 */
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1907
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1908
JNIEXPORT void JNICALL
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1909
Java_sun_awt_X11_XlibWrapper_SetRectangularShape
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1910
(JNIEnv *env, jclass clazz, jlong display, jlong window,
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1911
 jint x1, jint y1, jint x2, jint y2,
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1912
 jobject region)
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1913
{
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1914
    XRectangle rects[256];
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1915
    XRectangle *pRect = rects;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1916
    int numrects;
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1917
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1918
    AWT_CHECK_HAVE_LOCK();
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1919
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1920
    numrects = RegionToYXBandedRectangles(env, x1, y1, x2, y2, region,
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1921
            &pRect, 256);
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1922
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1923
    XShapeCombineRectangles((Display *)jlong_to_ptr(display), (Window)jlong_to_ptr(window),
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1924
                ShapeBounding, 0, 0, pRect, numrects, ShapeSet, YXBanded);
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1925
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1926
    if (pRect != rects) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1927
        free(pRect);
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1928
    }
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1929
}