pass: overload TexPass constructor

overload it with a rvalue to allow us to move the data directly avoiding
an extra copy. because SRenderData is not trivially copyable.
This commit is contained in:
Tom Englund 2025-07-04 09:58:37 +02:00 committed by Vaxry
parent c75f85098c
commit bb958a9e13
10 changed files with 17 additions and 12 deletions

View file

@ -2537,7 +2537,7 @@ void CHyprOpenGLImpl::renderMirrored() {
.transform(wlTransformToHyprutils(invertTransform(mirrored->m_transform)))
.translate(-monitor->m_transformedSize / 2.0);
g_pHyprRenderer->m_renderPass.add(makeShared<CTexPassElement>(data));
g_pHyprRenderer->m_renderPass.add(makeShared<CTexPassElement>(std::move(data)));
}
void CHyprOpenGLImpl::renderSplash(cairo_t* const CAIRO, cairo_surface_t* const CAIROSURFACE, double offsetY, const Vector2D& size) {
@ -2927,7 +2927,7 @@ void CHyprOpenGLImpl::clearWithTex() {
data.box = {0, 0, m_renderData.pMonitor->m_transformedSize.x, m_renderData.pMonitor->m_transformedSize.y};
data.flipEndFrame = true;
data.tex = TEXIT->second.getTexture();
g_pHyprRenderer->m_renderPass.add(makeShared<CTexPassElement>(data));
g_pHyprRenderer->m_renderPass.add(makeShared<CTexPassElement>(std::move(data)));
}
}

View file

@ -2488,7 +2488,7 @@ void CHyprRenderer::renderSnapshot(PHLWINDOW pWindow) {
data.roundingPower = pWindow->roundingPower();
data.xray = pWindow->m_windowData.xray.valueOr(false);
m_renderPass.add(makeShared<CRectPassElement>(data));
m_renderPass.add(makeShared<CRectPassElement>(std::move(data)));
}
CTexPassElement::SRenderData data;
@ -2498,7 +2498,7 @@ void CHyprRenderer::renderSnapshot(PHLWINDOW pWindow) {
data.a = pWindow->m_alpha->value();
data.damage = fakeDamage;
m_renderPass.add(makeShared<CTexPassElement>(data));
m_renderPass.add(makeShared<CTexPassElement>(std::move(data)));
}
void CHyprRenderer::renderSnapshot(PHLLS pLayer) {
@ -2540,7 +2540,7 @@ void CHyprRenderer::renderSnapshot(PHLLS pLayer) {
if (SHOULD_BLUR)
data.ignoreAlpha = pLayer->m_ignoreAlpha ? pLayer->m_ignoreAlphaValue : 0.01F /* ignore the alpha 0 regions */;
m_renderPass.add(makeShared<CTexPassElement>(data));
m_renderPass.add(makeShared<CTexPassElement>(std::move(data)));
}
bool CHyprRenderer::shouldBlur(PHLLS ls) {

View file

@ -256,7 +256,7 @@ void CHyprGroupBarDecoration::draw(PHLMONITOR pMonitor, float const& a) {
data.tex = titleTex;
data.box = rect;
data.a = a;
g_pHyprRenderer->m_renderPass.add(makeShared<CTexPassElement>(data));
g_pHyprRenderer->m_renderPass.add(makeShared<CTexPassElement>(std::move(data)));
}
}

View file

@ -4,7 +4,11 @@
#include <hyprutils/utils/ScopeGuard.hpp>
using namespace Hyprutils::Utils;
CTexPassElement::CTexPassElement(const CTexPassElement::SRenderData& data_) : m_data(data_) {
CTexPassElement::CTexPassElement(const SRenderData& data) : m_data(data) {
;
}
CTexPassElement::CTexPassElement(CTexPassElement::SRenderData&& data) : m_data(std::move(data)) {
;
}

View file

@ -24,6 +24,7 @@ class CTexPassElement : public IPassElement {
};
CTexPassElement(const SRenderData& data);
CTexPassElement(SRenderData&& data);
virtual ~CTexPassElement() = default;
virtual void draw(const CRegion& damage);