diff --git a/src/managers/screenshare/ScreenshareFrame.cpp b/src/managers/screenshare/ScreenshareFrame.cpp index 5a62629d9..7b8dd4282 100644 --- a/src/managers/screenshare/ScreenshareFrame.cpp +++ b/src/managers/screenshare/ScreenshareFrame.cpp @@ -298,7 +298,7 @@ void CScreenshareFrame::renderWindow() { // TODO: implement a monitor independent render mode to buffer that does this in CHyprRenderer::begin() or something like that g_pHyprRenderer->m_renderData.fbSize = m_bufferSize; - g_pHyprRenderer->setProjectionType(RPT_FB); + g_pHyprRenderer->setProjectionType(RPT_EXPORT); g_pHyprRenderer->m_renderData.transformDamage = false; g_pHyprRenderer->setViewport(0, 0, m_bufferSize.x, m_bufferSize.y); diff --git a/src/render/Renderer.cpp b/src/render/Renderer.cpp index bf3740da3..b79ca13fd 100644 --- a/src/render/Renderer.cpp +++ b/src/render/Renderer.cpp @@ -2129,6 +2129,7 @@ void IHyprRenderer::setProjectionType(eRenderProjectionType projectionType) { case RPT_MONITOR: m_renderData.targetProjection = m_renderData.pMonitor->getTransformMatrix(); break; case RPT_MIRROR: m_renderData.targetProjection = getMirrorProjection(m_renderData.pMonitor); break; case RPT_FB: m_renderData.targetProjection = getFBProjection(m_renderData.pMonitor, m_renderData.fbSize); break; + case RPT_EXPORT: m_renderData.targetProjection = Mat3x3::identity(); break; default: UNREACHABLE(); } } @@ -2140,7 +2141,9 @@ Mat3x3 IHyprRenderer::getBoxProjection(const CBox& box, std::optional transform) { - return m_renderData.pMonitor->getScaleMatrix().copy().multiply(getBoxProjection(box, transform)); + return (m_renderData.projectionType == RPT_EXPORT ? Mat3x3::outputProjection(m_renderData.fbSize, HYPRUTILS_TRANSFORM_NORMAL) : m_renderData.pMonitor->getScaleMatrix()) + .copy() + .multiply(getBoxProjection(box, transform)); } SP IHyprRenderer::blurMainFramebuffer(float a, CRegion* originalDamage) { diff --git a/src/render/Renderer.hpp b/src/render/Renderer.hpp index 1d099ee35..6f92dc505 100644 --- a/src/render/Renderer.hpp +++ b/src/render/Renderer.hpp @@ -77,6 +77,7 @@ enum eRenderProjectionType : uint8_t { RPT_MONITOR, RPT_MIRROR, RPT_FB, + RPT_EXPORT, }; struct SRenderData {