diff options
author | Jasper St. Pierre <jstpierre@mecheye.net> | 2014-10-12 15:13:15 -0700 |
---|---|---|
committer | Jasper St. Pierre <jstpierre@mecheye.net> | 2014-10-14 13:56:48 -0700 |
commit | cc8462969d479813e3d4289c62ae0356ca1be218 (patch) | |
tree | a6d46536ad0e1d52f32b95bfd48e182f78d88298 | |
parent | 989bb6ebb1529e9b92117ee44354f4d39d1136d1 (diff) | |
download | mutter-cc8462969d479813e3d4289c62ae0356ca1be218.tar.gz |
monitor-manager: Put the common hotplug code in a common path as well
So we can reuse it in the KMS backend.
-rw-r--r-- | src/backends/meta-monitor-manager.c | 20 | ||||
-rw-r--r-- | src/backends/meta-monitor-manager.h | 1 | ||||
-rw-r--r-- | src/backends/x11/meta-monitor-manager-xrandr.c | 18 |
3 files changed, 24 insertions, 15 deletions
diff --git a/src/backends/meta-monitor-manager.c b/src/backends/meta-monitor-manager.c index 000e89000..59c715438 100644 --- a/src/backends/meta-monitor-manager.c +++ b/src/backends/meta-monitor-manager.c @@ -1178,3 +1178,23 @@ meta_monitor_manager_rebuild_derived (MetaMonitorManager *manager) g_free (old_monitor_infos); } + +void +meta_monitor_manager_on_hotplug (MetaMonitorManager *manager) +{ + gboolean applied_config = FALSE; + + /* If the monitor has hotplug_mode_update (which is used by VMs), don't bother + * applying our stored configuration, because it's likely the user just resizing + * the window. + */ + if (!meta_monitor_manager_has_hotplug_mode_update (manager)) + { + if (meta_monitor_config_apply_stored (manager->config, manager)) + applied_config = TRUE; + } + + /* If we haven't applied any configuration, apply the default configuration. */ + if (!applied_config) + meta_monitor_config_make_default (manager->config, manager); +} diff --git a/src/backends/meta-monitor-manager.h b/src/backends/meta-monitor-manager.h index 9452d9cd2..4d1b3b7e2 100644 --- a/src/backends/meta-monitor-manager.h +++ b/src/backends/meta-monitor-manager.h @@ -341,6 +341,7 @@ void meta_output_info_free (MetaOutputInfo *info); gboolean meta_monitor_manager_has_hotplug_mode_update (MetaMonitorManager *manager); void meta_monitor_manager_read_current_config (MetaMonitorManager *manager); +void meta_monitor_manager_on_hotplug (MetaMonitorManager *manager); /* Returns true if transform causes width and height to be inverted This is true for the odd transforms in the enum */ diff --git a/src/backends/x11/meta-monitor-manager-xrandr.c b/src/backends/x11/meta-monitor-manager-xrandr.c index 483b19947..f93390d07 100644 --- a/src/backends/x11/meta-monitor-manager-xrandr.c +++ b/src/backends/x11/meta-monitor-manager-xrandr.c @@ -1061,7 +1061,6 @@ meta_monitor_manager_xrandr_handle_xevent (MetaMonitorManagerXrandr *manager_xra { MetaMonitorManager *manager = META_MONITOR_MANAGER (manager_xrandr); gboolean new_config; - gboolean applied_config = FALSE; if ((event->type - manager_xrandr->rr_event_base) != RRScreenChangeNotify) return FALSE; @@ -1085,19 +1084,8 @@ meta_monitor_manager_xrandr_handle_xevent (MetaMonitorManagerXrandr *manager_xra return TRUE; } - /* If the monitor has hotplug_mode_update (which is used by VMs), don't bother - * applying our stored configuration, because it's likely the user just resizing - * the window. - */ - if (!meta_monitor_manager_has_hotplug_mode_update (manager)) - { - if (meta_monitor_config_apply_stored (manager->config, manager)) - applied_config = TRUE; - } - - /* If we haven't applied any configuration, apply the default configuration. */ - if (!applied_config) - meta_monitor_config_make_default (manager->config, manager); - + /* Otherwise, this event was gotten from hotplug, so try to make + * a configuration for our new set of outputs. */ + meta_monitor_manager_on_hotplug (manager); return TRUE; } |