[mutter] MetaMonitor: Add mode spec concept
- From: Jonas Ådahl <jadahl src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [mutter] MetaMonitor: Add mode spec concept
- Date: Wed, 25 Jan 2017 08:35:35 +0000 (UTC)
commit 5d9e2d8d2e964856b06cea64583e1006f3d35d81
Author: Jonas Ådahl <jadahl gmail com>
Date: Sat Dec 17 22:29:33 2016 +0800
MetaMonitor: Add mode spec concept
Add a "mode spec" concept, meaning to be used as a identifier for an
actual monitor mode. It consists of details making a mode unique, i.e.
the total resolution and refresh rate. This will later be used to get
the actual monitor mode (set of one or more CRTC modes).
https://bugzilla.gnome.org/show_bug.cgi?id=777732
src/backends/meta-monitor.c | 34 +++++++++++++++++++++-------------
src/backends/meta-monitor.h | 9 +++++++++
2 files changed, 30 insertions(+), 13 deletions(-)
---
diff --git a/src/backends/meta-monitor.c b/src/backends/meta-monitor.c
index 9fad8b6..7fa0094 100644
--- a/src/backends/meta-monitor.c
+++ b/src/backends/meta-monitor.c
@@ -28,9 +28,7 @@
typedef struct _MetaMonitorMode
{
- int width;
- int height;
- float refresh_rate;
+ MetaMonitorModeSpec spec;
MetaMonitorCrtcMode *crtc_modes;
} MetaMonitorMode;
@@ -176,9 +174,11 @@ meta_monitor_normal_generate_modes (MetaMonitorNormal *monitor_normal)
MetaMonitorMode *mode;
mode = g_new0 (MetaMonitorMode, 1);
- mode->width = crtc_mode->width;
- mode->height = crtc_mode->height;
- mode->refresh_rate = crtc_mode->refresh_rate;
+ mode->spec = (MetaMonitorModeSpec) {
+ .width = crtc_mode->width,
+ .height = crtc_mode->height,
+ .refresh_rate = crtc_mode->refresh_rate
+ },
mode->crtc_modes = g_new (MetaMonitorCrtcMode, 1);
mode->crtc_modes[0] = (MetaMonitorCrtcMode) {
.x = 0,
@@ -337,7 +337,8 @@ meta_monitor_tiled_generate_modes (MetaMonitorTiled *monitor_tiled)
mode = g_new0 (MetaMonitorMode, 1);
meta_monitor_tiled_calculate_tiled_size (monitor,
- &mode->width, &mode->height);
+ &mode->spec.width,
+ &mode->spec.height);
mode->crtc_modes = g_new (MetaMonitorCrtcMode,
g_list_length (monitor_priv->outputs));
for (l = monitor_priv->outputs, i = 0; l; l = l->next, i++)
@@ -356,10 +357,11 @@ meta_monitor_tiled_generate_modes (MetaMonitorTiled *monitor_tiled)
.crtc_mode = preferred_crtc_mode
};
- g_warn_if_fail (mode->refresh_rate == 0.0f ||
- mode->refresh_rate == preferred_crtc_mode->refresh_rate);
+ g_warn_if_fail (mode->spec.refresh_rate == 0.0f ||
+ (mode->spec.refresh_rate ==
+ preferred_crtc_mode->refresh_rate));
- mode->refresh_rate = preferred_crtc_mode->refresh_rate;
+ mode->spec.refresh_rate = preferred_crtc_mode->refresh_rate;
}
monitor_priv->modes = g_list_append (monitor_priv->modes, mode);
@@ -452,19 +454,25 @@ meta_monitor_get_modes (MetaMonitor *monitor)
return priv->modes;
}
+MetaMonitorModeSpec *
+meta_monitor_mode_get_spec (MetaMonitorMode *monitor_mode)
+{
+ return &monitor_mode->spec;
+}
+
void
meta_monitor_mode_get_resolution (MetaMonitorMode *monitor_mode,
int *width,
int *height)
{
- *width = monitor_mode->width;
- *height = monitor_mode->height;
+ *width = monitor_mode->spec.width;
+ *height = monitor_mode->spec.height;
}
float
meta_monitor_mode_get_refresh_rate (MetaMonitorMode *monitor_mode)
{
- return monitor_mode->refresh_rate;
+ return monitor_mode->spec.refresh_rate;
}
void
diff --git a/src/backends/meta-monitor.h b/src/backends/meta-monitor.h
index fc8511b..ec33984 100644
--- a/src/backends/meta-monitor.h
+++ b/src/backends/meta-monitor.h
@@ -28,6 +28,13 @@
typedef struct _MetaMonitorMode MetaMonitorMode;
+typedef struct _MetaMonitorModeSpec
+{
+ int width;
+ int height;
+ float refresh_rate;
+} MetaMonitorModeSpec;
+
typedef struct _MetaMonitorCrtcMode
{
int x;
@@ -91,6 +98,8 @@ uint32_t meta_monitor_tiled_get_tile_group_id (MetaMonitorTiled *monitor_tiled);
GList * meta_monitor_get_modes (MetaMonitor *monitor);
+MetaMonitorModeSpec * meta_monitor_mode_get_spec (MetaMonitorMode *monitor_mode);
+
void meta_monitor_mode_get_resolution (MetaMonitorMode *monitor_mode,
int *width,
int *height);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]