[gnome-flashback] crtc: move logical monitor pointer to GfMonitor
- From: Alberts Muktupāvels <muktupavels src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-flashback] crtc: move logical monitor pointer to GfMonitor
- Date: Thu, 12 Mar 2020 20:51:21 +0000 (UTC)
commit 0164c261aee2d209ac39827cf1eb5ae166e02108
Author: Alberts Muktupāvels <alberts muktupavels gmail com>
Date: Thu Mar 12 20:57:25 2020 +0200
crtc: move logical monitor pointer to GfMonitor
Based on mutter commit:
https://gitlab.gnome.org/GNOME/mutter/-/commit/2d6665950c4421c2fe1
backends/gf-crtc-private.h | 20 ++++++++------------
backends/gf-logical-monitor.c | 7 ++-----
backends/gf-monitor-private.h | 3 +++
backends/gf-monitor.c | 42 +++++++++++++++++++++++++-----------------
4 files changed, 38 insertions(+), 34 deletions(-)
---
diff --git a/backends/gf-crtc-private.h b/backends/gf-crtc-private.h
index e4aa6a8..80ced6d 100644
--- a/backends/gf-crtc-private.h
+++ b/backends/gf-crtc-private.h
@@ -44,24 +44,20 @@ typedef struct
struct _GfCrtc
{
- GObject parent;
+ GObject parent;
- GfGpu *gpu;
+ GfGpu *gpu;
- glong crtc_id;
- guint all_transforms;
+ glong crtc_id;
+ guint all_transforms;
- /* Only used to build the logical configuration
- * from the HW one
- */
- GfLogicalMonitor *logical_monitor;
- GfCrtcConfig *config;
+ GfCrtcConfig *config;
/* Used when changing configuration */
- gboolean is_dirty;
+ gboolean is_dirty;
- gpointer driver_private;
- GDestroyNotify driver_notify;
+ gpointer driver_private;
+ GDestroyNotify driver_notify;
};
struct _GfCrtcMode
diff --git a/backends/gf-logical-monitor.c b/backends/gf-logical-monitor.c
index 69fcb24..1c637be 100644
--- a/backends/gf-logical-monitor.c
+++ b/backends/gf-logical-monitor.c
@@ -215,18 +215,15 @@ gf_logical_monitor_add_monitor (GfLogicalMonitor *logical_monitor,
for (l_output = outputs; l_output; l_output = l_output->next)
{
GfOutput *output;
- GfCrtc *crtc;
output = l_output->data;
is_presentation = is_presentation && output->is_presentation;
- crtc = gf_output_get_assigned_crtc (output);
-
- if (crtc)
- crtc->logical_monitor = logical_monitor;
}
}
logical_monitor->is_presentation = is_presentation;
+
+ gf_monitor_set_logical_monitor (monitor, logical_monitor);
}
gboolean
diff --git a/backends/gf-monitor-private.h b/backends/gf-monitor-private.h
index a3bc60f..3805fc4 100644
--- a/backends/gf-monitor-private.h
+++ b/backends/gf-monitor-private.h
@@ -238,6 +238,9 @@ gboolean gf_verify_monitor_mode_spec (GfMonitorModeSpec
gboolean gf_monitor_has_aspect_as_size (GfMonitor *monitor);
+void gf_monitor_set_logical_monitor (GfMonitor *monitor,
+ GfLogicalMonitor *logical_monitor);
+
G_END_DECLS
#endif
diff --git a/backends/gf-monitor.c b/backends/gf-monitor.c
index 58ad775..b728f41 100644
--- a/backends/gf-monitor.c
+++ b/backends/gf-monitor.c
@@ -53,16 +53,18 @@
typedef struct
{
- GfGpu *gpu;
+ GfGpu *gpu;
- GList *outputs;
- GList *modes;
- GHashTable *mode_ids;
+ GList *outputs;
+ GList *modes;
+ GHashTable *mode_ids;
- GfMonitorMode *preferred_mode;
- GfMonitorMode *current_mode;
+ GfMonitorMode *preferred_mode;
+ GfMonitorMode *current_mode;
+
+ GfMonitorSpec *spec;
- GfMonitorSpec *spec;
+ GfLogicalMonitor *logical_monitor;
/*
* The primary or first output for this monitor, 0 if we can't figure out.
@@ -73,9 +75,9 @@ typedef struct
* (it's an attempt to keep windows on the same monitor, and preferably on
* the primary one).
*/
- glong winsys_id;
+ glong winsys_id;
- char *display_name;
+ char *display_name;
} GfMonitorPrivate;
enum
@@ -917,16 +919,11 @@ gf_monitor_get_suggested_position (GfMonitor *monitor,
GfLogicalMonitor *
gf_monitor_get_logical_monitor (GfMonitor *monitor)
{
- GfOutput *output;
- GfCrtc *crtc;
+ GfMonitorPrivate *priv;
- output = gf_monitor_get_main_output (monitor);
- crtc = gf_output_get_assigned_crtc (output);
+ priv = gf_monitor_get_instance_private (monitor);
- if (crtc)
- return crtc->logical_monitor;
- else
- return NULL;
+ return priv->logical_monitor;
}
GfMonitorMode *
@@ -1249,3 +1246,14 @@ gf_monitor_has_aspect_as_size (GfMonitor *monitor)
(width_mm == 16 && height_mm == 9) ||
(width_mm == 16 && height_mm == 10);
}
+
+void
+gf_monitor_set_logical_monitor (GfMonitor *monitor,
+ GfLogicalMonitor *logical_monitor)
+{
+ GfMonitorPrivate *priv;
+
+ priv = gf_monitor_get_instance_private (monitor);
+
+ priv->logical_monitor = logical_monitor;
+}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]