portals: application of the retries count in hlOnBufferDone (#255)

This commit is contained in:
Alexandre Acebedo 2024-09-02 00:02:23 +02:00 committed by GitHub
parent d4c2b983c8
commit 11e15b437e
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -271,11 +271,17 @@ static void hlOnBufferDone(void* data, hyprland_toplevel_export_frame_v1* frame)
PSESSION->sharingData.windowFrameCallback = nullptr; PSESSION->sharingData.windowFrameCallback = nullptr;
Debug::log(LOG, "[screencopy/pipewire] Out of buffers"); Debug::log(LOG, "[screencopy/pipewire] Out of buffers");
PSESSION->sharingData.status = FRAME_NONE; PSESSION->sharingData.status = FRAME_NONE;
if (PSESSION->sharingData.copyRetries++ < MAX_RETRIES) {
Debug::log(LOG, "[sc] Retrying screencopy ({}/{})", PSESSION->sharingData.copyRetries, MAX_RETRIES);
g_pPortalManager->m_sPortals.screencopy->m_pPipewire->updateStreamParam(PSTREAM);
g_pPortalManager->m_sPortals.screencopy->queueNextShareFrame(PSESSION);
}
return; return;
} }
hyprland_toplevel_export_frame_v1_copy(frame, PSTREAM->currentPWBuffer->wlBuffer, false); hyprland_toplevel_export_frame_v1_copy(frame, PSTREAM->currentPWBuffer->wlBuffer, false);
PSESSION->sharingData.copyRetries = 0;
Debug::log(TRACE, "[sc] wlr frame copied"); Debug::log(TRACE, "[sc] wlr frame copied");
} }