Moved disabling of repeat rate to Display

This commit is contained in:
Elias Naur 2003-03-08 22:14:17 +00:00
parent 374334e7d3
commit 2077bbb1db
2 changed files with 19 additions and 11 deletions

View File

@ -203,15 +203,31 @@ static void waitMapped(Display *disp, Window win) {
} while ((event.type != MapNotify) || (event.xmap.event != 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) { bool releaseInput(void) {
if (current_fullscreen) if (current_fullscreen)
return false; return false;
releaseKeyboard(); releaseKeyboard();
releasePointer(); releasePointer();
input_released = true; input_released = true;
setRepeatMode(AutoRepeatModeDefault);
return true; return true;
} }
static void acquireInput(void) {
if (input_released) {
setRepeatMode(AutoRepeatModeOff);
acquireKeyboard();
acquirePointer();
input_released = false;
}
}
void handleMessages(void) { void handleMessages(void) {
XEvent event; XEvent event;
while (XPending(disp) > 0) { while (XPending(disp) > 0) {
@ -222,10 +238,7 @@ void handleMessages(void) {
saved_env->SetStaticBooleanField(saved_clazz, fid_close, JNI_TRUE); saved_env->SetStaticBooleanField(saved_clazz, fid_close, JNI_TRUE);
break; break;
case FocusIn: case FocusIn:
if (input_released) { acquireInput();
acquireKeyboard();
acquirePointer();
}
break; break;
case MapNotify: case MapNotify:
current_minimized = false; current_minimized = false;
@ -410,11 +423,13 @@ JNIEXPORT jboolean JNICALL Java_org_lwjgl_Display_nCreate(JNIEnv * env, jclass c
XF86VidModeSetViewPort(disp, screen, 0, 0); XF86VidModeSetViewPort(disp, screen, 0, 0);
} }
XClearWindow(disp, win); XClearWindow(disp, win);
setRepeatMode(AutoRepeatModeOff);
XSync(disp, True); XSync(disp, True);
return JNI_TRUE; return JNI_TRUE;
} }
JNIEXPORT void JNICALL Java_org_lwjgl_Display_nDestroy(JNIEnv * env, jclass clazz) { JNIEXPORT void JNICALL Java_org_lwjgl_Display_nDestroy(JNIEnv * env, jclass clazz) {
setRepeatMode(AutoRepeatModeDefault);
XDestroyWindow(disp, win); XDestroyWindow(disp, win);
if (current_fullscreen) { if (current_fullscreen) {
if (!XF86VidModeSwitchToMode(disp, screen, avail_modes[0])) { if (!XF86VidModeSwitchToMode(disp, screen, avail_modes[0])) {

View File

@ -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 * Class: org_lwjgl_input_Keyboard
* Method: nCreate * Method: nCreate
@ -164,7 +159,6 @@ JNIEXPORT jboolean JNICALL Java_org_lwjgl_input_Keyboard_nCreate
memset(key_buf, 0, KEYBOARD_SIZE*sizeof(unsigned char)); memset(key_buf, 0, KEYBOARD_SIZE*sizeof(unsigned char));
created = true; created = true;
setRepeatMode(AutoRepeatModeOff);
return JNI_TRUE; return JNI_TRUE;
} }
@ -179,7 +173,6 @@ JNIEXPORT void JNICALL Java_org_lwjgl_input_Keyboard_nDestroy
if (keyboard_grabbed) if (keyboard_grabbed)
ungrabKeyboard(); ungrabKeyboard();
created = false; created = false;
setRepeatMode(AutoRepeatModeDefault);
} }
static XKeyEvent *nextEventElement(void) { static XKeyEvent *nextEventElement(void) {