Linux: Moved a display connection to java
This commit is contained in:
parent
debaaf6538
commit
61bfceaaed
|
@ -391,9 +391,14 @@ final class LinuxDisplay implements DisplayImplementation {
|
|||
|
||||
public DisplayMode[] getAvailableDisplayModes() throws LWJGLException {
|
||||
lockAWT();
|
||||
try {
|
||||
incDisplay();
|
||||
try {
|
||||
DisplayMode[] modes = nGetAvailableDisplayModes(current_displaymode_extension);
|
||||
return modes;
|
||||
} finally {
|
||||
decDisplay();
|
||||
}
|
||||
} finally {
|
||||
unlockAWT();
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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) {
|
||||
|
|
Loading…
Reference in New Issue