summaryrefslogtreecommitdiff
path: root/src/render/Renderer.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/render/Renderer.cpp
parent776f944619168e1812e7f8bee0258757fed987a4 (diff)
screencopy: fix broken shm copying
fixes #4001
Diffstat (limited to 'src/render/Renderer.cpp')
-rw-r--r--src/render/Renderer.cpp14
1 files changed, 9 insertions, 5 deletions
diff --git a/src/render/Renderer.cpp b/src/render/Renderer.cpp
index 20bcdcd2..b7b6ae96 100644
--- a/src/render/Renderer.cpp
+++ b/src/render/Renderer.cpp
@@ -2312,7 +2312,7 @@ bool CHyprRenderer::beginRender(CMonitor* pMonitor, CRegion& damage, eRenderMode
if (!m_pCurrentWlrBuffer)
return false;
} else {
- m_pCurrentWlrBuffer = buffer;
+ m_pCurrentWlrBuffer = wlr_buffer_lock(buffer);
}
try {
@@ -2331,12 +2331,16 @@ bool CHyprRenderer::beginRender(CMonitor* pMonitor, CRegion& damage, eRenderMode
void CHyprRenderer::endRender() {
const auto PMONITOR = g_pHyprOpenGL->m_RenderData.pMonitor;
- g_pHyprOpenGL->end();
+ if (m_eRenderMode != RENDER_MODE_TO_BUFFER_READ_ONLY)
+ g_pHyprOpenGL->end();
+ else {
+ g_pHyprOpenGL->m_RenderData.pMonitor = nullptr;
+ g_pHyprOpenGL->m_RenderData.mouseZoomFactor = 1.f;
+ g_pHyprOpenGL->m_RenderData.mouseZoomUseMouse = true;
+ }
- if (m_eRenderMode == RENDER_MODE_FULL_FAKE) {
- wlr_output_rollback(PMONITOR->output);
+ if (m_eRenderMode == RENDER_MODE_FULL_FAKE)
return;
- }
if (isNvidia())
glFinish();