[clutter] backend: Provide a default create_stage()
- From: Emmanuele Bassi <ebassi src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [clutter] backend: Provide a default create_stage()
- Date: Thu, 10 Nov 2011 15:06:22 +0000 (UTC)
commit 828ca2982f0f7b6974283921d59c65929385da8f
Author: Emmanuele Bassi <ebassi linux intel com>
Date: Fri Nov 4 19:00:49 2011 +0000
backend: Provide a default create_stage()
We can now safely create a ClutterStageWindow in the shared code path,
instead of deferring to the backend.
clutter/clutter-backend.c | 32 ++++++++++++++++++++++++++++++++
1 files changed, 32 insertions(+), 0 deletions(-)
---
diff --git a/clutter/clutter-backend.c b/clutter/clutter-backend.c
index 9cabfad..4f9e1e1 100644
--- a/clutter/clutter-backend.c
+++ b/clutter/clutter-backend.c
@@ -389,6 +389,37 @@ clutter_backend_real_get_features (ClutterBackend *backend)
return flags;
}
+static ClutterStageWindow *
+clutter_backend_real_create_stage (ClutterBackend *backend,
+ ClutterStage *wrapper,
+ GError **error)
+{
+ ClutterBackendClass *klass;
+
+ if (!clutter_feature_available (CLUTTER_FEATURE_STAGE_MULTIPLE))
+ {
+ ClutterStageManager *manager = clutter_stage_manager_get_default ();
+
+ if (clutter_stage_manager_get_default_stage (manager) != NULL)
+ {
+ g_set_error (error, CLUTTER_INIT_ERROR,
+ CLUTTER_INIT_ERROR_BACKEND,
+ _("The backend of type '%s' does not support "
+ "creating multiple stages"),
+ G_OBJECT_TYPE_NAME (backend));
+ return NULL;
+ }
+ }
+
+ klass = CLUTTER_BACKEND_GET_CLASS (backend);
+ g_assert (klass->stage_window_type != G_TYPE_INVALID);
+
+ return g_object_new (klass->stage_window_type,
+ "backend", backend,
+ "wrapper", wrapper,
+ NULL);
+}
+
static void
clutter_backend_real_redraw (ClutterBackend *backend,
ClutterStage *stage)
@@ -576,6 +607,7 @@ clutter_backend_class_init (ClutterBackendClass *klass)
klass->create_context = clutter_backend_real_create_context;
klass->ensure_context = clutter_backend_real_ensure_context;
klass->get_features = clutter_backend_real_get_features;
+ klass->create_stage = clutter_backend_real_create_stage;
klass->redraw = clutter_backend_real_redraw;
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]