[mutter] renderer-native: Move 'backend' field to MetaRenderer



commit 704fea6323b19e8bfc83481e17fe2b26c58b68bc
Author: Jonas Ådahl <jadahl gmail com>
Date:   Tue Oct 1 11:51:53 2019 +0200

    renderer-native: Move 'backend' field to MetaRenderer
    
    So that it can be used by the generic MetaRenderer class, as well as
    other sub types, as well.
    
    https://gitlab.gnome.org/GNOME/mutter/merge_requests/838

 src/backends/meta-renderer.c                      |  72 ++++++++++++++
 src/backends/meta-renderer.h                      |   2 +
 src/backends/native/meta-renderer-native.c        | 112 ++++++----------------
 src/backends/x11/cm/meta-backend-x11-cm.c         |   4 +-
 src/backends/x11/nested/meta-backend-x11-nested.c |   4 +-
 5 files changed, 109 insertions(+), 85 deletions(-)
---
diff --git a/src/backends/meta-renderer.c b/src/backends/meta-renderer.c
index 5b480d672..06b32ca2e 100644
--- a/src/backends/meta-renderer.c
+++ b/src/backends/meta-renderer.c
@@ -48,13 +48,33 @@
 
 #include "backends/meta-backend-private.h"
 
+enum
+{
+  PROP_0,
+
+  PROP_BACKEND,
+
+  N_PROPS
+};
+
+static GParamSpec *obj_props[N_PROPS];
+
 typedef struct _MetaRendererPrivate
 {
+  MetaBackend *backend;
   GList *views;
 } MetaRendererPrivate;
 
 G_DEFINE_TYPE_WITH_PRIVATE (MetaRenderer, meta_renderer, G_TYPE_OBJECT)
 
+MetaBackend *
+meta_renderer_get_backend (MetaRenderer *renderer)
+{
+  MetaRendererPrivate *priv = meta_renderer_get_instance_private (renderer);
+
+  return priv->backend;
+}
+
 /**
  * meta_renderer_create_cogl_renderer:
  * @renderer: a #MetaRenderer object
@@ -166,6 +186,46 @@ meta_renderer_get_view_from_logical_monitor (MetaRenderer       *renderer,
   return NULL;
 }
 
+static void
+meta_renderer_get_property (GObject    *object,
+                            guint       prop_id,
+                            GValue     *value,
+                            GParamSpec *pspec)
+{
+  MetaRenderer *renderer = META_RENDERER (object);
+  MetaRendererPrivate *priv = meta_renderer_get_instance_private (renderer);
+
+  switch (prop_id)
+    {
+    case PROP_BACKEND:
+      g_value_set_object (value, priv->backend);
+      break;
+    default:
+      G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+      break;
+    }
+}
+
+static void
+meta_renderer_set_property (GObject      *object,
+                            guint         prop_id,
+                            const GValue *value,
+                            GParamSpec   *pspec)
+{
+  MetaRenderer *renderer = META_RENDERER (object);
+  MetaRendererPrivate *priv = meta_renderer_get_instance_private (renderer);
+
+  switch (prop_id)
+    {
+    case PROP_BACKEND:
+      priv->backend = g_value_get_object (value);
+      break;
+    default:
+      G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+      break;
+    }
+}
+
 static void
 meta_renderer_finalize (GObject *object)
 {
@@ -188,7 +248,19 @@ meta_renderer_class_init (MetaRendererClass *klass)
 {
   GObjectClass *object_class = G_OBJECT_CLASS (klass);
 
+  object_class->get_property = meta_renderer_get_property;
+  object_class->set_property = meta_renderer_set_property;
   object_class->finalize = meta_renderer_finalize;
 
   klass->rebuild_views = meta_renderer_real_rebuild_views;
+
+  obj_props[PROP_BACKEND] =
+    g_param_spec_object ("backend",
+                         "backend",
+                         "MetaBackend",
+                         META_TYPE_BACKEND,
+                         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-renderer.h b/src/backends/meta-renderer.h
index 478baee91..5be5d4521 100644
--- a/src/backends/meta-renderer.h
+++ b/src/backends/meta-renderer.h
@@ -46,6 +46,8 @@ struct _MetaRendererClass
   void (* rebuild_views) (MetaRenderer *renderer);
 };
 
+MetaBackend * meta_renderer_get_backend (MetaRenderer *renderer);
+
 CoglRenderer * meta_renderer_create_cogl_renderer (MetaRenderer *renderer);
 
 void meta_renderer_rebuild_views (MetaRenderer *renderer);
diff --git a/src/backends/native/meta-renderer-native.c b/src/backends/native/meta-renderer-native.c
index e15932526..9b0b861d3 100644
--- a/src/backends/native/meta-renderer-native.c
+++ b/src/backends/native/meta-renderer-native.c
@@ -83,17 +83,6 @@
 #define DRM_FORMAT_INVALID 0
 #endif
 
-enum
-{
-  PROP_0,
-
-  PROP_BACKEND,
-
-  PROP_LAST
-};
-
-static GParamSpec *obj_props[PROP_LAST];
-
 typedef enum _MetaSharedFramebufferCopyMode
 {
   /* Zero-copy: primary GPU exports, secondary GPU imports as KMS FB */
