[mutter] wayland/buffer-ref: Add helpers for use count tracking



commit f8ee974628504e5ca917cf03a9effdd810629332
Author: Jonas Ådahl <jadahl gmail com>
Date:   Wed Sep 11 21:54:37 2019 +0200

    wayland/buffer-ref: Add helpers for use count tracking
    
    https://gitlab.gnome.org/GNOME/mutter/merge_requests/798

 src/wayland/meta-wayland-surface.c | 39 ++++++++++++++++++++++++--------------
 1 file 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
@@ -142,6 +142,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,
@@ -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


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]