Linux: Moved a display connection to java

This commit is contained in:
Elias Naur 2005-11-21 16:50:11 +00:00
parent debaaf6538
commit 61bfceaaed
4 changed files with 10 additions and 12 deletions

View File

@ -392,8 +392,13 @@ final class LinuxDisplay implements DisplayImplementation {
public DisplayMode[] getAvailableDisplayModes() throws LWJGLException {
lockAWT();
try {
DisplayMode[] modes = nGetAvailableDisplayModes(current_displaymode_extension);
return modes;
incDisplay();
try {
DisplayMode[] modes = nGetAvailableDisplayModes(current_displaymode_extension);
return modes;
} finally {
decDisplay();
}
} finally {
unlockAWT();
}

View File

@ -413,15 +413,9 @@ void resetDisplayMode(JNIEnv *env, int screen, jint extension, jobject gamma_ram
XCloseDisplay(disp);
}
jobjectArray getAvailableDisplayModes(JNIEnv * env, int screen, jint extension) {
jobjectArray getAvailableDisplayModes(JNIEnv * env, Display *disp, int screen, jint extension) {
int num_modes, i;
mode_info *avail_modes;
Display *disp = XOpenDisplay(NULL);
if (disp == NULL) {
throwException(env, "Could not open display");
return NULL;
}
int bpp = XDefaultDepth(disp, screen);
avail_modes = getDisplayModes(disp, screen, extension, &num_modes);
if (avail_modes == NULL) {
@ -439,7 +433,6 @@ jobjectArray getAvailableDisplayModes(JNIEnv * env, int screen, jint extension)
(*env)->SetObjectArrayElement(env, ret, i, displayMode);
}
free(avail_modes);
XCloseDisplay(disp);
return ret;
}

View File

@ -50,7 +50,7 @@ extern int getScreenModeHeight(void);
extern jobject initDisplay(JNIEnv *env, int screen, jint extension);
extern void switchDisplayMode(JNIEnv * env, jobject mode, int screen, jint extension);
extern void resetDisplayMode(JNIEnv *env, int screen, jint extension, jobject gamma_ramp, bool temporary);
extern jobjectArray getAvailableDisplayModes(JNIEnv * env, int screen, jint extension);
extern jobjectArray getAvailableDisplayModes(JNIEnv * env, Display *disp, int screen, jint extension);
extern int getGammaRampLengthOfDisplay(JNIEnv *env, Display *disp, int screen);
extern void setGammaRamp(JNIEnv *env, jobject gamma_ramp_buffer, int screen);
extern void temporaryRestoreMode(JNIEnv *env, int screen, jint extension, jobject gamma_ramp);

View File

@ -460,7 +460,7 @@ JNIEXPORT void JNICALL Java_org_lwjgl_opengl_LinuxDisplay_nUpdate
}
JNIEXPORT jobjectArray JNICALL Java_org_lwjgl_opengl_LinuxDisplay_nGetAvailableDisplayModes(JNIEnv *env, jclass clazz, jint extension) {
return getAvailableDisplayModes(env, getCurrentScreen(), extension);
return getAvailableDisplayModes(env, getDisplay(), getCurrentScreen(), extension);
}
JNIEXPORT void JNICALL Java_org_lwjgl_opengl_LinuxDisplay_nSwitchDisplayMode(JNIEnv *env, jclass clazz, jint extension, jobject mode) {