1
0
Fork 0

actor: Use the real opacity when clearing the stage

The paint opacity for a top level is always overridden to be the full
value, since it's a composited value and we want to paint our scene.

When clearing the stage framebuffer, though, we want to use the actual
opacity, if ClutterStage:use-alpha is set.
This commit is contained in:
Emmanuele Bassi 2015-04-30 12:40:39 +01:00
parent 21ce9bc08b
commit 8b8aa0b492

View file

@ -3665,13 +3665,19 @@ clutter_actor_paint_node (ClutterActor *actor,
if (clutter_stage_get_use_alpha (CLUTTER_STAGE (actor))) if (clutter_stage_get_use_alpha (CLUTTER_STAGE (actor)))
{ {
bg_color.alpha = clutter_actor_get_paint_opacity_internal (actor) bg_color.alpha = priv->opacity
* priv->bg_color.alpha * priv->bg_color.alpha
/ 255; / 255;
} }
else else
bg_color.alpha = 255; bg_color.alpha = 255;
CLUTTER_NOTE (PAINT, "Stage clear color: (%d, %d, %d, %d)",
bg_color.red,
bg_color.green,
bg_color.blue,
bg_color.alpha);
clear_flags = COGL_BUFFER_BIT_DEPTH; clear_flags = COGL_BUFFER_BIT_DEPTH;
if (!clutter_stage_get_no_clear_hint (CLUTTER_STAGE (actor))) if (!clutter_stage_get_no_clear_hint (CLUTTER_STAGE (actor)))
clear_flags |= COGL_BUFFER_BIT_COLOR; clear_flags |= COGL_BUFFER_BIT_COLOR;