[mutter] monitor-manager: Let the backends handle no configuration
- From: Jonas Ådahl <jadahl src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [mutter] monitor-manager: Let the backends handle no configuration
- Date: Fri, 7 Apr 2017 14:32:58 +0000 (UTC)
commit fcc0288f0cd19d1c789fce28f3cd98366fdbc18f
Author: Jonas Ådahl <jadahl gmail com>
Date: Fri Jan 20 14:50:11 2017 +0800
monitor-manager: Let the backends handle no configuration
Let the backends decide whether to just rebuild a derived state, or use
the NULL config to rebuild an empty logical state.
This also changes the expected screen size values of the no-outputs
test; as this case is actually handled now.
https://bugzilla.gnome.org/show_bug.cgi?id=777732
src/backends/meta-monitor-manager-dummy.c | 8 ++++++++
src/backends/meta-monitor-manager.c | 2 +-
src/backends/native/meta-monitor-manager-kms.c | 1 +
src/backends/x11/meta-monitor-manager-xrandr.c | 6 ++++++
src/tests/meta-monitor-manager-test.c | 11 +++++++++++
src/tests/monitor-unit-tests.c | 5 +++--
6 files changed, 30 insertions(+), 3 deletions(-)
---
diff --git a/src/backends/meta-monitor-manager-dummy.c b/src/backends/meta-monitor-manager-dummy.c
index 7db98e3..3cfabff 100644
--- a/src/backends/meta-monitor-manager-dummy.c
+++ b/src/backends/meta-monitor-manager-dummy.c
@@ -501,6 +501,14 @@ meta_monitor_manager_dummy_apply_monitors_config (MetaMonitorManager *manager,
GPtrArray *crtc_infos;
GPtrArray *output_infos;
+ if (!config)
+ {
+ manager->screen_width = 0;
+ manager->screen_height = 0;
+
+ meta_monitor_manager_rebuild (manager, NULL);
+ }
+
if (!meta_monitor_config_manager_assign (manager, config,
&crtc_infos, &output_infos,
error))
diff --git a/src/backends/meta-monitor-manager.c b/src/backends/meta-monitor-manager.c
index bb9334c..e3b68ad 100644
--- a/src/backends/meta-monitor-manager.c
+++ b/src/backends/meta-monitor-manager.c
@@ -420,7 +420,7 @@ done:
if (!config)
{
- meta_monitor_manager_rebuild (manager, NULL);
+ meta_monitor_manager_apply_monitors_config (manager, NULL, &error);
return NULL;
}
diff --git a/src/backends/native/meta-monitor-manager-kms.c b/src/backends/native/meta-monitor-manager-kms.c
index a7a4dac..dc7988f 100644
--- a/src/backends/native/meta-monitor-manager-kms.c
+++ b/src/backends/native/meta-monitor-manager-kms.c
@@ -1430,6 +1430,7 @@ meta_monitor_manager_kms_apply_monitors_config (MetaMonitorManager *manager,
{
manager->screen_width = 0;
manager->screen_height = 0;
+ meta_monitor_manager_rebuild (manager, NULL);
return TRUE;
}
diff --git a/src/backends/x11/meta-monitor-manager-xrandr.c b/src/backends/x11/meta-monitor-manager-xrandr.c
index 0fdc5bf..3349c31 100644
--- a/src/backends/x11/meta-monitor-manager-xrandr.c
+++ b/src/backends/x11/meta-monitor-manager-xrandr.c
@@ -1303,6 +1303,12 @@ meta_monitor_manager_xrandr_apply_monitors_config (MetaMonitorManager *manager,
GPtrArray *crtc_infos;
GPtrArray *output_infos;
+ if (!config)
+ {
+ meta_monitor_manager_rebuild_derived (manager);
+ return TRUE;
+ }
+
if (!meta_monitor_config_manager_assign (manager, config,
&crtc_infos, &output_infos,
error))
diff --git a/src/tests/meta-monitor-manager-test.c b/src/tests/meta-monitor-manager-test.c
index feb9d85..7769ec7 100644
--- a/src/tests/meta-monitor-manager-test.c
+++ b/src/tests/meta-monitor-manager-test.c
@@ -258,6 +258,17 @@ meta_monitor_manager_test_apply_monitors_config (MetaMonitorManager *manager,
GPtrArray *crtc_infos;
GPtrArray *output_infos;
+ if (!config)
+ {
+ /* The screen is made 1x1, as clutter stage used cannot be empty. */
+ manager->screen_width = 1;
+ manager->screen_height = 1;
+
+ meta_monitor_manager_rebuild (manager, NULL);
+
+ return TRUE;
+ }
+
if (!meta_monitor_config_manager_assign (manager, config,
&crtc_infos,
&output_infos,
diff --git a/src/tests/monitor-unit-tests.c b/src/tests/monitor-unit-tests.c
index 9211300..1eb3841 100644
--- a/src/tests/monitor-unit-tests.c
+++ b/src/tests/monitor-unit-tests.c
@@ -2135,8 +2135,9 @@ meta_test_monitor_no_outputs (void)
.n_outputs = 0,
.n_crtcs = 0,
.n_tiled_monitors = 0,
- .screen_width = 1024,
- .screen_height = 768
+ /* The screen is made 1x1, as clutter stage used cannot be empty. */
+ .screen_width = 1,
+ .screen_height = 1
}
};
MetaMonitorTestSetup *test_setup;
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]