summaryrefslogtreecommitdiff
path: root/src/protocols/Screencopy.cpp
diff options
context:
space:
mode:
authorVaxry <vaxry@vaxry.net>2024-03-03 02:18:00 +0000
committerVaxry <vaxry@vaxry.net>2024-03-03 02:18:06 +0000
commitcc94123fa7d45e816327b4b8c8592589313f4718 (patch)
tree6ac33ef0fe4124f9f0f8f0c857018b2054a3d4e4 /src/protocols/Screencopy.cpp
parent2a08f2ba84ead47bd13aae5797d0d71b2e11b612 (diff)
renderer: minor fixes to transformations
Diffstat (limited to 'src/protocols/Screencopy.cpp')
-rw-r--r--src/protocols/Screencopy.cpp14
1 files changed, 8 insertions, 6 deletions
diff --git a/src/protocols/Screencopy.cpp b/src/protocols/Screencopy.cpp
index 6d0aa8bc..a0c05b22 100644
--- a/src/protocols/Screencopy.cpp
+++ b/src/protocols/Screencopy.cpp
@@ -484,9 +484,9 @@ bool CScreencopyProtocolManager::copyFrameShm(SScreencopyFrame* frame, timespec*
}
CBox monbox = CBox{0, 0, frame->pMonitor->vecTransformedSize.x, frame->pMonitor->vecTransformedSize.y}.translate({-frame->box.x, -frame->box.y});
- g_pHyprOpenGL->setMonitorTransformEnabled(false);
- g_pHyprOpenGL->renderTexture(sourceTex, &monbox, 1);
g_pHyprOpenGL->setMonitorTransformEnabled(true);
+ g_pHyprOpenGL->renderTexture(sourceTex, &monbox, 1);
+ g_pHyprOpenGL->setMonitorTransformEnabled(false);
#ifndef GLES2
glBindFramebuffer(GL_READ_FRAMEBUFFER, fb.m_iFb);
@@ -535,15 +535,17 @@ bool CScreencopyProtocolManager::copyFrameDmabuf(SScreencopyFrame* frame) {
if (!sourceTex)
return false;
- CRegion fakeDamage = {0, 0, frame->box.width, frame->box.height};
+ CRegion fakeDamage = {0, 0, INT16_MAX, INT16_MAX};
if (!g_pHyprRenderer->beginRender(frame->pMonitor, fakeDamage, RENDER_MODE_TO_BUFFER, frame->buffer))
return false;
- CBox monbox = CBox{0, 0, frame->pMonitor->vecPixelSize.x, frame->pMonitor->vecPixelSize.y}.translate({-frame->box.x, -frame->box.y});
- g_pHyprOpenGL->setMonitorTransformEnabled(false);
- g_pHyprOpenGL->renderTexture(sourceTex, &monbox, 1);
+ CBox monbox = CBox{0, 0, frame->pMonitor->vecPixelSize.x, frame->pMonitor->vecPixelSize.y}
+ .translate({-frame->box.x, -frame->box.y}) // vvvv kinda ass-backwards but that's how I designed the renderer... sigh.
+ .transform(wlr_output_transform_invert(frame->pMonitor->output->transform), frame->pMonitor->vecPixelSize.x, frame->pMonitor->vecPixelSize.y);
g_pHyprOpenGL->setMonitorTransformEnabled(true);
+ g_pHyprOpenGL->renderTexture(sourceTex, &monbox, 1);
+ g_pHyprOpenGL->setMonitorTransformEnabled(false);
g_pHyprRenderer->endRender();