diff --git a/render/swapchain.c b/render/swapchain.c index a50dae5c..1a12494f 100644 --- a/render/swapchain.c +++ b/render/swapchain.c @@ -85,14 +85,18 @@ struct wlr_buffer *wlr_swapchain_acquire(struct wlr_swapchain *swapchain, int *age) { struct wlr_swapchain_slot *free_slot = NULL; for (size_t i = 0; i < WLR_SWAPCHAIN_CAP; i++) { + wlr_log(WLR_DEBUG, "searching for free slot, iteration no %zu", i); struct wlr_swapchain_slot *slot = &swapchain->slots[i]; if (slot->acquired) { + wlr_log(WLR_DEBUG, "Slot no %zu is already acquired", i); continue; } if (slot->buffer != NULL) { + wlr_log(WLR_DEBUG, "Buffer for slot no %zu is not NULL, trying to acquire", i); return slot_acquire(swapchain, slot, age); } free_slot = slot; + wlr_log(WLR_DEBUG, "free_slot = slot no %zu", i); } if (free_slot == NULL) { wlr_log(WLR_ERROR, "No free output buffer slot"); diff --git a/types/wlr_output_swapchain_manager.c b/types/wlr_output_swapchain_manager.c index c2cca43c..802fea38 100644 --- a/types/wlr_output_swapchain_manager.c +++ b/types/wlr_output_swapchain_manager.c @@ -80,14 +80,18 @@ static struct wlr_swapchain *manager_output_get_swapchain( struct wlr_output *output = manager_output->output; if (swapchain_is_compatible(output->swapchain, width, height, format)) { + wlr_log(WLR_DEBUG, "output swapchain is compatible"); return output->swapchain; } if (swapchain_is_compatible(manager_output->new_swapchain, width, height, format)) { + wlr_log(WLR_DEBUG, "manager output new swapchain is compatible"); return manager_output->new_swapchain; } + wlr_log(WLR_DEBUG, "crating new swapchain"); struct wlr_swapchain *swapchain = wlr_swapchain_create(output->allocator, width, height, format); if (swapchain == NULL) { + wlr_log(WLR_DEBUG, "newly created swapchain is NULL"); return NULL; } wlr_swapchain_destroy(manager_output->new_swapchain); @@ -146,6 +150,17 @@ static bool manager_output_prepare(struct wlr_output_swapchain_manager_output *m struct wlr_buffer *buffer = wlr_swapchain_acquire(swapchain, NULL); if (buffer == NULL) { return false; + //wlr_log(WLR_DEBUG, "Failed to acquire swapchain buffer, trying to attach a new empty buffer"); + //struct wlr_output_state pending = *state; + //bool new_back_buffer = false; + //if (!output_ensure_buffer(output, &pending, &new_back_buffer)) { + // return false; + //} + //if (new_back_buffer) { + // buffer = pending.buffer; + //} else { + // return false; + //} } wlr_output_state_set_buffer(state, buffer);