[gnome-flashback] output: move GfGpu field to instance private



commit 8d74ca6312b5cffdf5f2748a6dfc348a7c6de2e4
Author: Alberts Muktupāvels <alberts muktupavels gmail com>
Date:   Tue Jul 7 15:19:49 2020 +0300

    output: move GfGpu field to instance private
    
    Based on mutter commit:
    https://gitlab.gnome.org/GNOME/mutter/-/commit/f4fd92d8e8ba7957f2a4

 backends/gf-output-private.h |  2 --
 backends/gf-output-xrandr.c  |  5 +--
 backends/gf-output.c         | 81 +++++++++++++++++++++++++++++++++++++++++++-
 3 files changed, 83 insertions(+), 5 deletions(-)
---
diff --git a/backends/gf-output-private.h b/backends/gf-output-private.h
index c006a31..36d5788 100644
--- a/backends/gf-output-private.h
+++ b/backends/gf-output-private.h
@@ -57,8 +57,6 @@ struct _GfOutput
 {
   GObject              parent;
 
-  GfGpu               *gpu;
-
   /* The low-level ID of this output, used to apply back configuration */
   glong                winsys_id;
   gchar               *name;
diff --git a/backends/gf-output-xrandr.c b/backends/gf-output-xrandr.c
index a656fc9..46b0928 100644
--- a/backends/gf-output-xrandr.c
+++ b/backends/gf-output-xrandr.c
@@ -767,8 +767,9 @@ gf_create_xrandr_output (GfGpuXrandr   *gpu_xrandr,
   GBytes *edid;
   unsigned int i;
 
-  output = g_object_new (GF_TYPE_OUTPUT, NULL);
-  output->gpu = GF_GPU (gpu_xrandr);
+  output = g_object_new (GF_TYPE_OUTPUT,
+                         "gpu", GF_GPU (gpu_xrandr),
+                         NULL);
 
   output->winsys_id = output_id;
   output->name = g_strdup (xrandr_output->name);
diff --git a/backends/gf-output.c b/backends/gf-output.c
index 7351d4a..65759a0 100644
--- a/backends/gf-output.c
+++ b/backends/gf-output.c
@@ -32,10 +32,23 @@
 
 typedef struct
 {
+  GfGpu  *gpu;
+
   /* The CRTC driving this output, NULL if the output is not enabled */
   GfCrtc *crtc;
 } GfOutputPrivate;
 
+enum
+{
+  PROP_0,
+
+  PROP_GPU,
+
+  LAST_PROP
+};
+
+static GParamSpec *output_properties[LAST_PROP] = { NULL };
+
 G_DEFINE_TYPE_WITH_PRIVATE (GfOutput, gf_output, G_TYPE_OBJECT)
 
 static void
@@ -73,6 +86,54 @@ gf_output_finalize (GObject *object)
   G_OBJECT_CLASS (gf_output_parent_class)->finalize (object);
 }
 
+static void
+gf_output_get_property (GObject    *object,
+                        guint       property_id,
+                        GValue     *value,
+                        GParamSpec *pspec)
+{
+  GfOutput *self;
+  GfOutputPrivate *priv;
+
+  self = GF_OUTPUT (object);
+  priv = gf_output_get_instance_private (self);
+
+  switch (property_id)
+    {
+      case PROP_GPU:
+        g_value_set_object (value, priv->gpu);
+        break;
+
+      default:
+        G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
+        break;
+    }
+}
+
+static void
+gf_output_set_property (GObject      *object,
+                        guint         property_id,
+                        const GValue *value,
+                        GParamSpec   *pspec)
+{
+  GfOutput *self;
+  GfOutputPrivate *priv;
+
+  self = GF_OUTPUT (object);
+  priv = gf_output_get_instance_private (self);
+
+  switch (property_id)
+    {
+      case PROP_GPU:
+        priv->gpu = g_value_get_object (value);
+        break;
+
+      default:
+        G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
+        break;
+    }
+}
+
 static void
 gf_output_class_init (GfOutputClass *output_class)
 {
@@ -82,6 +143,20 @@ gf_output_class_init (GfOutputClass *output_class)
 
   object_class->dispose = gf_output_dispose;
   object_class->finalize = gf_output_finalize;
+  object_class->get_property = gf_output_get_property;
+  object_class->set_property = gf_output_set_property;
+
+  output_properties[PROP_GPU] =
+    g_param_spec_object ("gpu",
+                         "GfGpu",
+                         "GfGpu",
+                         GF_TYPE_GPU,
+                         G_PARAM_READWRITE |
+                         G_PARAM_CONSTRUCT_ONLY |
+                         G_PARAM_STATIC_STRINGS);
+
+  g_object_class_install_properties (object_class, LAST_PROP,
+                                     output_properties);
 }
 
 static void
@@ -92,7 +167,11 @@ gf_output_init (GfOutput *output)
 GfGpu *
 gf_output_get_gpu (GfOutput *output)
 {
-  return output->gpu;
+  GfOutputPrivate *priv;
+
+  priv = gf_output_get_instance_private (output);
+
+  return priv->gpu;
 }
 
 void


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