[gnome-flashback] crtc: move logical monitor pointer to GfMonitor



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]