diff options
| author | Vaxry <vaxry@vaxry.net> | 2023-11-30 10:14:35 +0000 |
|---|---|---|
| committer | Vaxry <vaxry@vaxry.net> | 2023-11-30 10:14:35 +0000 |
| commit | b9937484f4deefbc07c5fc3483d15885068e975d (patch) | |
| tree | 4705ee3b239c8ab56817c74a1df8ab04adbb9e04 /src/protocols/ToplevelExport.cpp | |
| parent | 776f944619168e1812e7f8bee0258757fed987a4 (diff) | |
screencopy: fix broken shm copying
fixes #4001
Diffstat (limited to 'src/protocols/ToplevelExport.cpp')
| -rw-r--r-- | src/protocols/ToplevelExport.cpp | 7 |
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; } |
