Skip to content

Commit 4ff0a69

Browse files
committed
wayland/buffer-ref: Add helpers for use count tracking
Original Mutter commit: https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/798/diffs?commit_id=f8ee974628504e5ca917cf03a9effdd810629332
1 parent 53ad9ff commit 4ff0a69

File tree

1 file changed

+25
-14
lines changed

1 file changed

+25
-14
lines changed

src/wayland/meta-wayland-surface.c

Lines changed: 25 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -144,6 +144,29 @@ meta_wayland_buffer_ref_unref (MetaWaylandBufferRef *buffer_ref)
144144
}
145145
}
146146

147+
static void
148+
meta_wayland_buffer_ref_inc_use_count (MetaWaylandBufferRef *buffer_ref)
149+
{
150+
g_return_if_fail (buffer_ref->buffer);
151+
g_warn_if_fail (buffer_ref->buffer->resource);
152+
153+
buffer_ref->use_count++;
154+
}
155+
156+
static void
157+
meta_wayland_buffer_ref_dec_use_count (MetaWaylandBufferRef *buffer_ref)
158+
{
159+
MetaWaylandBuffer *buffer = buffer_ref->buffer;
160+
161+
g_return_if_fail (buffer_ref->use_count > 0);
162+
g_return_if_fail (buffer);
163+
164+
buffer_ref->use_count--;
165+
166+
if (buffer_ref->use_count == 0 && buffer->resource)
167+
wl_buffer_send_release (buffer->resource);
168+
}
169+
147170
static void
148171
role_assignment_valist_to_properties (GType role_type,
149172
const char *first_property_name,
@@ -385,25 +408,13 @@ meta_wayland_surface_get_buffer (MetaWaylandSurface *surface)
385408
void
386409
meta_wayland_surface_ref_buffer_use_count (MetaWaylandSurface *surface)
387410
{
388-
g_return_if_fail (surface->buffer_ref->buffer);
389-
g_warn_if_fail (surface->buffer_ref->buffer->resource);
390-
391-
surface->buffer_ref->use_count++;
411+
meta_wayland_buffer_ref_inc_use_count (surface->buffer_ref);
392412
}
393413

394414
void
395415
meta_wayland_surface_unref_buffer_use_count (MetaWaylandSurface *surface)
396416
{
397-
MetaWaylandBuffer *buffer = surface->buffer_ref->buffer;
398-
399-
g_return_if_fail (surface->buffer_ref->use_count != 0);
400-
401-
surface->buffer_ref->use_count--;
402-
403-
g_return_if_fail (buffer);
404-
405-
if (surface->buffer_ref->use_count == 0 && buffer->resource)
406-
wl_buffer_send_release (buffer->resource);
417+
meta_wayland_buffer_ref_dec_use_count (surface->buffer_ref);
407418
}
408419

409420
static void

0 commit comments

Comments
 (0)