diff --git a/clutter/clutter-actor.c b/clutter/clutter-actor.c
index 95b9a7b97..87aba079a 100644
--- a/clutter/clutter-actor.c
+++ b/clutter/clutter-actor.c
@@ -4832,23 +4832,25 @@ clutter_actor_class_init (ClutterActorClass *klass)
* The default implementation for #ClutterActor chains up to the
* parent actor and queues a redraw on the parent, thus "bubbling"
* the redraw queue up through the actor graph. The default
- * implementation for #ClutterStage queues a clutter_redraw() in a
- * main loop idle handler.
+ * implementation for #ClutterStage queues a clutter_stage_ensure_redraw()
+ * in a main loop idle handler.
*
* Note that the @origin actor may be the stage, or a container; it
* does not have to be a leaf node in the actor graph.
*
* Toolkits embedding a #ClutterStage which require a redraw and
* relayout cycle can stop the emission of this signal using the
- * GSignal API, redraw the UI and then call clutter_redraw()
+ * GSignal API, redraw the UI and then call clutter_stage_ensure_redraw()
* themselves, like:
*
* |[
* static void
- * on_redraw_complete (void)
+ * on_redraw_complete (gpointer data)
* {
+ * ClutterStage *stage = data;
+ *
* /* execute the Clutter drawing pipeline */
- * clutter_redraw ();
+ * clutter_stage_ensure_redraw (stage);
* }
*
* static void
@@ -4860,7 +4862,7 @@ clutter_actor_class_init (ClutterActorClass *klass)
* /* queue a redraw with the host toolkit and call
* * a function when the redraw has been completed
* */
- * queue_a_redraw (G_CALLBACK (on_redraw_complete));
+ * queue_a_redraw (G_CALLBACK (on_redraw_complete), stage);
* }
* ]|
*
diff --git a/clutter/clutter-backend.c b/clutter/clutter-backend.c
index 80e4853d0..7243cac8a 100644
--- a/clutter/clutter-backend.c
+++ b/clutter/clutter-backend.c
@@ -465,7 +465,7 @@ _clutter_backend_ensure_context (ClutterBackend *backend,
{
new_stage = NULL;
- CLUTTER_NOTE (MULTISTAGE,
+ CLUTTER_NOTE (BACKEND,
"Stage [%p] is not realized, unsetting the stage",
stage);
}
@@ -473,7 +473,7 @@ _clutter_backend_ensure_context (ClutterBackend *backend,
{
new_stage = stage;
- CLUTTER_NOTE (MULTISTAGE,
+ CLUTTER_NOTE (BACKEND,
"Setting the new stage [%p]",
new_stage);
}
@@ -515,7 +515,7 @@ _clutter_backend_ensure_context (ClutterBackend *backend,
current_context_stage = new_stage;
}
else
- CLUTTER_NOTE (MULTISTAGE, "Stage is the same");
+ CLUTTER_NOTE (BACKEND, "Stage is the same");
}
diff --git a/clutter/clutter-bezier.c b/clutter/clutter-bezier.c
index f4c480c1d..7b6ba3cbb 100644
--- a/clutter/clutter-bezier.c
+++ b/clutter/clutter-bezier.c
@@ -180,7 +180,7 @@ _clutter_bezier_advance (const ClutterBezier *b, gint L, ClutterKnot * knot)
knot->x = _clutter_bezier_t2x (b, t);
knot->y = _clutter_bezier_t2y (b, t);
- CLUTTER_NOTE (BEHAVIOUR, "advancing to relative pt %f: t %f, {%d,%d}",
+ CLUTTER_NOTE (MISC, "advancing to relative pt %f: t %f, {%d,%d}",
(double) L / (double) CBZ_T_ONE,
(double) t / (double) CBZ_T_ONE,
knot->x, knot->y);
diff --git a/clutter/clutter-debug.h b/clutter/clutter-debug.h
index 88b7fcec3..9cd02b2e0 100644
--- a/clutter/clutter-debug.h
+++ b/clutter/clutter-debug.h
@@ -13,21 +13,18 @@ typedef enum {
CLUTTER_DEBUG_TEXTURE = 1 << 2,
CLUTTER_DEBUG_EVENT = 1 << 3,
CLUTTER_DEBUG_PAINT = 1 << 4,
- CLUTTER_DEBUG_GL = 1 << 5,
- CLUTTER_DEBUG_ALPHA = 1 << 6,
- CLUTTER_DEBUG_BEHAVIOUR = 1 << 7,
- CLUTTER_DEBUG_PANGO = 1 << 8,
- CLUTTER_DEBUG_BACKEND = 1 << 9,
- CLUTTER_DEBUG_SCHEDULER = 1 << 10,
- CLUTTER_DEBUG_SCRIPT = 1 << 11,
- CLUTTER_DEBUG_SHADER = 1 << 12,
- CLUTTER_DEBUG_MULTISTAGE = 1 << 13,
- CLUTTER_DEBUG_ANIMATION = 1 << 14,
- CLUTTER_DEBUG_LAYOUT = 1 << 15,
- CLUTTER_DEBUG_PICK = 1 << 16,
- CLUTTER_DEBUG_EVENTLOOP = 1 << 17,
- CLUTTER_DEBUG_CLIPPING = 1 << 18,
- CLUTTER_DEBUG_OOB_TRANSFORMS = 1 << 19
+ CLUTTER_DEBUG_PANGO = 1 << 5,
+ CLUTTER_DEBUG_BACKEND = 1 << 6,
+ CLUTTER_DEBUG_SCHEDULER = 1 << 7,
+ CLUTTER_DEBUG_SCRIPT = 1 << 8,
+ CLUTTER_DEBUG_SHADER = 1 << 9,
+ CLUTTER_DEBUG_MULTISTAGE = 1 << 10,
+ CLUTTER_DEBUG_ANIMATION = 1 << 11,
+ CLUTTER_DEBUG_LAYOUT = 1 << 12,
+ CLUTTER_DEBUG_PICK = 1 << 13,
+ CLUTTER_DEBUG_EVENTLOOP = 1 << 14,
+ CLUTTER_DEBUG_CLIPPING = 1 << 15,
+ CLUTTER_DEBUG_OOB_TRANSFORMS = 1 << 16
} ClutterDebugFlag;
typedef enum {
diff --git a/clutter/clutter-layout-manager.c b/clutter/clutter-layout-manager.c
index 9f17f52b2..70bcecc7b 100644
--- a/clutter/clutter-layout-manager.c
+++ b/clutter/clutter-layout-manager.c
@@ -75,38 +75,10 @@
* set_container() virtual function. The layout manager
* should not hold a real reference (i.e. call g_object_ref()) on the
* container actor, to avoid reference cycles.
- * If the layout manager has properties affecting the layout
+ * If a layout manager has properties affecting the layout
* policies then it should emit the #ClutterLayoutManager::layout-changed
* signal on itself by using the clutter_layout_manager_layout_changed()
* function whenever one of these properties changes.
- * If the layout manager has layout properties, that is properties that
- * should exist only as the result of the presence of a specific (layout
- * manager, container actor, child actor) combination, and it wishes to store
- * those properties inside a #ClutterLayoutMeta then it should override the
- * ClutterLayoutManager::get_child_meta_type()
- * virtual function to return the #GType of the #ClutterLayoutMeta sub-class
- * used to store the layout properties; optionally, the #ClutterLayoutManager
- * sub-class might also override the
- * ClutterLayoutManager::create_child_meta() virtual
- * function to control how the #ClutterLayoutMeta instance is created,
- * otherwise the default implementation will be equivalent to:
- *
- * ClutterLayoutManagerClass *klass;
- * GType meta_type;
- *
- * klass = CLUTTER_LAYOUT_MANAGER_GET_CLASS (manager);
- * meta_type = klass->get_child_meta_type (manager);
- *
- * return g_object_new (meta_type,
- * "manager", manager,
- * "container", container,
- * "actor", actor,
- * NULL);
- *
- * Where manager is the #ClutterLayoutManager,
- * container is the #ClutterContainer using the
- * #ClutterLayoutManager and actor is the #ClutterActor
- * child of the #ClutterContainer.
*
*
*
@@ -279,6 +251,79 @@
* orientation layout property of a layout manager.
*
*
+ *
+ * Layout Properties
+ * If a layout manager has layout properties, that is properties that
+ * should exist only as the result of the presence of a specific (layout
+ * manager, container actor, child actor) combination, and it wishes to store
+ * those properties inside a #ClutterLayoutMeta, then it should override the
+ * ClutterLayoutManager::get_child_meta_type()
+ * virtual function to return the #GType of the #ClutterLayoutMeta sub-class
+ * used to store the layout properties; optionally, the #ClutterLayoutManager
+ * sub-class might also override the
+ * ClutterLayoutManager::create_child_meta() virtual
+ * function to control how the #ClutterLayoutMeta instance is created,
+ * otherwise the default implementation will be equivalent to:
+ *
+ * ClutterLayoutManagerClass *klass;
+ * GType meta_type;
+ *
+ * klass = CLUTTER_LAYOUT_MANAGER_GET_CLASS (manager);
+ * meta_type = klass->get_child_meta_type (manager);
+ *
+ * return g_object_new (meta_type,
+ * "manager", manager,
+ * "container", container,
+ * "actor", actor,
+ * NULL);
+ *
+ * Where manager is the #ClutterLayoutManager,
+ * container is the #ClutterContainer using the
+ * #ClutterLayoutManager and actor is the #ClutterActor
+ * child of the #ClutterContainer.
+ *
+ *
+ *
+ * Using ClutterLayoutManager with ClutterScript
+ * #ClutterLayoutManager instance can be created in the same way
+ * as other objects in #ClutterScript; properties can be set using the
+ * common syntax.
+ * Layout properties can be set on children of a container with
+ * a #ClutterLayoutManager using the layout::
+ * modifier on the property name, for instance:
+ *
+ * {
+ * "type" : "ClutterBox",
+ * "layout-manager" : { "type" : "ClutterTableLayout" },
+ * "children" : [
+ * {
+ * "type" : "ClutterTexture",
+ * "filename" : "image-00.png",
+ *
+ * "layout::row" : 0,
+ * "layout::column" : 0,
+ * "layout::x-align" : "left",
+ * "layout::y-align" : "center",
+ * "layout::x-expand" : true,
+ * "layout::y-expand" : true
+ * },
+ * {
+ * "type" : "ClutterTexture",
+ * "filename" : "image-01.png",
+ *
+ * "layout::row" : 0,
+ * "layout::column" : 1,
+ * "layout::x-align" : "right",
+ * "layout::y-align" : "center",
+ * "layout::x-expand" : true,
+ * "layout::y-expand" : true
+ * }
+ * ]
+ * }
+ *
+ *
+ *
+ *
* #ClutterLayoutManager is available since Clutter 1.2
*/
diff --git a/clutter/clutter-main.c b/clutter/clutter-main.c
index d31b44485..7d4d8159a 100644
--- a/clutter/clutter-main.c
+++ b/clutter/clutter-main.c
@@ -163,15 +163,11 @@ static const GDebugKey clutter_debug_keys[] = {
{ "event", CLUTTER_DEBUG_EVENT },
{ "paint", CLUTTER_DEBUG_PAINT },
{ "pick", CLUTTER_DEBUG_PICK },
- { "gl", CLUTTER_DEBUG_GL },
- { "alpha", CLUTTER_DEBUG_ALPHA },
- { "behaviour", CLUTTER_DEBUG_BEHAVIOUR },
{ "pango", CLUTTER_DEBUG_PANGO },
{ "backend", CLUTTER_DEBUG_BACKEND },
{ "scheduler", CLUTTER_DEBUG_SCHEDULER },
{ "script", CLUTTER_DEBUG_SCRIPT },
{ "shader", CLUTTER_DEBUG_SHADER },
- { "multistage", CLUTTER_DEBUG_MULTISTAGE },
{ "animation", CLUTTER_DEBUG_ANIMATION },
{ "layout", CLUTTER_DEBUG_LAYOUT },
{ "clipping", CLUTTER_DEBUG_CLIPPING },
@@ -3333,7 +3329,7 @@ clutter_threads_add_repaint_func (GSourceFunc func,
* Executes the repaint functions added using the
* clutter_threads_add_repaint_func() function.
*
- * Must be called before calling clutter_redraw() and
+ * Must be called before calling _clutter_stage_do_paint() and
* with the Clutter thread lock held.
*/
void
diff --git a/clutter/clutter-master-clock.c b/clutter/clutter-master-clock.c
index ce8d70bc2..21a86d579 100644
--- a/clutter/clutter-master-clock.c
+++ b/clutter/clutter-master-clock.c
@@ -532,8 +532,8 @@ _clutter_master_clock_start_running (ClutterMasterClock *master_clock)
* @master_clock: a #ClutterMasterClock
*
* Advances all the timelines held by the master clock. This function
- * should be called before calling clutter_redraw() to make sure that
- * all the timelines are advanced and the scene is updated.
+ * should be called before calling _clutter_stage_do_update() to
+ * make sure that all the timelines are advanced and the scene is updated.
*/
void
_clutter_master_clock_advance (ClutterMasterClock *master_clock)
diff --git a/clutter/deprecated/clutter-behaviour-depth.c b/clutter/deprecated/clutter-behaviour-depth.c
index 28eb3c058..fd329b52c 100644
--- a/clutter/deprecated/clutter-behaviour-depth.c
+++ b/clutter/deprecated/clutter-behaviour-depth.c
@@ -91,7 +91,7 @@ clutter_behaviour_depth_alpha_notify (ClutterBehaviour *behaviour,
depth = (alpha_value * (priv->depth_end - priv->depth_start))
+ priv->depth_start;
- CLUTTER_NOTE (BEHAVIOUR, "alpha: %.4f, depth: %d", alpha_value, depth);
+ CLUTTER_NOTE (ANIMATION, "alpha: %.4f, depth: %d", alpha_value, depth);
clutter_behaviour_actors_foreach (behaviour,
alpha_notify_foreach,
diff --git a/clutter/deprecated/clutter-behaviour-ellipse.c b/clutter/deprecated/clutter-behaviour-ellipse.c
index ab2cf60f8..ab05acab6 100644
--- a/clutter/deprecated/clutter-behaviour-ellipse.c
+++ b/clutter/deprecated/clutter-behaviour-ellipse.c
@@ -176,7 +176,7 @@ clutter_behaviour_ellipse_advance (ClutterBehaviourEllipse *e,
knot->y = y;
knot->z = z;
- CLUTTER_NOTE (BEHAVIOUR, "advancing to angle %.2f [%d, %d] (a: %d, b: %d)",
+ CLUTTER_NOTE (ANIMATION, "advancing to angle %.2f [%d, %d] (a: %d, b: %d)",
angle,
knot->x, knot->y,
priv->a, priv->b);
diff --git a/clutter/deprecated/clutter-behaviour-opacity.c b/clutter/deprecated/clutter-behaviour-opacity.c
index 072b28fa1..bfd2f0cc8 100644
--- a/clutter/deprecated/clutter-behaviour-opacity.c
+++ b/clutter/deprecated/clutter-behaviour-opacity.c
@@ -97,7 +97,7 @@ clutter_behaviour_alpha_notify (ClutterBehaviour *behave,
* (priv->opacity_end - priv->opacity_start)
+ priv->opacity_start;
- CLUTTER_NOTE (BEHAVIOUR, "alpha: %.4f, opacity: %u",
+ CLUTTER_NOTE (ANIMATION, "alpha: %.4f, opacity: %u",
alpha_value,
opacity);
diff --git a/clutter/deprecated/clutter-behaviour-path.c b/clutter/deprecated/clutter-behaviour-path.c
index 48ada7ed8..69e94d7e4 100644
--- a/clutter/deprecated/clutter-behaviour-path.c
+++ b/clutter/deprecated/clutter-behaviour-path.c
@@ -128,7 +128,7 @@ actor_apply_knot_foreach (ClutterBehaviour *behaviour,
{
ClutterKnot *knot = data;
- CLUTTER_NOTE (BEHAVIOUR, "Setting actor to %ix%i", knot->x, knot->y);
+ CLUTTER_NOTE (ANIMATION, "Setting actor to %ix%i", knot->x, knot->y);
clutter_actor_set_position (actor, knot->x, knot->y);
}
diff --git a/clutter/deprecated/clutter-behaviour.c b/clutter/deprecated/clutter-behaviour.c
index 1cbdbe742..c79e53284 100644
--- a/clutter/deprecated/clutter-behaviour.c
+++ b/clutter/deprecated/clutter-behaviour.c
@@ -518,17 +518,17 @@ notify_cb (GObject *object,
klass = CLUTTER_BEHAVIOUR_GET_CLASS (behave);
- CLUTTER_NOTE (BEHAVIOUR, "notify::alpha");
+ CLUTTER_NOTE (ANIMATION, "notify::alpha");
/* no actors, we can stop right here */
if (behave->priv->actors == NULL)
return;
- if (klass->alpha_notify)
+ if (klass->alpha_notify != NULL)
{
gdouble alpha_value = clutter_alpha_get_alpha (behave->priv->alpha);
- CLUTTER_NOTE (BEHAVIOUR, "calling %s::alpha_notify (%p, %.4f)",
+ CLUTTER_NOTE (ANIMATION, "calling %s::alpha_notify (%p, %.4f)",
g_type_name (G_TYPE_FROM_CLASS (klass)),
behave, alpha_value);
@@ -571,7 +571,7 @@ clutter_behaviour_set_alpha (ClutterBehaviour *behave,
if (priv->notify_id)
{
- CLUTTER_NOTE (BEHAVIOUR, "removing previous notify-id (%d)",
+ CLUTTER_NOTE (ANIMATION, "removing previous notify-id (%d)",
priv->notify_id);
g_signal_handler_disconnect (priv->alpha, priv->notify_id);
@@ -580,7 +580,7 @@ clutter_behaviour_set_alpha (ClutterBehaviour *behave,
if (priv->alpha != NULL)
{
- CLUTTER_NOTE (BEHAVIOUR, "removing previous alpha object");
+ CLUTTER_NOTE (ANIMATION, "removing previous alpha object");
g_object_unref (priv->alpha);
priv->alpha = NULL;
@@ -594,7 +594,7 @@ clutter_behaviour_set_alpha (ClutterBehaviour *behave,
G_CALLBACK(notify_cb),
behave);
- CLUTTER_NOTE (BEHAVIOUR, "setting new alpha object (%p, notify:%d)",
+ CLUTTER_NOTE (ANIMATION, "setting new alpha object (%p, notify:%d)",
priv->alpha, priv->notify_id);
}
diff --git a/clutter/wayland/clutter-backend-wayland.c b/clutter/wayland/clutter-backend-wayland.c
index c21b81a11..56c23a251 100644
--- a/clutter/wayland/clutter-backend-wayland.c
+++ b/clutter/wayland/clutter-backend-wayland.c
@@ -401,7 +401,7 @@ try_create_context (ClutterBackend *backend,
goto fail;
}
- CLUTTER_NOTE (GL, "Created EGL Context");
+ CLUTTER_NOTE (BACKEND, "Created EGL Context");
}
if (!eglMakeCurrent (backend_wayland->edpy,
diff --git a/clutter/win32/clutter-event-win32.c b/clutter/win32/clutter-event-win32.c
index 287495ee3..197f665ad 100644
--- a/clutter/win32/clutter-event-win32.c
+++ b/clutter/win32/clutter-event-win32.c
@@ -440,8 +440,8 @@ clutter_win32_handle_event (const MSG *msg)
break;
case WM_PAINT:
- CLUTTER_NOTE (MULTISTAGE, "expose for stage:%p, redrawing", stage);
- clutter_redraw (stage);
+ CLUTTER_NOTE (BACKEND, "expose for stage:%p, redrawing", stage);
+ clutter_stage_ensure_redraw (stage);
break;
case WM_DESTROY:
diff --git a/doc/reference/clutter/running-clutter.xml b/doc/reference/clutter/running-clutter.xml
index 94cd2cd66..73b1d34bf 100644
--- a/doc/reference/clutter/running-clutter.xml
+++ b/doc/reference/clutter/running-clutter.xml
@@ -60,13 +60,20 @@
CLUTTER_DEBUG
- Enables debugging modes for Clutter.
+ Enables debugging modes for Clutter; debugging modes are
+ used to print debugging messages on the console. Clutter must be
+ compiled with the --enable-debug configuration switch for these
+ messages to be printed out. Multiple debugging modes can be
+ enabled by separating them using a colon (":") or a comma
+ (",").
- COGL_DEBUG
+ CLUTTER_PAINT
- Enables debugging modes for Cogl.
+ Enables paint debugging modes for Clutter; the modes change
+ the way Clutter paints a scene and are useful for debugging the
+ behaviour of the paint cycle.
@@ -177,7 +184,7 @@
The debugging flags can be used for the CLUTTER_DEBUG environment
variable and the --clutter-debug command line switch. Multiple flags can
- be separated by a colon (:).
+ be separated by a colon (:) or a comma (,).