[mutter] renderer-native: Move 'backend' field to MetaRenderer
- From: Jonas Ådahl <jadahl src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [mutter] renderer-native: Move 'backend' field to MetaRenderer
- Date: Thu, 20 Feb 2020 11:14:33 +0000 (UTC)
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]