@@ -227,7 +216,6 @@ struct _MetaRendererNative
 
   MetaGpuKms *primary_gpu_kms;
 
-  MetaBackend *backend;
   MetaGles3 *gles3;
 
   gboolean use_modifiers;
@@ -353,7 +341,9 @@ get_secondary_gpu_state (CoglOnscreen *onscreen,
 static MetaEgl *
 meta_renderer_native_get_egl (MetaRendererNative *renderer_native)
 {
-  return meta_backend_get_egl (renderer_native->backend);
+  MetaRenderer *renderer = META_RENDERER (renderer_native);
+
+  return meta_backend_get_egl (meta_renderer_get_backend (renderer));
 }
 
 static MetaEgl *
@@ -1707,8 +1697,9 @@ meta_onscreen_native_flip_crtcs (CoglOnscreen  *onscreen,
   MetaOnscreenNative *onscreen_native = onscreen_egl->platform;
   MetaRendererView *view = onscreen_native->view;
   MetaRendererNative *renderer_native = onscreen_native->renderer_native;
+  MetaRenderer *renderer = META_RENDERER (renderer_native);
   MetaMonitorManager *monitor_manager =
-    meta_backend_get_monitor_manager (renderer_native->backend);
+    meta_backend_get_monitor_manager (meta_renderer_get_backend (renderer));
   MetaPowerSave power_save_mode;
   MetaLogicalMonitor *logical_monitor;
 
@@ -2266,7 +2257,8 @@ meta_onscreen_native_swap_buffers_with_damage (CoglOnscreen *onscreen,
   CoglRendererEGL *cogl_renderer_egl = cogl_renderer->winsys;
   MetaRendererNativeGpuData *renderer_gpu_data = cogl_renderer_egl->platform;
   MetaRendererNative *renderer_native = renderer_gpu_data->renderer_native;
-  MetaBackend *backend = renderer_native->backend;
+  MetaRenderer *renderer = META_RENDERER (renderer_native);
+  MetaBackend *backend = meta_renderer_get_backend (renderer);
   MetaMonitorManager *monitor_manager =
     meta_backend_get_monitor_manager (backend);
   MetaBackendNative *backend_native = META_BACKEND_NATIVE (backend);
@@ -3002,9 +2994,11 @@ _cogl_winsys_egl_vtable = {
 gboolean
 meta_renderer_native_supports_mirroring (MetaRendererNative *renderer_native)
 {
+  MetaRenderer *renderer = META_RENDERER (renderer_native);
+  MetaBackend *backend = meta_renderer_get_backend (renderer);
   GList *l;
 
-  for (l = meta_backend_get_gpus (renderer_native->backend); l; l = l->next)
+  for (l = meta_backend_get_gpus (backend); l; l = l->next)
     {
       MetaGpuKms *gpu_kms = META_GPU_KMS (l->data);
       MetaRendererNativeGpuData *renderer_gpu_data;
@@ -3252,7 +3246,8 @@ calculate_view_transform (MetaMonitorManager *monitor_manager,
 static CoglContext *
 cogl_context_from_renderer_native (MetaRendererNative *renderer_native)
 {
-  MetaBackend *backend = renderer_native->backend;
+  MetaRenderer *renderer = META_RENDERER (renderer_native);
+  MetaBackend *backend = meta_renderer_get_backend (renderer);
   ClutterBackend *clutter_backend = meta_backend_get_clutter_backend (backend);
 
   return clutter_backend_get_cogl_context (clutter_backend);
@@ -3306,7 +3301,7 @@ meta_renderer_native_create_view (MetaRenderer       *renderer,
                                   MetaLogicalMonitor *logical_monitor)
 {
   MetaRendererNative *renderer_native = META_RENDERER_NATIVE (renderer);
-  MetaBackend *backend = renderer_native->backend;
+  MetaBackend *backend = meta_renderer_get_backend (renderer);
   MetaMonitorManager *monitor_manager =
     meta_backend_get_monitor_manager (backend);
   CoglContext *cogl_context =
@@ -3414,9 +3409,8 @@ meta_renderer_native_create_view (MetaRenderer       *renderer,
 static void
 meta_renderer_native_rebuild_views (MetaRenderer *renderer)
 {
-  MetaRendererNative *renderer_native = META_RENDERER_NATIVE (renderer);
-  MetaBackendNative *backend_native =
-    META_BACKEND_NATIVE (renderer_native->backend);
+  MetaBackend *backend = meta_renderer_get_backend (renderer);
+  MetaBackendNative *backend_native = META_BACKEND_NATIVE (backend);
   MetaKms *kms = meta_backend_native_get_kms (backend_native);
   MetaRendererClass *parent_renderer_class =
     META_RENDERER_CLASS (meta_renderer_native_parent_class);
@@ -3431,7 +3425,8 @@ meta_renderer_native_rebuild_views (MetaRenderer *renderer)
 void
 meta_renderer_native_finish_frame (MetaRendererNative *renderer_native)
 {
-  MetaBackend *backend = renderer_native->backend;
+  MetaRenderer *renderer = META_RENDERER (renderer_native);
+  MetaBackend *backend = meta_renderer_get_backend (renderer);
   MetaBackendNative *backend_native = META_BACKEND_NATIVE (backend);
   MetaKms *kms = meta_backend_native_get_kms (backend_native);
   MetaKmsUpdate *kms_update = NULL;
@@ -3442,7 +3437,7 @@ meta_renderer_native_finish_frame (MetaRendererNative *renderer_native)
     {
       GList *l;
 
-      for (l = meta_backend_get_gpus (renderer_native->backend); l; l = l->next)
+      for (l = meta_backend_get_gpus (backend); l; l = l->next)
         {
           MetaGpu *gpu = l->data;
           GList *k;
@@ -3483,49 +3478,6 @@ meta_renderer_native_get_frame_counter (MetaRendererNative *renderer_native)
   return renderer_native->frame_counter;
 }
 
-static void
-meta_renderer_native_get_property (GObject    *object,
-                                   guint       prop_id,
-                                   GValue     *value,
-                                   GParamSpec *pspec)
-{
-  MetaRendererNative *renderer_native = META_RENDERER_NATIVE (object);
-
-  switch (prop_id)
-    {
-    case PROP_BACKEND:
-      g_value_set_object (value, renderer_native->backend);
-      break;
-    default:
-      G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
-      break;
-    }
-}
-
-static void
-on_gpu_added (MetaBackendNative  *backend_native,
-              MetaGpuKms         *gpu_kms,
-              MetaRendererNative *renderer_native);
-
-static void
-meta_renderer_native_set_property (GObject      *object,
-                                   guint         prop_id,
-                                   const GValue *value,
-                                   GParamSpec   *pspec)
-{
-  MetaRendererNative *renderer_native = META_RENDERER_NATIVE (object);
-
-  switch (prop_id)
-    {
-    case PROP_BACKEND:
-      renderer_native->backend = g_value_get_object (value);
-      break;
-    default:
-      G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
-      break;
-    }
-}
-
 static gboolean
 create_secondary_egl_config (MetaEgl               *egl,
                              MetaRendererNativeMode mode,
@@ -3912,7 +3864,10 @@ get_egl_device_display (MetaRendererNative  *renderer_native,
 static int
 count_drm_devices (MetaRendererNative *renderer_native)
 {
-  return g_list_length (meta_backend_get_gpus (renderer_native->backend));
+  MetaRenderer *renderer = META_RENDERER (renderer_native);
+  MetaBackend *backend = meta_renderer_get_backend (renderer);
+
+  return g_list_length (meta_backend_get_gpus (backend));
 }
 
 static MetaRendererNativeGpuData *
@@ -4083,8 +4038,9 @@ static void
 on_power_save_mode_changed (MetaMonitorManager *monitor_manager,
                             MetaRendererNative *renderer_native)
 {
-  MetaBackendNative *backend_native =
-    META_BACKEND_NATIVE (renderer_native->backend);
+  MetaRenderer *renderer = META_RENDERER (renderer_native);
+  MetaBackend *backend = meta_renderer_get_backend (renderer);
+  MetaBackendNative *backend_native = META_BACKEND_NATIVE (backend);
   MetaKms *kms = meta_backend_native_get_kms (backend_native);
   MetaPowerSave power_save_mode;
 
@@ -4174,7 +4130,8 @@ meta_renderer_native_initable_init (GInitable     *initable,
                                     GError       **error)
 {
   MetaRendererNative *renderer_native = META_RENDERER_NATIVE (initable);
-  MetaBackend *backend = renderer_native->backend;
+  MetaRenderer *renderer = META_RENDERER (renderer_native);
+  MetaBackend *backend = meta_renderer_get_backend (renderer);
   GList *gpus;
   GList *l;
 
@@ -4225,7 +4182,8 @@ static void
 meta_renderer_native_constructed (GObject *object)
 {
   MetaRendererNative *renderer_native = META_RENDERER_NATIVE (object);
-  MetaBackend *backend = renderer_native->backend;
+  MetaRenderer *renderer = META_RENDERER (renderer_native);
+  MetaBackend *backend = meta_renderer_get_backend (renderer);
   MetaSettings *settings = meta_backend_get_settings (backend);
   MetaMonitorManager *monitor_manager =
     meta_backend_get_monitor_manager (backend);
@@ -4257,24 +4215,12 @@ meta_renderer_native_class_init (MetaRendererNativeClass *klass)
   GObjectClass *object_class = G_OBJECT_CLASS (klass);
   MetaRendererClass *renderer_class = META_RENDERER_CLASS (klass);
 
-  object_class->get_property = meta_renderer_native_get_property;
-  object_class->set_property = meta_renderer_native_set_property;
   object_class->finalize = meta_renderer_native_finalize;
   object_class->constructed = meta_renderer_native_constructed;
 
   renderer_class->create_cogl_renderer = meta_renderer_native_create_cogl_renderer;
   renderer_class->create_view = meta_renderer_native_create_view;
   renderer_class->rebuild_views = meta_renderer_native_rebuild_views;
-
-  obj_props[PROP_BACKEND] =
-    g_param_spec_object ("backend",
-                         "backend",
-                         "MetaBackendNative",
-                         META_TYPE_BACKEND_NATIVE,
-                         G_PARAM_READWRITE |
-                         G_PARAM_CONSTRUCT_ONLY |
-                         G_PARAM_STATIC_STRINGS);
-  g_object_class_install_properties (object_class, PROP_LAST, obj_props);
 }
 
 MetaRendererNative *
diff --git a/src/backends/x11/cm/meta-backend-x11-cm.c b/src/backends/x11/cm/meta-backend-x11-cm.c
index ab139a767..e5ebd68f2 100644
--- a/src/backends/x11/cm/meta-backend-x11-cm.c
+++ b/src/backends/x11/cm/meta-backend-x11-cm.c
@@ -100,7 +100,9 @@ static MetaRenderer *
 meta_backend_x11_cm_create_renderer (MetaBackend *backend,
                                      GError     **error)
 {
-  return g_object_new (META_TYPE_RENDERER_X11_CM, NULL);
+  return g_object_new (META_TYPE_RENDERER_X11_CM,
+                       "backend", backend,
+                       NULL);
 }
 
 static MetaMonitorManager *
diff --git a/src/backends/x11/nested/meta-backend-x11-nested.c 
b/src/backends/x11/nested/meta-backend-x11-nested.c
index 0f022aa76..b9e7ff3b8 100644
--- a/src/backends/x11/nested/meta-backend-x11-nested.c
+++ b/src/backends/x11/nested/meta-backend-x11-nested.c
@@ -40,7 +40,9 @@ static MetaRenderer *
 meta_backend_x11_nested_create_renderer (MetaBackend *backend,
                                          GError     **error)
 {
-  return g_object_new (META_TYPE_RENDERER_X11_NESTED, NULL);
+  return g_object_new (META_TYPE_RENDERER_X11_NESTED,
+                       "backend", backend,
+                       NULL);
 }
 
 static MetaMonitorManager *


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