Various linux fixes

This commit is contained in:
Elias Naur 2003-03-21 23:28:00 +00:00
parent 24db98e43a
commit a7ec7cda5b
5 changed files with 22 additions and 23 deletions

View File

@ -65,7 +65,6 @@ static XF86VidModeModeInfo **avail_modes;
static XVisualInfo * vis_info; static XVisualInfo * vis_info;
static Atom delete_atom; static Atom delete_atom;
static bool gl_loaded = false; static bool gl_loaded = false;
static JNIEnv *saved_env;
static jclass saved_clazz; static jclass saved_clazz;
extern void handlePointerMotion(XMotionEvent *); extern void handlePointerMotion(XMotionEvent *);
@ -229,14 +228,14 @@ static void acquireInput(void) {
} }
} }
void handleMessages(void) { void handleMessages(JNIEnv *env) {
XEvent event; XEvent event;
while (XPending(disp) > 0) { while (XPending(disp) > 0) {
XNextEvent(disp, &event); XNextEvent(disp, &event);
switch (event.type) { switch (event.type) {
case ClientMessage: case ClientMessage:
if ((event.xclient.format == 32) && (event.xclient.data.l[0] == delete_atom)) if ((event.xclient.format == 32) && (event.xclient.data.l[0] == delete_atom))
saved_env->SetStaticBooleanField(saved_clazz, fid_close, JNI_TRUE); env->SetStaticBooleanField(saved_clazz, fid_close, JNI_TRUE);
break; break;
case FocusIn: case FocusIn:
acquireInput(); acquireInput();
@ -299,8 +298,8 @@ static int getDisplayModes(Display *disp, int screen, int *num_modes, XF86VidMod
return 1; return 1;
} }
static bool isMinimized() { static bool isMinimized(JNIEnv *env, jclass clazz) {
handleMessages(); handleMessages(env);
return current_minimized; return current_minimized;
} }
@ -322,12 +321,19 @@ XVisualInfo *getVisualInfo(void) {
* Signature: ()Z * Signature: ()Z
*/ */
JNIEXPORT jboolean JNICALL Java_org_lwjgl_Display_isMinimized(JNIEnv *env, jclass clazz) { JNIEXPORT jboolean JNICALL Java_org_lwjgl_Display_isMinimized(JNIEnv *env, jclass clazz) {
return isMinimized() ? JNI_TRUE : JNI_FALSE; return isMinimized(env, clazz) ? JNI_TRUE : JNI_FALSE;
} }
JNIEXPORT jboolean JNICALL Java_org_lwjgl_Display_nCreate(JNIEnv * env, jclass clazz, jint width, jint height, jint bpp, jint freq, jint alpha_bits, jint depth_bits, jint stencil_bits, jboolean fullscreen, jstring title) { JNIEXPORT jboolean JNICALL Java_org_lwjgl_Display_nCreate(JNIEnv * env, jclass clazz, jint width, jint height, jint bpp, jint freq, jint alpha_bits, jint depth_bits, jint stencil_bits, jboolean fullscreen, jstring title) {
saved_env = env; // Get a global class instance, just to be sure
static jobject globalClassLock = NULL;
if (globalClassLock == NULL) {
globalClassLock = env->NewGlobalRef(clazz);
}
saved_clazz = clazz; saved_clazz = clazz;
fid_close = env->GetStaticFieldID(clazz, "closeRequested", "Z"); fid_close = env->GetStaticFieldID(clazz, "closeRequested", "Z");
Window root_win; Window root_win;

View File

@ -32,9 +32,9 @@
/** /**
* $Id$ * $Id$
* *
* Win32 controller handling. * Linux controller handling.
* *
* @author Brian Matzon <brian@matzon.com> * @author Elias Naur <brian@matzon.com>
* @version $Revision$ * @version $Revision$
*/ */
#include <jni.h> #include <jni.h>

View File

@ -69,7 +69,7 @@ extern Display *disp;
extern Window win; extern Window win;
extern bool releaseInput(void); extern bool releaseInput(void);
extern void handleMessages(void); extern void handleMessages(JNIEnv *env);
/* /*
* Class: org_lwjgl_input_Keyboard * Class: org_lwjgl_input_Keyboard
@ -79,13 +79,6 @@ extern void handleMessages(void);
JNIEXPORT void JNICALL Java_org_lwjgl_input_Keyboard_initIDs JNIEXPORT void JNICALL Java_org_lwjgl_input_Keyboard_initIDs
(JNIEnv * env, jclass clazz) (JNIEnv * env, jclass clazz)
{ {
// Get a global class instance, just to be sure
static jobject globalClassLock = NULL;
if (globalClassLock == NULL) {
globalClassLock = env->NewGlobalRef(clazz);
}
fid_readBuffer = env->GetStaticFieldID(clazz, "readBuffer", "Ljava/nio/ByteBuffer;"); fid_readBuffer = env->GetStaticFieldID(clazz, "readBuffer", "Ljava/nio/ByteBuffer;");
} }
@ -267,7 +260,7 @@ JNIEXPORT void JNICALL Java_org_lwjgl_input_Keyboard_nPoll
XEvent event; XEvent event;
unsigned char state; unsigned char state;
handleMessages(); handleMessages(env);
updateGrab(); updateGrab();
memcpy((unsigned char*)buf, key_buf, KEYBOARD_SIZE*sizeof(unsigned char)); memcpy((unsigned char*)buf, key_buf, KEYBOARD_SIZE*sizeof(unsigned char));
} }
@ -286,7 +279,7 @@ JNIEXPORT int JNICALL Java_org_lwjgl_input_Keyboard_nRead
int state; int state;
int num_events = 0; int num_events = 0;
handleMessages(); handleMessages(env);
updateGrab(); updateGrab();
while (buf_count < KEYBOARD_BUFFER_SIZE * 2 && (key_event = nextEventElement()) != NULL) { while (buf_count < KEYBOARD_BUFFER_SIZE * 2 && (key_event = nextEventElement()) != NULL) {
num_events++; num_events++;

View File

@ -59,7 +59,7 @@ extern Window win;
extern int screen; extern int screen;
extern int getWindowWidth(void); extern int getWindowWidth(void);
extern int getWindowHeight(void); extern int getWindowHeight(void);
extern void handleMessages(void); extern void handleMessages(JNIEnv* env);
static bool pointer_grabbed; static bool pointer_grabbed;
static bool created = false; static bool created = false;
@ -289,7 +289,7 @@ static void warpPointer(void) {
JNIEXPORT void JNICALL Java_org_lwjgl_input_Mouse_nPoll JNIEXPORT void JNICALL Java_org_lwjgl_input_Mouse_nPoll
(JNIEnv * env, jclass clazz) (JNIEnv * env, jclass clazz)
{ {
handleMessages(); handleMessages(env);
updateGrab(); updateGrab();
int moved_x = current_x - last_x; int moved_x = current_x - last_x;
int moved_y = current_y - last_y; int moved_y = current_y - last_y;

View File

@ -47,7 +47,7 @@ extern XVisualInfo * getVisualInfo(void);
extern Window win; extern Window win;
extern Display * disp; extern Display * disp;
extern void handleMessages(); extern void handleMessages(JNIEnv* env);
static void makeCurrent(void) { static void makeCurrent(void) {
glXMakeCurrent(disp, win, context); glXMakeCurrent(disp, win, context);
@ -115,7 +115,7 @@ JNIEXPORT void JNICALL Java_org_lwjgl_opengl_BaseGL_nDestroy
*/ */
JNIEXPORT void JNICALL Java_org_lwjgl_opengl_BaseGL_swapBuffers(JNIEnv * env, jobject obj) JNIEXPORT void JNICALL Java_org_lwjgl_opengl_BaseGL_swapBuffers(JNIEnv * env, jobject obj)
{ {
handleMessages(); handleMessages(env);
glXSwapBuffers(disp, win); glXSwapBuffers(disp, win);
} }