Linux: Moved a display connection to java
This commit is contained in:
parent
debaaf6538
commit
61bfceaaed
|
@ -392,8 +392,13 @@ final class LinuxDisplay implements DisplayImplementation {
|
||||||
public DisplayMode[] getAvailableDisplayModes() throws LWJGLException {
|
public DisplayMode[] getAvailableDisplayModes() throws LWJGLException {
|
||||||
lockAWT();
|
lockAWT();
|
||||||
try {
|
try {
|
||||||
DisplayMode[] modes = nGetAvailableDisplayModes(current_displaymode_extension);
|
incDisplay();
|
||||||
return modes;
|
try {
|
||||||
|
DisplayMode[] modes = nGetAvailableDisplayModes(current_displaymode_extension);
|
||||||
|
return modes;
|
||||||
|
} finally {
|
||||||
|
decDisplay();
|
||||||
|
}
|
||||||
} finally {
|
} finally {
|
||||||
unlockAWT();
|
unlockAWT();
|
||||||
}
|
}
|
||||||
|
|
|
@ -413,15 +413,9 @@ void resetDisplayMode(JNIEnv *env, int screen, jint extension, jobject gamma_ram
|
||||||
XCloseDisplay(disp);
|
XCloseDisplay(disp);
|
||||||
}
|
}
|
||||||
|
|
||||||
jobjectArray getAvailableDisplayModes(JNIEnv * env, int screen, jint extension) {
|
jobjectArray getAvailableDisplayModes(JNIEnv * env, Display *disp, int screen, jint extension) {
|
||||||
int num_modes, i;
|
int num_modes, i;
|
||||||
mode_info *avail_modes;
|
mode_info *avail_modes;
|
||||||
Display *disp = XOpenDisplay(NULL);
|
|
||||||
if (disp == NULL) {
|
|
||||||
throwException(env, "Could not open display");
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
int bpp = XDefaultDepth(disp, screen);
|
int bpp = XDefaultDepth(disp, screen);
|
||||||
avail_modes = getDisplayModes(disp, screen, extension, &num_modes);
|
avail_modes = getDisplayModes(disp, screen, extension, &num_modes);
|
||||||
if (avail_modes == NULL) {
|
if (avail_modes == NULL) {
|
||||||
|
@ -439,7 +433,6 @@ jobjectArray getAvailableDisplayModes(JNIEnv * env, int screen, jint extension)
|
||||||
(*env)->SetObjectArrayElement(env, ret, i, displayMode);
|
(*env)->SetObjectArrayElement(env, ret, i, displayMode);
|
||||||
}
|
}
|
||||||
free(avail_modes);
|
free(avail_modes);
|
||||||
XCloseDisplay(disp);
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -50,7 +50,7 @@ extern int getScreenModeHeight(void);
|
||||||
extern jobject initDisplay(JNIEnv *env, int screen, jint extension);
|
extern jobject initDisplay(JNIEnv *env, int screen, jint extension);
|
||||||
extern void switchDisplayMode(JNIEnv * env, jobject mode, 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 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 int getGammaRampLengthOfDisplay(JNIEnv *env, Display *disp, int screen);
|
||||||
extern void setGammaRamp(JNIEnv *env, jobject gamma_ramp_buffer, 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);
|
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) {
|
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) {
|
JNIEXPORT void JNICALL Java_org_lwjgl_opengl_LinuxDisplay_nSwitchDisplayMode(JNIEnv *env, jclass clazz, jint extension, jobject mode) {
|
||||||
|
|
Loading…
Reference in New Issue