[Wayland-bugs] [Bug 727452] Wayland windows with non-trivial alpha get new content drawn over old
gtk+ (bugzilla.gnome.org)
bugzilla at gnome.org
Tue Apr 1 11:28:39 PDT 2014
https://bugzilla.gnome.org/show_bug.cgi?id=727452
gtk+ | Backend: Wayland | 3.12.x
--- Comment #1 from Simon McVittie <simon.mcvittie at collabora.co.uk> 2014-04-01 18:28:34 UTC ---
Created an attachment (id=273425)
View: https://bugzilla.gnome.org/attachment.cgi?id=273425
Review: https://bugzilla.gnome.org/review?bug=727452&attachment=273425
gdk_window_impl_wayland_begin_paint_region: always use an intermediate buffer
GtkWindowImplWayland tries to optimize by doing the Gtk drawing directly
into the same buffer it gives to Wayland, as long as Wayland is not
using that buffer right now.
Normally, this would be fine, because we clear that buffer to the
window's background pattern with gdk_window_clear_backing_region()
before painting it.
However, if you're making a fancy composited shell with semitransparent
bits, the background pattern might itself have an alpha channel. If it
does, at the moment we just paint it over the top of whatever happens
to be left in the buffer from the previous frame, which will shine
through any areas with non-trivial alpha.
As a quick hack around this, return TRUE, which means Gtk will
allocate a new, blank (rgba(0,0,0,0)) image surface with
gdk_wayland_window_create_similar_image_surface(), do the Gtk-level
drawing into that, and copy its contents into impl->cairo_surface
when painting has finished.
---
I know this is a hack, but it works, and might point someone towards a
better-quality solution.
--
Configure bugmail: https://bugzilla.gnome.org/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are on the CC list for the bug.
More information about the Wayland-bugs
mailing list