Introduce MetaRenderer

MetaRenderer is meant to be the object responsible for rendering the
scene graph. It will contain the logic related to the cogl winsys
backend, the clutter backend, and the clutter stage window.

https://bugzilla.gnome.org/show_bug.cgi?id=768976
This commit is contained in:
Jonas Ådahl
2016-05-07 23:07:46 +08:00
parent 2facf26568
commit a54042e938
11 changed files with 296 additions and 0 deletions

View File

@ -63,6 +63,7 @@ struct _MetaBackendPrivate
MetaMonitorManager *monitor_manager;
MetaCursorRenderer *cursor_renderer;
MetaInputSettings *input_settings;
MetaRenderer *renderer;
ClutterBackend *clutter_backend;
ClutterActor *stage;
@ -371,11 +372,21 @@ meta_backend_real_get_relative_motion_deltas (MetaBackend *backend,
return FALSE;
}
static void
meta_backend_constructed (GObject *object)
{
MetaBackend *backend = META_BACKEND (object);
MetaBackendPrivate *priv = meta_backend_get_instance_private (backend);
priv->renderer = META_BACKEND_GET_CLASS (backend)->create_renderer (backend);
}
static void
meta_backend_class_init (MetaBackendClass *klass)
{
GObjectClass *object_class = G_OBJECT_CLASS (klass);
object_class->constructed = meta_backend_constructed;
object_class->finalize = meta_backend_finalize;
klass->post_init = meta_backend_real_post_init;
@ -450,6 +461,16 @@ meta_backend_get_cursor_renderer (MetaBackend *backend)
return priv->cursor_renderer;
}
/**
* meta_backend_get_renderer: (skip)
*/
MetaRenderer * meta_backend_get_renderer (MetaBackend *backend)
{
MetaBackendPrivate *priv = meta_backend_get_instance_private (backend);
return priv->renderer;
}
/**
* meta_backend_grab_device: (skip)
*/