diff options
author | Jonas Ådahl <jadahl@gmail.com> | 2019-09-11 21:54:37 +0200 |
---|---|---|
committer | Jonas Ådahl <jadahl@gmail.com> | 2020-04-16 14:08:19 +0200 |
commit | f8ee974628504e5ca917cf03a9effdd810629332 (patch) | |
tree | 5722492190eac7a317d0fba01597d601ebfd3d71 | |
parent | f36120757f4de3eead9245335bc497c596ed88df (diff) | |
download | mutter-f8ee974628504e5ca917cf03a9effdd810629332.tar.gz |
wayland/buffer-ref: Add helpers for use count tracking
https://gitlab.gnome.org/GNOME/mutter/merge_requests/798
-rw-r--r-- | src/wayland/meta-wayland-surface.c | 39 |
1 files changed, 25 insertions, 14 deletions
diff --git a/src/wayland/meta-wayland-surface.c b/src/wayland/meta-wayland-surface.c index c3d56d74d..99f3fc58b 100644 --- a/src/wayland/meta-wayland-surface.c +++ b/src/wayland/meta-wayland-surface.c @@ -143,6 +143,29 @@ meta_wayland_buffer_ref_unref (MetaWaylandBufferRef *buffer_ref) } static void +meta_wayland_buffer_ref_inc_use_count (MetaWaylandBufferRef *buffer_ref) +{ + g_return_if_fail (buffer_ref->buffer); + g_warn_if_fail (buffer_ref->buffer->resource); + + buffer_ref->use_count++; +} + +static void +meta_wayland_buffer_ref_dec_use_count (MetaWaylandBufferRef *buffer_ref) +{ + MetaWaylandBuffer *buffer = buffer_ref->buffer; + + g_return_if_fail (buffer_ref->use_count > 0); + g_return_if_fail (buffer); + + buffer_ref->use_count--; + + if (buffer_ref->use_count == 0 && buffer->resource) + wl_buffer_send_release (buffer->resource); +} + +static void role_assignment_valist_to_properties (GType role_type, const char *first_property_name, va_list var_args, @@ -392,25 +415,13 @@ meta_wayland_surface_get_buffer (MetaWaylandSurface *surface) void meta_wayland_surface_ref_buffer_use_count (MetaWaylandSurface *surface) { - g_return_if_fail (surface->buffer_ref->buffer); - g_warn_if_fail (surface->buffer_ref->buffer->resource); - - surface->buffer_ref->use_count++; + meta_wayland_buffer_ref_inc_use_count (surface->buffer_ref); } void meta_wayland_surface_unref_buffer_use_count (MetaWaylandSurface *surface) { - MetaWaylandBuffer *buffer = surface->buffer_ref->buffer; - - g_return_if_fail (surface->buffer_ref->use_count != 0); - - surface->buffer_ref->use_count--; - - g_return_if_fail (buffer); - - if (surface->buffer_ref->use_count == 0 && buffer->resource) - wl_buffer_send_release (buffer->resource); + meta_wayland_buffer_ref_dec_use_count (surface->buffer_ref); } static void |