[gnome-control-center] display: Fix the resolution going to be tested
- From: Benjamin Berg <bberg src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-control-center] display: Fix the resolution going to be tested
- Date: Tue, 10 Mar 2020 16:58:10 +0000 (UTC)
commit 00081c434c78205fedf0c0b36fa5d775cf7d496d
Author: Jian-Hong Pan <jian-hong endlessm com>
Date: Tue Mar 10 16:39:35 2020 +0800
display: Fix the resolution going to be tested
Gnome-control-center checks the display modes by
cc_display_config_is_scaled_mode_valid()
...
cc_display_config_dbus_is_scaled_mode_valid()
to exclude unusable low resolutions.
However, it is the current using resolution that going to be tested by
is_scaled_mode_allowed() in is_scale_allowed_by_active_monitors(), if it
is global scaled required or configured as cloning mode originally.
Therefor, it will check current using resolution again and again,
instead of the enumerated one. This leads gnome-control-center building
wrong resolution list on the panel.
This patch replaces the current mode with the enumerated mode to have
the correct resolution to be tested by is_scaled_mode_allowed().
Fixes #903
panels/display/cc-display-config-dbus.c | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
---
diff --git a/panels/display/cc-display-config-dbus.c b/panels/display/cc-display-config-dbus.c
index 81b2c46f7..aa7c673be 100644
--- a/panels/display/cc-display-config-dbus.c
+++ b/panels/display/cc-display-config-dbus.c
@@ -1227,6 +1227,7 @@ is_scaled_mode_allowed (CcDisplayConfigDBus *self,
static gboolean
is_scale_allowed_by_active_monitors (CcDisplayConfigDBus *self,
+ CcDisplayMode *mode,
double scale)
{
GList *l;
@@ -1238,7 +1239,7 @@ is_scale_allowed_by_active_monitors (CcDisplayConfigDBus *self,
if (!cc_display_monitor_is_active (CC_DISPLAY_MONITOR (m)))
continue;
- if (!is_scaled_mode_allowed (self, m->current_mode, scale))
+ if (!is_scaled_mode_allowed (self, mode, scale))
return FALSE;
}
@@ -1266,7 +1267,7 @@ cc_display_config_dbus_is_scaled_mode_valid (CcDisplayConfig *pself,
CcDisplayConfigDBus *self = CC_DISPLAY_CONFIG_DBUS (pself);
if (self->global_scale_required || cc_display_config_is_cloning (pself))
- return is_scale_allowed_by_active_monitors (self, scale);
+ return is_scale_allowed_by_active_monitors (self, mode, scale);
return is_scaled_mode_allowed (self, mode, scale);
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]