summaryrefslogtreecommitdiff
path: root/src/protocols/ToplevelExport.cpp
diff options
context:
space:
mode:
authorVaxry <vaxry@vaxry.net>2023-11-30 10:14:35 +0000
committerVaxry <vaxry@vaxry.net>2023-11-30 10:14:35 +0000
commitb9937484f4deefbc07c5fc3483d15885068e975d (patch)
tree4705ee3b239c8ab56817c74a1df8ab04adbb9e04 /src/protocols/ToplevelExport.cpp
parent776f944619168e1812e7f8bee0258757fed987a4 (diff)
screencopy: fix broken shm copying
fixes #4001
Diffstat (limited to 'src/protocols/ToplevelExport.cpp')
-rw-r--r--src/protocols/ToplevelExport.cpp7
1 files changed, 6 insertions, 1 deletions
diff --git a/src/protocols/ToplevelExport.cpp b/src/protocols/ToplevelExport.cpp
index 6c626e87..ef9906d9 100644
--- a/src/protocols/ToplevelExport.cpp
+++ b/src/protocols/ToplevelExport.cpp
@@ -363,7 +363,12 @@ bool CToplevelExportProtocolManager::copyFrameShm(SScreencopyFrame* frame, times
const auto PMONITOR = g_pCompositor->getMonitorFromID(frame->pWindow->m_iMonitorID);
CRegion fakeDamage{0, 0, PMONITOR->vecPixelSize.x * 10, PMONITOR->vecPixelSize.y * 10};
- if (!g_pHyprRenderer->beginRender(PMONITOR, fakeDamage, RENDER_MODE_FULL_FAKE)) {
+ g_pHyprRenderer->makeEGLCurrent();
+
+ CFramebuffer outFB;
+ outFB.alloc(PMONITOR->vecPixelSize.x, PMONITOR->vecPixelSize.y);
+
+ if (!g_pHyprRenderer->beginRender(PMONITOR, fakeDamage, RENDER_MODE_FULL_FAKE, nullptr, &outFB)) {
wlr_buffer_end_data_ptr_access(frame->buffer);
return false;
}