[gnome-flashback] crtc: move GfGpu field to instance private
- From: Alberts Muktupāvels <muktupavels src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-flashback] crtc: move GfGpu field to instance private
- Date: Sat, 11 Jul 2020 18:41:54 +0000 (UTC)
commit 65f5aa592c616c3b4c8fad4f8a201e9ccabb03f9
Author: Alberts Muktupāvels <alberts muktupavels gmail com>
Date: Tue Jul 7 15:10:56 2020 +0300
crtc: move GfGpu field to instance private
Based on mutter commit:
https://gitlab.gnome.org/GNOME/mutter/-/commit/2ebd43cba95eea4d515a
backends/gf-crtc-private.h | 2 --
backends/gf-crtc-xrandr.c | 10 ++++--
backends/gf-crtc.c | 88 ++++++++++++++++++++++++++++++++++++++++++++--
3 files changed, 93 insertions(+), 7 deletions(-)
---
diff --git a/backends/gf-crtc-private.h b/backends/gf-crtc-private.h
index 80ced6d..3db120b 100644
--- a/backends/gf-crtc-private.h
+++ b/backends/gf-crtc-private.h
@@ -46,8 +46,6 @@ struct _GfCrtc
{
GObject parent;
- GfGpu *gpu;
-
glong crtc_id;
guint all_transforms;
diff --git a/backends/gf-crtc-xrandr.c b/backends/gf-crtc-xrandr.c
index 236bd16..49473a0 100644
--- a/backends/gf-crtc-xrandr.c
+++ b/backends/gf-crtc-xrandr.c
@@ -127,12 +127,17 @@ gf_create_xrandr_crtc (GfGpuXrandr *gpu_xrandr,
XRRScreenResources *resources)
{
+ GfGpu *gpu;
GfCrtc *crtc;
GfCrtcXrandr *crtc_xrandr;
unsigned int i;
GList *modes;
- crtc = g_object_new (GF_TYPE_CRTC, NULL);
+ gpu = GF_GPU (gpu_xrandr);
+
+ crtc = g_object_new (GF_TYPE_CRTC,
+ "gpu", gpu,
+ NULL);
crtc_xrandr = g_new0 (GfCrtcXrandr, 1);
crtc_xrandr->rect = (GfRectangle) {
@@ -146,12 +151,11 @@ gf_create_xrandr_crtc (GfGpuXrandr *gpu_xrandr,
crtc->driver_private = crtc_xrandr;
crtc->driver_notify = (GDestroyNotify) gf_crtc_destroy_notify;
- crtc->gpu = GF_GPU (gpu_xrandr);
crtc->crtc_id = crtc_id;
crtc->is_dirty = FALSE;
crtc->all_transforms = gf_monitor_transform_from_xrandr_all (xrandr_crtc->rotations);
- modes = gf_gpu_get_modes (crtc->gpu);
+ modes = gf_gpu_get_modes (gpu);
for (i = 0; i < (guint) resources->nmode; i++)
{
if (resources->modes[i].id == xrandr_crtc->mode)
diff --git a/backends/gf-crtc.c b/backends/gf-crtc.c
index 884fb05..aaea8fc 100644
--- a/backends/gf-crtc.c
+++ b/backends/gf-crtc.c
@@ -19,7 +19,25 @@
#include "config.h"
#include "gf-crtc-private.h"
-G_DEFINE_TYPE (GfCrtc, gf_crtc, G_TYPE_OBJECT)
+#include "gf-gpu-private.h"
+
+typedef struct
+{
+ GfGpu *gpu;
+} GfCrtcPrivate;
+
+enum
+{
+ PROP_0,
+
+ PROP_GPU,
+
+ LAST_PROP
+};
+
+static GParamSpec *crtc_properties[LAST_PROP] = { NULL };
+
+G_DEFINE_TYPE_WITH_PRIVATE (GfCrtc, gf_crtc, G_TYPE_OBJECT)
static void
gf_crtc_finalize (GObject *object)
@@ -36,6 +54,54 @@ gf_crtc_finalize (GObject *object)
G_OBJECT_CLASS (gf_crtc_parent_class)->finalize (object);
}
+static void
+gf_crtc_get_property (GObject *object,
+ guint property_id,
+ GValue *value,
+ GParamSpec *pspec)
+{
+ GfCrtc *self;
+ GfCrtcPrivate *priv;
+
+ self = GF_CRTC (object);
+ priv = gf_crtc_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_crtc_set_property (GObject *object,
+ guint property_id,
+ const GValue *value,
+ GParamSpec *pspec)
+{
+ GfCrtc *self;
+ GfCrtcPrivate *priv;
+
+ self = GF_CRTC (object);
+ priv = gf_crtc_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_crtc_class_init (GfCrtcClass *crtc_class)
{
@@ -44,6 +110,20 @@ gf_crtc_class_init (GfCrtcClass *crtc_class)
object_class = G_OBJECT_CLASS (crtc_class);
object_class->finalize = gf_crtc_finalize;
+ object_class->get_property = gf_crtc_get_property;
+ object_class->set_property = gf_crtc_set_property;
+
+ crtc_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,
+ crtc_properties);
}
static void
@@ -54,7 +134,11 @@ gf_crtc_init (GfCrtc *crtc)
GfGpu *
gf_crtc_get_gpu (GfCrtc *crtc)
{
- return crtc->gpu;
+ GfCrtcPrivate *priv;
+
+ priv = gf_crtc_get_instance_private (crtc);
+
+ return priv->gpu;
}
void
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]