summaryrefslogtreecommitdiff
path: root/src/backends/x11/meta-monitor-manager-xrandr.c
diff options
context:
space:
mode:
authorJonas Ådahl <jadahl@gmail.com>2017-09-11 14:10:26 +0800
committerJonas Ådahl <jadahl@gmail.com>2017-09-20 17:26:32 +0800
commit22cdc8f41442413740c6d80bf68ffa62cd4b8793 (patch)
tree3a51cab6ddd650146e7e4318b19d61929396c0ba /src/backends/x11/meta-monitor-manager-xrandr.c
parent8b022a5595f7191f2110ebaa793c8143359e14be (diff)
downloadmutter-22cdc8f41442413740c6d80bf68ffa62cd4b8793.tar.gz
monitor-manager: Pass config to derive from when updating state
When we update state, we might not have set the current config yet (for example if the Xrandr assignment didn't change), so pass the monitors config we should derive from instead of fetching it from the monitor config manager. https://bugzilla.gnome.org/show_bug.cgi?id=787477
Diffstat (limited to 'src/backends/x11/meta-monitor-manager-xrandr.c')
-rw-r--r--src/backends/x11/meta-monitor-manager-xrandr.c35
1 files changed, 19 insertions, 16 deletions
diff --git a/src/backends/x11/meta-monitor-manager-xrandr.c b/src/backends/x11/meta-monitor-manager-xrandr.c
index 73842648f..c369d4960 100644
--- a/src/backends/x11/meta-monitor-manager-xrandr.c
+++ b/src/backends/x11/meta-monitor-manager-xrandr.c
@@ -1464,7 +1464,9 @@ apply_crtc_assignments (MetaMonitorManager *manager,
static void
meta_monitor_manager_xrandr_ensure_initial_config (MetaMonitorManager *manager)
{
- MetaMonitorManagerDeriveFlag flags;
+ MetaMonitorConfigManager *config_manager =
+ meta_monitor_manager_get_config_manager (manager);
+ MetaMonitorsConfig *config;
meta_monitor_manager_ensure_configured (manager);
@@ -1475,8 +1477,8 @@ meta_monitor_manager_xrandr_ensure_initial_config (MetaMonitorManager *manager)
*/
meta_monitor_manager_read_current_state (manager);
- flags = META_MONITOR_MANAGER_DERIVE_FLAG_CONFIGURED_SCALE;
- meta_monitor_manager_update_logical_state_derived (manager, flags);
+ config = meta_monitor_config_manager_get_current (config_manager);
+ meta_monitor_manager_update_logical_state_derived (manager, config);
}
static gboolean
@@ -1490,10 +1492,7 @@ meta_monitor_manager_xrandr_apply_monitors_config (MetaMonitorManager *mana
if (!config)
{
- MetaMonitorManagerDeriveFlag flags =
- META_MONITOR_MANAGER_DERIVE_FLAG_NONE;
-
- meta_monitor_manager_rebuild_derived (manager, flags);
+ meta_monitor_manager_rebuild_derived (manager, NULL);
return TRUE;
}
@@ -1527,11 +1526,7 @@ meta_monitor_manager_xrandr_apply_monitors_config (MetaMonitorManager *mana
}
else
{
- MetaMonitorManagerDeriveFlag flags;
-
- flags = (META_MONITOR_MANAGER_DERIVE_FLAG_NONE |
- META_MONITOR_MANAGER_DERIVE_FLAG_CONFIGURED_SCALE);
- meta_monitor_manager_rebuild_derived (manager, flags);
+ meta_monitor_manager_rebuild_derived (manager, config);
}
}
@@ -1940,13 +1935,21 @@ meta_monitor_manager_xrandr_handle_xevent (MetaMonitorManagerXrandr *manager_xra
}
else
{
- MetaMonitorManagerDeriveFlag flags =
- META_MONITOR_MANAGER_DERIVE_FLAG_NONE;
+ MetaMonitorsConfig *config;
if (is_our_configuration)
- flags |= META_MONITOR_MANAGER_DERIVE_FLAG_CONFIGURED_SCALE;
+ {
+ MetaMonitorConfigManager *config_manager =
+ meta_monitor_manager_get_config_manager (manager);
+
+ config = meta_monitor_config_manager_get_current (config_manager);
+ }
+ else
+ {
+ config = NULL;
+ }
- meta_monitor_manager_rebuild_derived (manager, flags);
+ meta_monitor_manager_rebuild_derived (manager, config);
}
return TRUE;