optimized mode detection

This commit is contained in:
Brian Matzon 2004-03-10 16:47:04 +00:00
parent 062057d3d9
commit 4746f40991
1 changed files with 13 additions and 2 deletions

View File

@ -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,