[mutter] monitor-manager: Add API to get scales supported by the backend
- From: Jonas Ådahl <jadahl src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [mutter] monitor-manager: Add API to get scales supported by the backend
- Date: Fri, 7 Apr 2017 14:33:19 +0000 (UTC)
commit 9e8ee491e64cb878b835693c4069dabc26675429
Author: Jonas Ådahl <jadahl gmail com>
Date: Thu Jan 26 17:14:32 2017 +0800
monitor-manager: Add API to get scales supported by the backend
For the Xrandr backend, only scale 1 is supported, for the others, 1
and 2 are reported as supported.
https://bugzilla.gnome.org/show_bug.cgi?id=777732
src/backends/meta-monitor-manager-dummy.c | 15 +++++++++++++++
src/backends/meta-monitor-manager-private.h | 4 ++++
src/backends/native/meta-monitor-manager-kms.c | 15 +++++++++++++++
src/backends/x11/meta-monitor-manager-xrandr.c | 14 ++++++++++++++
src/tests/meta-monitor-manager-test.c | 15 +++++++++++++++
5 files changed, 63 insertions(+), 0 deletions(-)
---
diff --git a/src/backends/meta-monitor-manager-dummy.c b/src/backends/meta-monitor-manager-dummy.c
index 3cfabff..5f1ec1d 100644
--- a/src/backends/meta-monitor-manager-dummy.c
+++ b/src/backends/meta-monitor-manager-dummy.c
@@ -39,6 +39,11 @@
#define MAX_CRTCS (MAX_MONITORS * 2)
#define MAX_MODES (MAX_MONITORS * 4)
+static float supported_scales_dummy[] = {
+ 1.0,
+ 2.0
+};
+
struct _MetaMonitorManagerDummy
{
MetaMonitorManager parent_instance;
@@ -586,6 +591,15 @@ meta_monitor_manager_dummy_calculate_monitor_mode_scale (MetaMonitorManager *man
}
static void
+meta_monitor_manager_dummy_get_supported_scales (MetaMonitorManager *manager,
+ float **scales,
+ int *n_scales)
+{
+ *scales = supported_scales_dummy;
+ *n_scales = G_N_ELEMENTS (supported_scales_dummy);
+}
+
+static void
meta_monitor_manager_dummy_class_init (MetaMonitorManagerDummyClass *klass)
{
MetaMonitorManagerClass *manager_class = META_MONITOR_MANAGER_CLASS (klass);
@@ -596,6 +610,7 @@ meta_monitor_manager_dummy_class_init (MetaMonitorManagerDummyClass *klass)
manager_class->apply_configuration = meta_monitor_manager_dummy_apply_config;
manager_class->is_transform_handled = meta_monitor_manager_dummy_is_transform_handled;
manager_class->calculate_monitor_mode_scale = meta_monitor_manager_dummy_calculate_monitor_mode_scale;
+ manager_class->get_supported_scales = meta_monitor_manager_dummy_get_supported_scales;
}
static void
diff --git a/src/backends/meta-monitor-manager-private.h b/src/backends/meta-monitor-manager-private.h
index 83dccf4..5548cda 100644
--- a/src/backends/meta-monitor-manager-private.h
+++ b/src/backends/meta-monitor-manager-private.h
@@ -353,6 +353,10 @@ struct _MetaMonitorManagerClass
int (*calculate_monitor_mode_scale) (MetaMonitorManager *,
MetaMonitor *,
MetaMonitorMode *);
+
+ void (*get_supported_scales) (MetaMonitorManager *,
+ float **,
+ int *);
};
void meta_monitor_manager_rebuild (MetaMonitorManager *manager,
diff --git a/src/backends/native/meta-monitor-manager-kms.c b/src/backends/native/meta-monitor-manager-kms.c
index dc7988f..12fa394 100644
--- a/src/backends/native/meta-monitor-manager-kms.c
+++ b/src/backends/native/meta-monitor-manager-kms.c
@@ -52,6 +52,11 @@
#define ALL_TRANSFORMS_MASK ((1 << ALL_TRANSFORMS) - 1)
#define SYNC_TOLERANCE 0.01 /* 1 percent */
+static float supported_scales_kms[] = {
+ 1.0,
+ 2.0
+};
+
typedef struct
{
drmModeConnector *connector;
@@ -1905,6 +1910,15 @@ meta_monitor_manager_kms_calculate_monitor_mode_scale (MetaMonitorManager *manag
}
static void
+meta_monitor_manager_kms_get_supported_scales (MetaMonitorManager *manager,
+ float **scales,
+ int *n_scales)
+{
+ *scales = supported_scales_kms;
+ *n_scales = G_N_ELEMENTS (supported_scales_kms);
+}
+
+static void
meta_monitor_manager_kms_dispose (GObject *object)
{
MetaMonitorManagerKms *manager_kms = META_MONITOR_MANAGER_KMS (object);
@@ -1945,4 +1959,5 @@ meta_monitor_manager_kms_class_init (MetaMonitorManagerKmsClass *klass)
manager_class->set_crtc_gamma = meta_monitor_manager_kms_set_crtc_gamma;
manager_class->is_transform_handled = meta_monitor_manager_kms_is_transform_handled;
manager_class->calculate_monitor_mode_scale = meta_monitor_manager_kms_calculate_monitor_mode_scale;
+ manager_class->get_supported_scales = meta_monitor_manager_kms_get_supported_scales;
}
diff --git a/src/backends/x11/meta-monitor-manager-xrandr.c b/src/backends/x11/meta-monitor-manager-xrandr.c
index 3349c31..8507143 100644
--- a/src/backends/x11/meta-monitor-manager-xrandr.c
+++ b/src/backends/x11/meta-monitor-manager-xrandr.c
@@ -52,6 +52,10 @@
* for the reasoning */
#define DPI_FALLBACK 96.0
+static float supported_scales_xrandr[] = {
+ 1.0
+};
+
struct _MetaMonitorManagerXrandr
{
MetaMonitorManager parent_instance;
@@ -1584,6 +1588,15 @@ meta_monitor_manager_xrandr_calculate_monitor_mode_scale (MetaMonitorManager *ma
}
static void
+meta_monitor_manager_xrandr_get_supported_scales (MetaMonitorManager *manager,
+ float **scales,
+ int *n_scales)
+{
+ *scales = supported_scales_xrandr;
+ *n_scales = G_N_ELEMENTS (supported_scales_xrandr);
+}
+
+static void
meta_monitor_manager_xrandr_init (MetaMonitorManagerXrandr *manager_xrandr)
{
MetaBackendX11 *backend = META_BACKEND_X11 (meta_get_backend ());
@@ -1660,6 +1673,7 @@ meta_monitor_manager_xrandr_class_init (MetaMonitorManagerXrandrClass *klass)
#endif
manager_class->is_transform_handled = meta_monitor_manager_xrandr_is_transform_handled;
manager_class->calculate_monitor_mode_scale = meta_monitor_manager_xrandr_calculate_monitor_mode_scale;
+ manager_class->get_supported_scales = meta_monitor_manager_xrandr_get_supported_scales;
quark_meta_monitor_xrandr_data =
g_quark_from_static_string ("-meta-monitor-xrandr-data");
diff --git a/src/tests/meta-monitor-manager-test.c b/src/tests/meta-monitor-manager-test.c
index 7769ec7..0d4033d 100644
--- a/src/tests/meta-monitor-manager-test.c
+++ b/src/tests/meta-monitor-manager-test.c
@@ -23,6 +23,11 @@
#include "backends/meta-monitor-config-manager.h"
+static float supported_scales_test[] = {
+ 1.0,
+ 2.0
+};
+
struct _MetaMonitorManagerTest
{
MetaMonitorManager parent;
@@ -361,6 +366,15 @@ meta_monitor_manager_test_calculate_monitor_mode_scale (MetaMonitorManager *mana
}
static void
+meta_monitor_manager_test_get_supported_scales (MetaMonitorManager *manager,
+ float **scales,
+ int *n_scales)
+{
+ *scales = supported_scales_test;
+ *n_scales = G_N_ELEMENTS (supported_scales_test);
+}
+
+static void
meta_monitor_manager_test_dispose (GObject *object)
{
MetaMonitorManagerTest *manager_test = META_MONITOR_MANAGER_TEST (object);
@@ -393,4 +407,5 @@ meta_monitor_manager_test_class_init (MetaMonitorManagerTestClass *klass)
manager_class->tiled_monitor_removed = meta_monitor_manager_test_tiled_monitor_removed;
manager_class->is_transform_handled = meta_monitor_manager_test_is_transform_handled;
manager_class->calculate_monitor_mode_scale = meta_monitor_manager_test_calculate_monitor_mode_scale;
+ manager_class->get_supported_scales = meta_monitor_manager_test_get_supported_scales;
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]