summaryrefslogtreecommitdiff
path: root/src/protocols/Screencopy.cpp
diff options
context:
space:
mode:
authorIkalco <73481042+ikalco@users.noreply.github.com>2025-04-30 11:35:25 -0500
committerGitHub <noreply@github.com>2025-04-30 18:35:25 +0200
commit2ee5118d7a4a59d3ccfaed305bfc05c79cea7637 (patch)
tree7c113e64071edbc260060df7e60af9c915b3986a /src/protocols/Screencopy.cpp
parent5d005f11fa218d26ed2cf6ce75cd9aac9c2c00e5 (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.cpp18
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() {