clutter-actor: Keep is_dirty unchanged for culled actors
In a multi-monitor setup there is a separate paint run for each monitor.
If an actor doesn't intersect the first monitor painted then it is culled
out for that monitor to save time. Unfortunately this would mean
clutter_actor_paint was setting
is_dirty = FALSE before the actor had
yet been painted on any monitor.
This meant that effects like
ClutterOffscreenEffect were not receiving
CLUTTER_EFFECT_PAINT_ACTOR_DIRTY when they should have, and
so would rightfully think they don't need to do a full internal
ClutterOffscreenEffect, and probably other effects,
did not repaint correctly unless on the first monitor in the list.
The fix is to simply avoid setting
is_dirty = FALSE on those paint
runs where the actor has been culled out (
wasn't called). It is only safe to clear the flag after
clutter_actor_continue_paint has been called at least once per stage
Closes: gnome-shell#1049 (closed)