actor: Unconditionally emit ::paint
authorEmmanuele Bassi <ebassi@linux.intel.com>
Mon, 12 Mar 2012 16:19:08 +0000 (16:19 +0000)
committerEmmanuele Bassi <ebassi@linux.intel.com>
Fri, 16 Mar 2012 12:33:39 +0000 (12:33 +0000)
It's a bit late in the game for changing the emission of the paint
signal with actors that use paint nodes - mostly because we have both
implicit paint nodes (background color, content) and explicit paint
nodes (the paint_node virtual).

When we branch for 1.12 we can revert this change.

clutter/clutter-actor.c
tests/conform/test-conform-main.c

index 2a495b0..2148eb5 100644 (file)
@@ -3257,7 +3257,10 @@ clutter_actor_paint_node (ClutterActor     *actor,
 
   _clutter_paint_node_paint (root);
 
+#if 0
+  /* XXX: Uncomment this when we disable emitting the paint signal */
   CLUTTER_ACTOR_GET_CLASS (actor)->paint (actor);
+#endif
 
   return TRUE;
 }
@@ -3538,15 +3541,20 @@ clutter_actor_continue_paint (ClutterActor *self)
       if (_clutter_context_get_pick_mode () == CLUTTER_PICK_NONE)
         {
           ClutterPaintNode *dummy;
-          gboolean emit_paint;
+          gboolean emit_paint = TRUE;
 
           /* XXX - this will go away in 2.0, when we can get rid of this
            * stuff and switch to a pure retained render tree of PaintNodes
-           * for the entire frame, starting from the Stage.
+           * for the entire frame, starting from the Stage; the paint()
+           * virtual function can then be called directly.
            */
           dummy = _clutter_dummy_node_new ();
           clutter_paint_node_set_name (dummy, "Root");
-          emit_paint = !clutter_actor_paint_node (self, dummy);
+
+          /* XXX - for 1.12, we use the return value of paint_node() to
+           * set the emit_paint variable.
+           */
+          clutter_actor_paint_node (self, dummy);
           clutter_paint_node_unref (dummy);
 
           if (emit_paint || CLUTTER_ACTOR_IS_TOPLEVEL (self))
index 34fb7bb..04536ae 100644 (file)
@@ -144,7 +144,7 @@ main (int argc, char **argv)
   TEST_CONFORM_SIMPLE ("/actor", actor_preferred_size);
   TEST_CONFORM_SIMPLE ("/actor", actor_basic_layout);
   TEST_CONFORM_SIMPLE ("/actor", actor_margin_layout);
-  TEST_CONFORM_TODO ("/actor", actor_offscreen_redirect);
+  TEST_CONFORM_SIMPLE ("/actor", actor_offscreen_redirect);
   TEST_CONFORM_SIMPLE ("/actor", actor_shader_effect);
 
   TEST_CONFORM_SIMPLE ("/actor/iter", actor_iter_traverse_children);