mirror of
https://github.com/hyprwm/Hyprland.git
synced 2026-08-24 10:04:19 -05:00
renderer: fix share window projection (#13695)
This commit is contained in:
@@ -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);
|
||||
|
||||
|
||||
@@ -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<eTransform
|
||||
}
|
||||
|
||||
Mat3x3 IHyprRenderer::projectBoxToTarget(const CBox& box, std::optional<eTransform> 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<ITexture> IHyprRenderer::blurMainFramebuffer(float a, CRegion* originalDamage) {
|
||||
|
||||
@@ -77,6 +77,7 @@ enum eRenderProjectionType : uint8_t {
|
||||
RPT_MONITOR,
|
||||
RPT_MIRROR,
|
||||
RPT_FB,
|
||||
RPT_EXPORT,
|
||||
};
|
||||
|
||||
struct SRenderData {
|
||||
|
||||
Reference in New Issue
Block a user