[clutter] clutter-actor: Store the queue_redraw_entry when queueing a redraw



commit d95258e987178a9d1a2316db60bd89685e030929
Author: Neil Roberts <neil linux intel com>
Date:   Fri May 13 15:29:50 2011 +0100

    clutter-actor: Store the queue_redraw_entry when queueing a redraw
    
    _clutter_stage_queue_actor_redraw returns a pointer to the
    ClutterStageQueueRedrawEntry struct which it allocates. The actor is
    expected to store a pointer to this so that it doesn't need to search
    the list of queued redraws next time a queue redraw is called. However
    _clutter_actor_queue_redraw_full wasn't storing this pointer which
    meant that it thought every queue redraw was the first queue
    redraw. That meant that queueing a redraw with a clip or an effect
    would override any previous attempts to queue a redraw instead of
    trying to combine them.
    
    I think this happened because the old queue_redraw_with_clip also
    didn't store the pointer and queue_redraw_full was based on that.

 clutter/clutter-actor.c |    9 +++++----
 1 files changed, 5 insertions(+), 4 deletions(-)
---
diff --git a/clutter/clutter-actor.c b/clutter/clutter-actor.c
index 919888c..49ef0aa 100644
--- a/clutter/clutter-actor.c
+++ b/clutter/clutter-actor.c
@@ -5511,10 +5511,11 @@ _clutter_actor_queue_redraw_full (ClutterActor       *self,
 
   was_dirty = priv->queue_redraw_entry != NULL;
 
-  _clutter_stage_queue_actor_redraw (CLUTTER_STAGE (stage),
-                                     priv->queue_redraw_entry,
-                                     self,
-                                     pv);
+  self->priv->queue_redraw_entry =
+    _clutter_stage_queue_actor_redraw (CLUTTER_STAGE (stage),
+                                       priv->queue_redraw_entry,
+                                       self,
+                                       pv);
 
   if (should_free_pv)
     clutter_paint_volume_free (pv);



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]