diff --git a/include/wlr/render/swapchain.h b/include/wlr/render/swapchain.h index 4ca1ac590..e09158aae 100644 --- a/include/wlr/render/swapchain.h +++ b/include/wlr/render/swapchain.h @@ -46,5 +46,9 @@ struct wlr_buffer *wlr_swapchain_acquire(struct wlr_swapchain *swapchain); */ bool wlr_swapchain_has_buffer(struct wlr_swapchain *swapchain, struct wlr_buffer *buffer); +/** + * Count how many free slots there are left in the swapchain. + */ +int wlr_swapchain_count_free_slots(const struct wlr_swapchain *swapchain); #endif diff --git a/render/swapchain.c b/render/swapchain.c index 24d6f1a87..f42507ddf 100644 --- a/render/swapchain.c +++ b/render/swapchain.c @@ -120,3 +120,12 @@ bool wlr_swapchain_has_buffer(struct wlr_swapchain *swapchain, } return false; } + +int wlr_swapchain_count_free_slots(const struct wlr_swapchain *swapchain) +{ + int count = 0; + for (size_t i = 0; i < WLR_SWAPCHAIN_CAP; i++) { + count += !swapchain->slots[i].acquired; + } + return count; +}