[PATCH weston 1/8] compositor: do not release if re-attaching buffer
Pekka Paalanen
ppaalanen at gmail.com
Fri Nov 23 05:56:50 PST 2012
If a client called wl_surface.attach with the same wl_buffer as
previously, the compositor would mistakenly send a release on that
buffer. This will cause problems only when clients start to properly use
the wl_buffer.release event.
Do not send wl_buffer.release if the same buffer is attached again.
Signed-off-by: Pekka Paalanen <ppaalanen at gmail.com>
---
src/compositor.c | 8 +++++---
1 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/src/compositor.c b/src/compositor.c
index 2ca48b8..3399ad4 100644
--- a/src/compositor.c
+++ b/src/compositor.c
@@ -811,16 +811,18 @@ weston_surface_destroy(struct weston_surface *surface)
static void
weston_surface_attach(struct weston_surface *surface, struct wl_buffer *buffer)
{
- if (surface->buffer) {
+ if (surface->buffer && buffer != surface->buffer) {
weston_buffer_post_release(surface->buffer);
wl_list_remove(&surface->buffer_destroy_listener.link);
}
- if (buffer) {
+ if (buffer && buffer != surface->buffer) {
buffer->busy_count++;
wl_signal_add(&buffer->resource.destroy_signal,
&surface->buffer_destroy_listener);
- } else {
+ }
+
+ if (!buffer) {
if (weston_surface_is_mapped(surface))
weston_surface_unmap(surface);
}
--
1.7.8.6
More information about the wayland-devel
mailing list