clutter/backend/native: Keep a pointer to the actual backend

This eliminates going via a global variable.

Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/2002>
This commit is contained in:
Jonas Ådahl 2021-09-16 11:31:34 +02:00 committed by Marge Bot
parent cf1715ac43
commit 1fbdfa8ca7
3 changed files with 24 additions and 3 deletions

View File

@ -117,7 +117,7 @@ meta_backend_native_dispose (GObject *object)
static ClutterBackend * static ClutterBackend *
meta_backend_native_create_clutter_backend (MetaBackend *backend) meta_backend_native_create_clutter_backend (MetaBackend *backend)
{ {
return g_object_new (META_TYPE_CLUTTER_BACKEND_NATIVE, NULL); return CLUTTER_BACKEND (meta_clutter_backend_native_new (backend));
} }
static ClutterSeat * static ClutterSeat *

View File

@ -54,6 +54,8 @@
struct _MetaClutterBackendNative struct _MetaClutterBackendNative
{ {
ClutterBackend parent; ClutterBackend parent;
MetaBackend *backend;
}; };
G_DEFINE_TYPE (MetaClutterBackendNative, meta_clutter_backend_native, G_DEFINE_TYPE (MetaClutterBackendNative, meta_clutter_backend_native,
@ -63,7 +65,9 @@ static CoglRenderer *
meta_clutter_backend_native_get_renderer (ClutterBackend *clutter_backend, meta_clutter_backend_native_get_renderer (ClutterBackend *clutter_backend,
GError **error) GError **error)
{ {
MetaBackend *backend = meta_get_backend (); MetaClutterBackendNative *clutter_backend_nativen =
META_CLUTTER_BACKEND_NATIVE (clutter_backend);
MetaBackend *backend = clutter_backend_nativen->backend;
MetaRenderer *renderer = meta_backend_get_renderer (backend); MetaRenderer *renderer = meta_backend_get_renderer (backend);
return meta_renderer_create_cogl_renderer (renderer); return meta_renderer_create_cogl_renderer (renderer);
@ -83,7 +87,9 @@ meta_clutter_backend_native_create_stage (ClutterBackend *clutter_backend,
static ClutterSeat * static ClutterSeat *
meta_clutter_backend_native_get_default_seat (ClutterBackend *clutter_backend) meta_clutter_backend_native_get_default_seat (ClutterBackend *clutter_backend)
{ {
MetaBackend *backend = meta_get_backend (); MetaClutterBackendNative *clutter_backend_nativen =
META_CLUTTER_BACKEND_NATIVE (clutter_backend);
MetaBackend *backend = clutter_backend_nativen->backend;
return meta_backend_get_default_seat (backend); return meta_backend_get_default_seat (backend);
} }
@ -109,3 +115,15 @@ meta_clutter_backend_native_class_init (MetaClutterBackendNativeClass *klass)
clutter_backend_class->get_default_seat = meta_clutter_backend_native_get_default_seat; clutter_backend_class->get_default_seat = meta_clutter_backend_native_get_default_seat;
clutter_backend_class->is_display_server = meta_clutter_backend_native_is_display_server; clutter_backend_class->is_display_server = meta_clutter_backend_native_is_display_server;
} }
MetaClutterBackendNative *
meta_clutter_backend_native_new (MetaBackend *backend)
{
MetaClutterBackendNative *clutter_backend_native;
clutter_backend_native = g_object_new (META_TYPE_CLUTTER_BACKEND_NATIVE,
NULL);
clutter_backend_native->backend = backend;
return clutter_backend_native;
}

View File

@ -27,6 +27,7 @@
#include <glib-object.h> #include <glib-object.h>
#include "backends/meta-backend-types.h"
#include "backends/native/meta-stage-native.h" #include "backends/native/meta-stage-native.h"
#include "clutter/clutter.h" #include "clutter/clutter.h"
@ -35,4 +36,6 @@ G_DECLARE_FINAL_TYPE (MetaClutterBackendNative, meta_clutter_backend_native,
META, CLUTTER_BACKEND_NATIVE, META, CLUTTER_BACKEND_NATIVE,
ClutterBackend) ClutterBackend)
MetaClutterBackendNative * meta_clutter_backend_native_new (MetaBackend *backend);
#endif /* META_CLUTTER_BACKEND_NATIVE_H */ #endif /* META_CLUTTER_BACKEND_NATIVE_H */