summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJasper St. Pierre <jstpierre@mecheye.net>2014-10-12 15:13:15 -0700
committerJasper St. Pierre <jstpierre@mecheye.net>2014-10-14 13:56:48 -0700
commitcc8462969d479813e3d4289c62ae0356ca1be218 (patch)
treea6d46536ad0e1d52f32b95bfd48e182f78d88298
parent989bb6ebb1529e9b92117ee44354f4d39d1136d1 (diff)
downloadmutter-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.c20
-rw-r--r--src/backends/meta-monitor-manager.h1
-rw-r--r--src/backends/x11/meta-monitor-manager-xrandr.c18
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;
}