mirror of
https://github.com/hyprwm/Hyprland
synced 2026-05-08 14:18:02 +02:00
renderer: fix share window projection (#13695)
This commit is contained in:
parent
0e083e886f
commit
8662ecba03
3 changed files with 6 additions and 2 deletions
|
|
@ -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 {
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue