[mutter] output: Move MetaGpu field to instance private



commit f4fd92d8e8ba7957f2a4c0f752df993532b41fb5
Author: Jonas Ã…dahl <jadahl gmail com>
Date:   Tue Feb 25 10:54:40 2020 +0100

    output: Move MetaGpu field to instance private
    
    Set during construction only, retrieved using helper.
    
    https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1287

 src/backends/meta-monitor-manager-dummy.c | 10 +++--
 src/backends/meta-output.c                | 67 ++++++++++++++++++++++++++++++-
 src/backends/meta-output.h                |  2 -
 src/backends/native/meta-output-kms.c     |  5 ++-
 src/backends/x11/meta-output-xrandr.c     |  5 ++-
 src/tests/headless-start-test.c           |  4 +-
 src/tests/meta-monitor-manager-test.c     |  4 --
 src/tests/monitor-test-utils.c            |  4 +-
 8 files changed, 84 insertions(+), 17 deletions(-)
---
diff --git a/src/backends/meta-monitor-manager-dummy.c b/src/backends/meta-monitor-manager-dummy.c
index 71bf8a2324..bdf106f4cc 100644
--- a/src/backends/meta-monitor-manager-dummy.c
+++ b/src/backends/meta-monitor-manager-dummy.c
@@ -205,7 +205,9 @@ append_monitor (MetaMonitorManager *manager,
   crtc->all_transforms = ALL_TRANSFORMS;
   *crtcs = g_list_append (*crtcs, crtc);
 
-  output = g_object_new (META_TYPE_OUTPUT, NULL);
+  output = g_object_new (META_TYPE_OUTPUT,
+                         "gpu", gpu,
+                         NULL);
 
   output_dummy = g_new0 (MetaOutputDummy, 1);
   *output_dummy = (MetaOutputDummy) {
@@ -214,7 +216,6 @@ append_monitor (MetaMonitorManager *manager,
 
   number = g_list_length (*outputs) + 1;
 
-  output->gpu = gpu;
   output->winsys_id = number;
   output->name = g_strdup_printf ("LVDS%d", number);
   output->vendor = g_strdup ("MetaProducts Inc.");
@@ -319,9 +320,10 @@ append_tiled_monitor (MetaMonitorManager *manager,
 
       preferred_mode = g_list_last (*modes)->data;
 
-      output = g_object_new (META_TYPE_OUTPUT, NULL);
+      output = g_object_new (META_TYPE_OUTPUT,
+                             "gpu", gpu,
+                             NULL);
 
-      output->gpu = gpu;
       output->winsys_id = number;
       output->name = g_strdup_printf ("LVDS%d", number);
       output->vendor = g_strdup ("MetaProducts Inc.");
diff --git a/src/backends/meta-output.c b/src/backends/meta-output.c
index 5c13c35036..5a814c61de 100644
--- a/src/backends/meta-output.c
+++ b/src/backends/meta-output.c
@@ -21,8 +21,21 @@
 
 #include "backends/meta-output.h"
 
+enum
+{
+  PROP_0,
+
+  PROP_GPU,
+
+  N_PROPS
+};
+
+static GParamSpec *obj_props[N_PROPS];
+
 typedef struct _MetaOutputPrivate
 {
+  MetaGpu *gpu;
+
   /* The CRTC driving this output, NULL if the output is not enabled */
   MetaCrtc *crtc;
 } MetaOutputPrivate;
@@ -32,7 +45,9 @@ G_DEFINE_TYPE_WITH_PRIVATE (MetaOutput, meta_output, G_TYPE_OBJECT)
 MetaGpu *
 meta_output_get_gpu (MetaOutput *output)
 {
-  return output->gpu;
+  MetaOutputPrivate *priv = meta_output_get_instance_private (output);
+
+  return priv->gpu;
 }
 
 const char *
@@ -91,6 +106,44 @@ meta_output_crtc_to_logical_transform (MetaOutput           *output,
                                            inverted_panel_orientation_transform);
 }
 
+static void
+meta_output_set_property (GObject      *object,
+                          guint         prop_id,
+                          const GValue *value,
+                          GParamSpec   *pspec)
+{
+  MetaOutput *output = META_OUTPUT (object);
+  MetaOutputPrivate *priv = meta_output_get_instance_private (output);
+
+  switch (prop_id)
+    {
+    case PROP_GPU:
+      priv->gpu = g_value_get_object (value);
+      break;
+    default:
+      G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+    }
+}
+
+static void
+meta_output_get_property (GObject    *object,
+                          guint       prop_id,
+                          GValue     *value,
+                          GParamSpec *pspec)
+{
+  MetaOutput *output = META_OUTPUT (object);
+  MetaOutputPrivate *priv = meta_output_get_instance_private (output);
+
+  switch (prop_id)
+    {
+    case PROP_GPU:
+      g_value_set_object (value, priv->gpu);
+      break;
+    default:
+      G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+    }
+}
+
 static void
 meta_output_dispose (GObject *object)
 {
@@ -131,6 +184,18 @@ meta_output_class_init (MetaOutputClass *klass)
 {
   GObjectClass *object_class = G_OBJECT_CLASS (klass);
 
+  object_class->set_property = meta_output_set_property;
+  object_class->get_property = meta_output_get_property;
   object_class->dispose = meta_output_dispose;
   object_class->finalize = meta_output_finalize;
+
+  obj_props[PROP_GPU] =
+    g_param_spec_object ("gpu",
+                         "gpu",
+                         "MetaGpu",
+                         META_TYPE_GPU,
+                         G_PARAM_READWRITE |
+                         G_PARAM_CONSTRUCT_ONLY |
+                         G_PARAM_STATIC_STRINGS);
+  g_object_class_install_properties (object_class, N_PROPS, obj_props);
 }
diff --git a/src/backends/meta-output.h b/src/backends/meta-output.h
index 24a10cf044..d2701f92d5 100644
--- a/src/backends/meta-output.h
+++ b/src/backends/meta-output.h
@@ -64,8 +64,6 @@ struct _MetaOutput
 {
   GObject parent;
 
-  MetaGpu *gpu;
-
   /* The low-level ID of this output, used to apply back configuration */
   uint64_t winsys_id;
   char *name;
diff --git a/src/backends/native/meta-output-kms.c b/src/backends/native/meta-output-kms.c
index e552113c0a..b4097946f6 100644
--- a/src/backends/native/meta-output-kms.c
+++ b/src/backends/native/meta-output-kms.c
@@ -302,13 +302,14 @@ meta_create_kms_output (MetaGpuKms        *gpu_kms,
   GList *l;
   uint32_t gpu_id;
 
-  output = g_object_new (META_TYPE_OUTPUT, NULL);
+  output = g_object_new (META_TYPE_OUTPUT,
+                         "gpu", gpu,
+                         NULL);
 
   output_kms = g_slice_new0 (MetaOutputKms);
   output->driver_private = output_kms;
   output->driver_notify = (GDestroyNotify) meta_output_destroy_notify;
 
-  output->gpu = gpu;
   output->name = g_strdup (meta_kms_connector_get_name (kms_connector));
 
   gpu_id = meta_gpu_kms_get_id (gpu_kms);
diff --git a/src/backends/x11/meta-output-xrandr.c b/src/backends/x11/meta-output-xrandr.c
index 869a39eef7..78370bf1fc 100644
--- a/src/backends/x11/meta-output-xrandr.c
+++ b/src/backends/x11/meta-output-xrandr.c
@@ -770,8 +770,9 @@ meta_create_xrandr_output (MetaGpuXrandr *gpu_xrandr,
   GBytes *edid;
   unsigned int i;
 
-  output = g_object_new (META_TYPE_OUTPUT, NULL);
-  output->gpu = META_GPU (gpu_xrandr);
+  output = g_object_new (META_TYPE_OUTPUT,
+                         "gpu", gpu_xrandr,
+                         NULL);
   output->winsys_id = output_id;
   output->name = g_strdup (xrandr_output->name);
 
diff --git a/src/tests/headless-start-test.c b/src/tests/headless-start-test.c
index 2b49c36466..d6d4f96b13 100644
--- a/src/tests/headless-start-test.c
+++ b/src/tests/headless-start-test.c
@@ -151,7 +151,9 @@ meta_test_headless_monitor_connect (void)
   possible_crtcs = g_new0 (MetaCrtc *, 1);
   possible_crtcs[0] = g_list_first (test_setup->crtcs)->data;
 
-  output = g_object_new (META_TYPE_OUTPUT, NULL);
+  output = g_object_new (META_TYPE_OUTPUT,
+                         "gpu", gpu,
+                         NULL);
   output->winsys_id = 1;
   output->name = g_strdup ("DP-1");
   output->vendor = g_strdup ("MetaProduct's Inc.");
diff --git a/src/tests/meta-monitor-manager-test.c b/src/tests/meta-monitor-manager-test.c
index 3717af42bb..71fffda294 100644
--- a/src/tests/meta-monitor-manager-test.c
+++ b/src/tests/meta-monitor-manager-test.c
@@ -88,13 +88,9 @@ meta_monitor_manager_test_read_current (MetaMonitorManager *manager)
   MetaBackend *backend = meta_monitor_manager_get_backend (manager);
   MetaBackendTest *backend_test = META_BACKEND_TEST (backend);
   MetaGpu *gpu = meta_backend_test_get_gpu (backend_test);
-  GList *l;
 
   g_assert (manager_test->test_setup);
 
-  for (l = manager_test->test_setup->outputs; l; l = l->next)
-    META_OUTPUT (l->data)->gpu = gpu;
-
   meta_gpu_take_modes (gpu, manager_test->test_setup->modes);
   meta_gpu_take_crtcs (gpu, manager_test->test_setup->crtcs);
   meta_gpu_take_outputs (gpu, manager_test->test_setup->outputs);
diff --git a/src/tests/monitor-test-utils.c b/src/tests/monitor-test-utils.c
index 7b36122d6c..f1b5665891 100644
--- a/src/tests/monitor-test-utils.c
+++ b/src/tests/monitor-test-utils.c
@@ -649,7 +649,9 @@ create_monitor_test_setup (MonitorTestCaseSetup *setup,
       if (!serial)
         serial = "0x123456";
 
-      output = g_object_new (META_TYPE_OUTPUT, NULL);
+      output = g_object_new (META_TYPE_OUTPUT,
+                             "gpu", test_get_gpu (),
+                             NULL);
 
       if (crtc)
         meta_output_assign_crtc (output, crtc);


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]