summaryrefslogtreecommitdiff
path: root/src/render
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
parent776f944619168e1812e7f8bee0258757fed987a4 (diff)
screencopy: fix broken shm copying
fixes #4001
Diffstat (limited to 'src/render')
-rw-r--r--src/render/Renderer.cpp14
-rw-r--r--src/render/Renderer.hpp7
2 files changed, 13 insertions, 8 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();
diff --git a/src/render/Renderer.hpp b/src/render/Renderer.hpp
index 3c21a84e..aaafa257 100644
--- a/src/render/Renderer.hpp
+++ b/src/render/Renderer.hpp
@@ -30,9 +30,10 @@ enum eRenderPassMode
enum eRenderMode
{
- RENDER_MODE_NORMAL = 0,
- RENDER_MODE_FULL_FAKE = 1,
- RENDER_MODE_TO_BUFFER = 2
+ RENDER_MODE_NORMAL = 0,
+ RENDER_MODE_FULL_FAKE = 1,
+ RENDER_MODE_TO_BUFFER = 2,
+ RENDER_MODE_TO_BUFFER_READ_ONLY = 3,
};
class CToplevelExportProtocolManager;