2008-05-13 Emmanuele Bassi <ebassi@openedhand.com>
+ * clutter/clutter-backend.c:
+ (_clutter_backend_create_stage): Call _clutter_stage_set_window()
+ ourselves, thus removing yet another action that backends must
+ implement and might get wrong; also cuts a backend-agnostic piece
+ of code duplication.
+
+ * clutter/eglnative/clutter-backend-egl.c:
+ (clutter_backend_egl_create_stage): Update the EGL native backend.
+
+ * clutter/eglx/clutter-backend-egl.c:
+ (clutter_backend_egl_create_stage): Update the EGLX backend.
+
+ * clutter/fruity/clutter-backend-fruity.c:
+ (clutter_backend_egl_create_stage): Update the fruity backend
+
+ * clutter/glx/clutter-backend-glx.c:
+ (clutter_backend_glx_create_stage): Update the GLX backend.
+
+ * clutter/sdl/clutter-backend-sdl.c:
+ (clutter_backend_sdl_create_stage): Update the SDL backend.
+
+ * HACKING.backends: Update the ::create_stage() description.
+
+2008-05-13 Emmanuele Bassi <ebassi@openedhand.com>
+
* clutter/x11/clutter-event-x11.c (event_translate): Remove the
cheap Expose event compression, as it seems to play games when a
composite manager is running. It's also not really needed, as
-- This function is used to create the stage implementation. It will
receive as an argument the ClutterStage instance that is "wrapping"
the actual implementation being created. The backend must create
- its stage implementation and call _clutter_stage_set_window() with
- the wrapper and the stage implementation instance:
-
- _clutter_stage_set_window (wrapper, CLUTTER_STAGE_WINDOW (impl));
-
- in case of error, the backend must return NULL and set the passed
- GError.
+ its stage implementation, initialise it and then return it; in case
+ of error, the backend must return NULL and set the passed GError.
Implementing the stage
----------------------
if (!stage)
return NULL;
+ g_assert (CLUTTER_IS_STAGE_WINDOW (stage));
+ _clutter_stage_set_window (wrapper, CLUTTER_STAGE_WINDOW (stage));
_clutter_stage_manager_add_stage (context->stage_manager, wrapper);
return stage;
stage_egl->backend = backend_egl;
stage_egl->wrapper = wrapper;
- _clutter_stage_set_window (wrapper, CLUTTER_STAGE_WINDOW (stage));
-
backend_egl->stage = CLUTTER_ACTOR (stage_egl);
return stage;
stage_x11->backend = backend_x11;
stage_x11->wrapper = wrapper;
- /* set the pointer back into the wrapper */
- _clutter_stage_set_window (wrapper, CLUTTER_STAGE_WINDOW (stage));
-
CLUTTER_NOTE (MISC, "EGLX stage created (display:%p, screen:%d, root:%u)",
stage_x11->xdpy,
stage_x11->xscreen,
stage_egl->backend = backend_egl;
stage_egl->wrapper = wrapper;
- _clutter_stage_set_window (wrapper, CLUTTER_STAGE_WINDOW (stage));
-
backend_egl->stage = CLUTTER_ACTOR (stage_egl);
return stage;
stage_x11->backend = backend_x11;
stage_x11->wrapper = wrapper;
- /* set the pointer back into the wrapper */
- _clutter_stage_set_window (wrapper, CLUTTER_STAGE_WINDOW (stage));
-
CLUTTER_NOTE (BACKEND, "GLX stage created (display:%p, screen:%d, root:%u)",
stage_x11->xdpy,
stage_x11->xscreen,
stage_sdl = CLUTTER_STAGE_SDL (stage);
stage_sdl->wrapper = wrapper;
- _clutter_stage_set_window (wrapper, CLUTTER_STAGE_WINDOW (stage));
-
backend_sdl->stage = stage_sdl;
return stage;