optimized mode detection
This commit is contained in:
parent
062057d3d9
commit
4746f40991
|
@ -103,10 +103,16 @@ static jobjectArray GetAvailableDisplayModesEx(JNIEnv * env) {
|
||||||
|
|
||||||
//enumerate all displays, and all of their displaymodes
|
//enumerate all displays, and all of their displaymodes
|
||||||
while(EnumDisplayDevicesA(NULL, i++, &DisplayDevice, 0) != 0) {
|
while(EnumDisplayDevicesA(NULL, i++, &DisplayDevice, 0) != 0) {
|
||||||
|
// continue if mirroring device
|
||||||
|
if(DisplayDevice.StateFlags && DISPLAY_DEVICE_MIRRORING_DRIVER) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
// go ahead
|
||||||
printfDebug("Querying %s device\n", DisplayDevice.DeviceString);
|
printfDebug("Querying %s device\n", DisplayDevice.DeviceString);
|
||||||
j = 0;
|
j = 0;
|
||||||
while(EnumDisplaySettingsExA((const char *) DisplayDevice.DeviceName, j++, &DevMode, 0) != 0) {
|
while(EnumDisplaySettingsExA((const char *) DisplayDevice.DeviceName, j++, &DevMode, 0) != 0) {
|
||||||
if (DevMode.dmBitsPerPel > 8) {
|
if (DevMode.dmBitsPerPel > 8 && ChangeDisplaySettings(&DevMode, CDS_FULLSCREEN | CDS_TEST) == DISP_CHANGE_SUCCESSFUL) {
|
||||||
AvailableModes++;
|
AvailableModes++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -123,10 +129,15 @@ static jobjectArray GetAvailableDisplayModesEx(JNIEnv * env) {
|
||||||
|
|
||||||
i = 0, n = 0;
|
i = 0, n = 0;
|
||||||
while(EnumDisplayDevicesA(NULL, i++, &DisplayDevice, 0) != 0) {
|
while(EnumDisplayDevicesA(NULL, i++, &DisplayDevice, 0) != 0) {
|
||||||
|
// continue if mirroring device
|
||||||
|
if(DisplayDevice.StateFlags && DISPLAY_DEVICE_MIRRORING_DRIVER) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
j = 0;
|
j = 0;
|
||||||
while(EnumDisplaySettingsExA((const char *) DisplayDevice.DeviceName, j++, &DevMode, 0) != 0) {
|
while(EnumDisplaySettingsExA((const char *) DisplayDevice.DeviceName, j++, &DevMode, 0) != 0) {
|
||||||
// Filter out indexed modes
|
// Filter out indexed modes
|
||||||
if (DevMode.dmBitsPerPel > 8) {
|
if (DevMode.dmBitsPerPel > 8 && ChangeDisplaySettings(&DevMode, CDS_FULLSCREEN | CDS_TEST) == DISP_CHANGE_SUCCESSFUL) {
|
||||||
jobject displayMode;
|
jobject displayMode;
|
||||||
displayMode = env->NewObject(displayModeClass, displayModeConstructor,
|
displayMode = env->NewObject(displayModeClass, displayModeConstructor,
|
||||||
DevMode.dmPelsWidth, DevMode.dmPelsHeight,
|
DevMode.dmPelsWidth, DevMode.dmPelsHeight,
|
||||||
|
|
Loading…
Reference in New Issue