On Sat, Apr 05, 2014 at 05:31:37AM +0200, Manuel Bachmann wrote: > When the alpha channel of a surface is changed and the surface > refreshed, pixman renderer will now apply a mask corresponding > to the alpha channel value. > > This allows visual effects like shell fade in, shell fade out, > window switching, to work when using pixman renderer. > > Signed-off-by: Manuel Bachmann <[email protected]> > --- > src/pixman-renderer.c | 9 ++++++++- > 1 file changed, 8 insertions(+), 1 deletion(-) > > diff --git a/src/pixman-renderer.c b/src/pixman-renderer.c > index b999343..eff7201 100644 > --- a/src/pixman-renderer.c > +++ b/src/pixman-renderer.c > @@ -340,9 +340,16 @@ repaint_region(struct weston_view *ev, struct > weston_output *output, > if (ps->buffer_ref.buffer) > wl_shm_buffer_begin_access(ps->buffer_ref.buffer->shm_buffer); > > + pixman_image_t *mask_image; > + if (ev->alpha < 1.0) { > + pixman_color_t mask = { 0x0000, 0x0000, 0x0000, > 0xffff*ev->alpha }; > + mask_image = pixman_image_create_solid_fill(&mask); > + } else > + mask_image = NULL;
I like this but it doesn't quite look right, it looks like the surface also fades from black. I also doesn't see it trigger on the close window fade anmation. And stylistically, please don't mix code and declarations (move mask_image declartion up) and use braces for both branches (the rule is both or none). > pixman_image_composite32(pixman_op, > ps->image, /* src */ > - NULL /* mask */, > + mask_image, /* mask */ > po->shadow_image, /* dest */ > 0, 0, /* src_x, src_y */ > 0, 0, /* mask_x, mask_y */ We're leaking mask_image. Kristian > -- > 1.7.10.4 > > _______________________________________________ > wayland-devel mailing list > [email protected] > http://lists.freedesktop.org/mailman/listinfo/wayland-devel _______________________________________________ wayland-devel mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/wayland-devel
