vesa: don't switch to the current mode.

* If a mode change is requested, check if it is equivalent to the
  current one, and don't do anything in this case.
This commit is contained in:
Axel Dörfler
2015-02-04 21:08:17 +01:00
parent 5fbf0afd91
commit 89a406bc52
+10 -2
View File
@@ -1,5 +1,5 @@
/*
* Copyright 2005-2011, Axel Dörfler, [email protected].
* Copyright 2005-2015, Axel Dörfler, [email protected].
* Distributed under the terms of the MIT License.
*/
@@ -162,6 +162,13 @@ vesa_set_display_mode(display_mode* _mode)
if (vesa_propose_display_mode(&mode, &mode, &mode) != B_OK)
return B_BAD_VALUE;
if (gInfo->shared_info->current_mode.virtual_width == mode.virtual_width
&& gInfo->shared_info->current_mode.virtual_height
== mode.virtual_height
&& gInfo->shared_info->current_mode.space == mode.space) {
return B_OK;
}
vesa_mode* modes = gInfo->vesa_modes;
for (uint32 i = gInfo->shared_info->vesa_mode_count; i-- > 0;) {
// search mode in VESA mode list
@@ -169,8 +176,9 @@ vesa_set_display_mode(display_mode* _mode)
if (modes[i].width == mode.virtual_width
&& modes[i].height == mode.virtual_height
&& get_color_space_for_depth(modes[i].bits_per_pixel)
== mode.space)
== mode.space) {
return ioctl(gInfo->device, VESA_SET_DISPLAY_MODE, &i, sizeof(i));
}
}
return B_UNSUPPORTED;