From 2077bbb1dbdfe0d7a8ad9f3c70dc5363927a9ab3 Mon Sep 17 00:00:00 2001 From: Elias Naur Date: Sat, 8 Mar 2003 22:14:17 +0000 Subject: [PATCH] Moved disabling of repeat rate to Display --- src/native/linux/org_lwjgl_Display.cpp | 23 +++++++++++++++---- src/native/linux/org_lwjgl_input_Keyboard.cpp | 7 ------ 2 files changed, 19 insertions(+), 11 deletions(-) diff --git a/src/native/linux/org_lwjgl_Display.cpp b/src/native/linux/org_lwjgl_Display.cpp index a9f1f3b2..4afeafed 100644 --- a/src/native/linux/org_lwjgl_Display.cpp +++ b/src/native/linux/org_lwjgl_Display.cpp @@ -203,15 +203,31 @@ static void waitMapped(Display *disp, Window win) { } while ((event.type != MapNotify) || (event.xmap.event != win)); } +static void setRepeatMode(int mode) { + XKeyboardControl repeat_mode; + repeat_mode.auto_repeat_mode = mode; + XChangeKeyboardControl(disp, KBAutoRepeatMode, &repeat_mode); +} + bool releaseInput(void) { if (current_fullscreen) return false; releaseKeyboard(); releasePointer(); input_released = true; + setRepeatMode(AutoRepeatModeDefault); return true; } +static void acquireInput(void) { + if (input_released) { + setRepeatMode(AutoRepeatModeOff); + acquireKeyboard(); + acquirePointer(); + input_released = false; + } +} + void handleMessages(void) { XEvent event; while (XPending(disp) > 0) { @@ -222,10 +238,7 @@ void handleMessages(void) { saved_env->SetStaticBooleanField(saved_clazz, fid_close, JNI_TRUE); break; case FocusIn: - if (input_released) { - acquireKeyboard(); - acquirePointer(); - } + acquireInput(); break; case MapNotify: current_minimized = false; @@ -410,11 +423,13 @@ JNIEXPORT jboolean JNICALL Java_org_lwjgl_Display_nCreate(JNIEnv * env, jclass c XF86VidModeSetViewPort(disp, screen, 0, 0); } XClearWindow(disp, win); + setRepeatMode(AutoRepeatModeOff); XSync(disp, True); return JNI_TRUE; } JNIEXPORT void JNICALL Java_org_lwjgl_Display_nDestroy(JNIEnv * env, jclass clazz) { + setRepeatMode(AutoRepeatModeDefault); XDestroyWindow(disp, win); if (current_fullscreen) { if (!XF86VidModeSwitchToMode(disp, screen, avail_modes[0])) { diff --git a/src/native/linux/org_lwjgl_input_Keyboard.cpp b/src/native/linux/org_lwjgl_input_Keyboard.cpp index e652a662..1356faa0 100644 --- a/src/native/linux/org_lwjgl_input_Keyboard.cpp +++ b/src/native/linux/org_lwjgl_input_Keyboard.cpp @@ -123,11 +123,6 @@ static void updateGrab(void) { } } -static void setRepeatMode(int mode) { - XKeyboardControl repeat_mode; - repeat_mode.auto_repeat_mode = mode; - XChangeKeyboardControl(disp, KBAutoRepeatMode, &repeat_mode); -} /* * Class: org_lwjgl_input_Keyboard * Method: nCreate @@ -164,7 +159,6 @@ JNIEXPORT jboolean JNICALL Java_org_lwjgl_input_Keyboard_nCreate memset(key_buf, 0, KEYBOARD_SIZE*sizeof(unsigned char)); created = true; - setRepeatMode(AutoRepeatModeOff); return JNI_TRUE; } @@ -179,7 +173,6 @@ JNIEXPORT void JNICALL Java_org_lwjgl_input_Keyboard_nDestroy if (keyboard_grabbed) ungrabKeyboard(); created = false; - setRepeatMode(AutoRepeatModeDefault); } static XKeyEvent *nextEventElement(void) {