diff options
author | Matt Hoosier <matt.hoosier@gmail.com> | 2017-09-26 08:09:40 -0500 |
---|---|---|
committer | Derek Foreman <derekf@osg.samsung.com> | 2017-09-26 11:22:45 -0500 |
commit | 3052bc7e6d9e05449908a22105a7b3c5143838e7 (patch) | |
tree | 423b96542284a2d6b9f102268092bef77209b082 /libweston | |
parent | 2a0c6c331e79b8f2926d4e3529421f8f5f592a0b (diff) |
compositor: fix starvation of wl_buffer::release
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.
v2:
More information about the historical reasons why this change hadn't
happened yet, and the consensus to finally move ahead with it can be
found at the discussion terminating in this message:
https://lists.freedesktop.org/archives/wayland-devel/2017-September/035147.html
Signed-off-by: Matt Hoosier <matt.hoosier@gmail.com>
Reviewed-by: Daniel Stone <daniels@collabora.com>
Reviewed-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
Reviewed-by: Derek Foreman <derekf@osg.samsung.com>
Diffstat (limited to 'libweston')
-rw-r--r-- | libweston/compositor.c | 3 |
1 files changed, 1 insertions, 2 deletions
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); } |