[mutter] monitor-manager: Hook MetaOrientationManager to change the config
- From: Rui Matos <rtcm src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [mutter] monitor-manager: Hook MetaOrientationManager to change the config
- Date: Fri, 14 Jul 2017 14:47:30 +0000 (UTC)
commit 6ae42f384501d08026582c7e13c7d922d6a28e31
Author: Rui Matos <tiagomatos gmail com>
Date: Fri Apr 28 17:53:07 2017 +0200
monitor-manager: Hook MetaOrientationManager to change the config
On orientation changes we'll apply the appropriate monitor transform
to the current configuration if possible.
https://bugzilla.gnome.org/show_bug.cgi?id=781906
src/backends/meta-monitor-manager.c | 57 +++++++++++++++++++++++++++++++++++
1 files changed, 57 insertions(+), 0 deletions(-)
---
diff --git a/src/backends/meta-monitor-manager.c b/src/backends/meta-monitor-manager.c
index 6ef0b0f..ed07884 100644
--- a/src/backends/meta-monitor-manager.c
+++ b/src/backends/meta-monitor-manager.c
@@ -40,6 +40,7 @@
#include "backends/meta-logical-monitor.h"
#include "backends/meta-monitor.h"
#include "backends/meta-monitor-config-manager.h"
+#include "backends/meta-orientation-manager.h"
#include "backends/x11/meta-monitor-manager-xrandr.h"
#include "meta-backend-private.h"
@@ -632,6 +633,57 @@ done:
}
static void
+orientation_changed (MetaOrientationManager *orientation_manager,
+ MetaMonitorManager *manager)
+{
+ MetaMonitorTransform transform;
+
+ switch (meta_orientation_manager_get_orientation (orientation_manager))
+ {
+ case META_ORIENTATION_NORMAL:
+ transform = META_MONITOR_TRANSFORM_NORMAL;
+ break;
+ case META_ORIENTATION_BOTTOM_UP:
+ transform = META_MONITOR_TRANSFORM_180;
+ break;
+ case META_ORIENTATION_LEFT_UP:
+ transform = META_MONITOR_TRANSFORM_90;
+ break;
+ case META_ORIENTATION_RIGHT_UP:
+ transform = META_MONITOR_TRANSFORM_270;
+ break;
+
+ case META_ORIENTATION_UNDEFINED:
+ return;
+ }
+
+ if (!meta_is_monitor_config_manager_enabled ())
+ {
+ meta_monitor_config_orientation_changed (manager->legacy_config, transform);
+ }
+ else
+ {
+ GError *error = NULL;
+ MetaMonitorsConfig *config =
+ meta_monitor_config_manager_create_for_orientation (manager->config_manager,
+ transform);
+ if (!config)
+ return;
+
+ if (!meta_monitor_manager_apply_monitors_config (manager,
+ config,
+ META_MONITORS_CONFIG_METHOD_TEMPORARY,
+ &error))
+ {
+ g_warning ("Failed to use orientation monitor configuration: %s",
+ error->message);
+ g_error_free (error);
+ }
+ g_object_unref (config);
+ }
+}
+
+static void
experimental_features_changed (MetaSettings *settings,
MetaExperimentalFeature old_experimental_features,
MetaMonitorManager *manager)
@@ -699,6 +751,11 @@ meta_monitor_manager_constructed (GObject *object)
skeleton,
meta_is_monitor_config_manager_enabled ());
+ g_signal_connect_object (meta_backend_get_orientation_manager (backend),
+ "orientation-changed",
+ G_CALLBACK (orientation_changed),
+ manager, 0);
+
manager->in_init = TRUE;
/*
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]