diff options
| author | Lee Bousfield <ljbousfield@gmail.com> | 2025-04-12 09:38:46 -0500 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-04-12 16:38:46 +0200 |
| commit | 0399e64274ae5c05a7a40ad78e4d4852d9957e99 (patch) | |
| tree | ab68d920b59ec2ff80e2a8c69ec6ded6a20069bc /src/protocols/Screencopy.cpp | |
| parent | 382f0f23f144e11bdccac6c5d3c1ed415b4b1855 (diff) | |
screencopy: Handle explicit sync failure (#10050)
Diffstat (limited to 'src/protocols/Screencopy.cpp')
| -rw-r--r-- | src/protocols/Screencopy.cpp | 19 |
1 files changed, 10 insertions, 9 deletions
diff --git a/src/protocols/Screencopy.cpp b/src/protocols/Screencopy.cpp index afa61f36..d5a5f816 100644 --- a/src/protocols/Screencopy.cpp +++ b/src/protocols/Screencopy.cpp @@ -231,16 +231,17 @@ void CScreencopyFrame::copyDmabuf(std::function<void(bool)> callback) { auto explicitOptions = g_pHyprRenderer->getExplicitSyncSettings(pMonitor->output); if (pMonitor->inTimeline && explicitOptions.explicitEnabled) { - pMonitor->inTimeline->addWaiter( - [callback]() { - LOGM(TRACE, "Copied frame via dma with explicit sync"); - callback(true); - }, - pMonitor->inTimelinePoint, 0); - } else { - LOGM(TRACE, "Copied frame via dma"); - callback(true); + if (pMonitor->inTimeline->addWaiter( + [callback, sync = pMonitor->eglSync]() { + LOGM(TRACE, "Copied frame via dma with explicit sync"); + callback(true); + }, + pMonitor->inTimelinePoint, 0)) + return; + // on explicit sync failure, fallthrough to immediate callback } + LOGM(TRACE, "Copied frame via dma"); + callback(true); } bool CScreencopyFrame::copyShm() { |
