[PATCH] compositor: fix starvation of wl_buffer::release
Matt Hoosier
matt.hoosier at gmail.com
Mon Sep 25 15:31:35 UTC 2017
This change replaces a queued emission of buffer-release events (which
is prone to starvation) with a regular event emission. This means that
client programs no longer need to secretly install surface frame
listeners just to guarantee that they get correctly notified of buffer
lifecycle events.
Signed-off-by: Matt Hoosier <matt.hoosier at gmail.com>
---
clients/nested.c | 3 +--
libweston/compositor.c | 3 +--
2 files changed, 2 insertions(+), 4 deletions(-)
diff --git a/clients/nested.c b/clients/nested.c
index e9070e9b..e2bdf684 100644
--- a/clients/nested.c
+++ b/clients/nested.c
@@ -228,8 +228,7 @@ nested_buffer_reference(struct nested_buffer_reference *ref,
ref->buffer->busy_count--;
if (ref->buffer->busy_count == 0) {
assert(wl_resource_get_client(ref->buffer->resource));
- wl_resource_queue_event(ref->buffer->resource,
- WL_BUFFER_RELEASE);
+ wl_buffer_send_release(ref->buffer->resource);
}
wl_list_remove(&ref->destroy_listener.link);
}
diff --git a/libweston/compositor.c b/libweston/compositor.c
index 813b6634..878cd535 100644
--- a/libweston/compositor.c
+++ b/libweston/compositor.c
@@ -1954,8 +1954,7 @@ weston_buffer_reference(struct weston_buffer_reference *ref,
ref->buffer->busy_count--;
if (ref->buffer->busy_count == 0) {
assert(wl_resource_get_client(ref->buffer->resource));
- wl_resource_queue_event(ref->buffer->resource,
- WL_BUFFER_RELEASE);
+ wl_buffer_send_release(ref->buffer->resource);
}
wl_list_remove(&ref->destroy_listener.link);
}
--
2.13.3
More information about the wayland-devel
mailing list