summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJonas Ådahl <jadahl@gmail.com>2019-09-11 21:54:37 +0200
committerJonas Ådahl <jadahl@gmail.com>2020-04-16 14:08:19 +0200
commitf8ee974628504e5ca917cf03a9effdd810629332 (patch)
tree5722492190eac7a317d0fba01597d601ebfd3d71
parentf36120757f4de3eead9245335bc497c596ed88df (diff)
downloadmutter-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.c39
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