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.
This commit is contained in:
Neil Roberts 2011-05-13 15:29:50 +01:00
parent 701440efd8
commit d95258e987

View File

@ -5511,6 +5511,7 @@ _clutter_actor_queue_redraw_full (ClutterActor *self,
was_dirty = priv->queue_redraw_entry != NULL; was_dirty = priv->queue_redraw_entry != NULL;
self->priv->queue_redraw_entry =
_clutter_stage_queue_actor_redraw (CLUTTER_STAGE (stage), _clutter_stage_queue_actor_redraw (CLUTTER_STAGE (stage),
priv->queue_redraw_entry, priv->queue_redraw_entry,
self, self,