diff options
| author | Ikalco <73481042+ikalco@users.noreply.github.com> | 2025-04-30 11:35:25 -0500 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-04-30 18:35:25 +0200 |
| commit | 2ee5118d7a4a59d3ccfaed305bfc05c79cea7637 (patch) | |
| tree | 7c113e64071edbc260060df7e60af9c915b3986a /src/protocols/Screencopy.cpp | |
| parent | 5d005f11fa218d26ed2cf6ce75cd9aac9c2c00e5 (diff) | |
render: properly release rendered buffers (#9807)
* cleanup eglSync
* properly release buffers in renderer
* add renderingDoneCallback and use it in screencopy
* use static constructor for CEGLSync
Diffstat (limited to 'src/protocols/Screencopy.cpp')
| -rw-r--r-- | src/protocols/Screencopy.cpp | 18 |
1 files changed, 4 insertions, 14 deletions
diff --git a/src/protocols/Screencopy.cpp b/src/protocols/Screencopy.cpp index 3862dddd..6727bcf4 100644 --- a/src/protocols/Screencopy.cpp +++ b/src/protocols/Screencopy.cpp @@ -221,21 +221,11 @@ void CScreencopyFrame::copyDmabuf(std::function<void(bool)> callback) { } g_pHyprOpenGL->m_RenderData.blockScreenShader = true; - g_pHyprRenderer->endRender(); - auto explicitOptions = g_pHyprRenderer->getExplicitSyncSettings(pMonitor->output); - if (pMonitor->inTimeline && explicitOptions.explicitEnabled) { - 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); + g_pHyprRenderer->endRender([callback]() { + LOGM(TRACE, "Copied frame via dma"); + callback(true); + }); } bool CScreencopyFrame::copyShm() { |
