fix mirrors, thanks virtcode

This commit is contained in:
Vaxry 2024-07-06 11:28:24 +02:00
parent 74971816dc
commit c6b9b292dd
2 changed files with 7 additions and 7 deletions

View file

@ -2438,11 +2438,11 @@ void CHyprOpenGLImpl::renderMirrored() {
return; return;
// replace monitor projection to undo the mirrored monitor's projection // replace monitor projection to undo the mirrored monitor's projection
matrixIdentity(monitor->projMatrix.data()); matrixIdentity(m_RenderData.monitorProjection.data());
matrixTranslate(monitor->projMatrix.data(), monitor->vecPixelSize.x / 2.0, monitor->vecPixelSize.y / 2.0); matrixTranslate(m_RenderData.monitorProjection.data(), monitor->vecPixelSize.x / 2.0, monitor->vecPixelSize.y / 2.0);
matrixTransform(monitor->projMatrix.data(), wlTransformToHyprutils(monitor->transform)); matrixTransform(m_RenderData.monitorProjection.data(), wlTransformToHyprutils(monitor->transform));
matrixTransform(monitor->projMatrix.data(), wlTransformToHyprutils(invertTransform(mirrored->transform))); matrixTransform(m_RenderData.monitorProjection.data(), wlTransformToHyprutils(invertTransform(mirrored->transform)));
matrixTranslate(monitor->projMatrix.data(), -monitor->vecTransformedSize.x / 2.0, -monitor->vecTransformedSize.y / 2.0); matrixTranslate(m_RenderData.monitorProjection.data(), -monitor->vecTransformedSize.x / 2.0, -monitor->vecTransformedSize.y / 2.0);
// clear stuff outside of mirrored area (e.g. when changing to mirrored) // clear stuff outside of mirrored area (e.g. when changing to mirrored)
clear(CColor(0, 0, 0, 0)); clear(CColor(0, 0, 0, 0));
@ -2450,7 +2450,7 @@ void CHyprOpenGLImpl::renderMirrored() {
renderTexture(PFB->m_cTex, &monbox, 1.f, 0, false, false); renderTexture(PFB->m_cTex, &monbox, 1.f, 0, false, false);
// reset matrix for further drawing // reset matrix for further drawing
monitor->updateMatrix(); m_RenderData.monitorProjection = monitor->projMatrix;
} }
void CHyprOpenGLImpl::renderSplash(cairo_t* const CAIRO, cairo_surface_t* const CAIROSURFACE, double offsetY, const Vector2D& size) { void CHyprOpenGLImpl::renderSplash(cairo_t* const CAIRO, cairo_surface_t* const CAIROSURFACE, double offsetY, const Vector2D& size) {

View file

@ -1400,7 +1400,7 @@ void CHyprRenderer::renderMonitor(CMonitor* pMonitor) {
TRACY_GPU_COLLECT; TRACY_GPU_COLLECT;
if (!pMonitor->mirrors.empty()) { if (!pMonitor->mirrors.empty()) {
CRegion frameDamage{}; CRegion frameDamage{finalDamage};
const auto TRANSFORM = invertTransform(pMonitor->transform); const auto TRANSFORM = invertTransform(pMonitor->transform);
frameDamage.transform(wlTransformToHyprutils(TRANSFORM), pMonitor->vecTransformedSize.x, pMonitor->vecTransformedSize.y); frameDamage.transform(wlTransformToHyprutils(TRANSFORM), pMonitor->vecTransformedSize.x, pMonitor->vecTransformedSize.y);