actor: Ignore the NOP paint at 0 opacity for top-levels

A top-level actor could still have 0 opacity (e.g. a Stage with the
:use-alpha property set to TRUE), but we want its children to still
be painted.

http://bugzilla.clutter-project.org/show_bug.cgi?id=2050
This commit is contained in:
Emmanuele Bassi 2010-06-24 17:19:36 +01:00
parent 1b15397120
commit 42df1a150b

View File

@ -2658,7 +2658,9 @@ clutter_actor_paint (ClutterActor *self)
/* It's an important optimization that we consider painting of
* actors with 0 opacity to be a NOP... */
if (G_LIKELY (context->pick_mode == CLUTTER_PICK_NONE) &&
if (context->pick_mode == CLUTTER_PICK_NONE &&
/* ignore top-levels, since they might be transparent */
!(CLUTTER_PRIVATE_FLAGS (self) & CLUTTER_ACTOR_IS_TOPLEVEL) &&
/* If the actor is being painted from a clone then check the
clone's opacity instead */
(priv->opacity_parent ? priv->opacity_parent->priv : priv)->opacity == 0)