From bb958a9e139d6ae90d45fe360287d33e229f971e Mon Sep 17 00:00:00 2001 From: Tom Englund Date: Fri, 4 Jul 2025 09:58:37 +0200 Subject: 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. --- src/render/OpenGL.cpp | 4 ++-- src/render/Renderer.cpp | 6 +++--- src/render/decorations/CHyprGroupBarDecoration.cpp | 2 +- src/render/pass/TexPassElement.cpp | 6 +++++- src/render/pass/TexPassElement.hpp | 1 + 5 files changed, 12 insertions(+), 7 deletions(-) (limited to 'src/render') diff --git a/src/render/OpenGL.cpp b/src/render/OpenGL.cpp index dbbdde69..6b311a25 100644 --- a/src/render/OpenGL.cpp +++ b/src/render/OpenGL.cpp @@ -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(data)); + g_pHyprRenderer->m_renderPass.add(makeShared(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(data)); + g_pHyprRenderer->m_renderPass.add(makeShared(std::move(data))); } } diff --git a/src/render/Renderer.cpp b/src/render/Renderer.cpp index 513225cc..e85d59b5 100644 --- a/src/render/Renderer.cpp +++ b/src/render/Renderer.cpp @@ -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(data)); + m_renderPass.add(makeShared(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(data)); + m_renderPass.add(makeShared(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(data)); + m_renderPass.add(makeShared(std::move(data))); } bool CHyprRenderer::shouldBlur(PHLLS ls) { diff --git a/src/render/decorations/CHyprGroupBarDecoration.cpp b/src/render/decorations/CHyprGroupBarDecoration.cpp index 9a17a3fe..e577658a 100644 --- a/src/render/decorations/CHyprGroupBarDecoration.cpp +++ b/src/render/decorations/CHyprGroupBarDecoration.cpp @@ -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(data)); + g_pHyprRenderer->m_renderPass.add(makeShared(std::move(data))); } } diff --git a/src/render/pass/TexPassElement.cpp b/src/render/pass/TexPassElement.cpp index c4b00220..dbf40308 100644 --- a/src/render/pass/TexPassElement.cpp +++ b/src/render/pass/TexPassElement.cpp @@ -4,7 +4,11 @@ #include 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)) { ; } diff --git a/src/render/pass/TexPassElement.hpp b/src/render/pass/TexPassElement.hpp index a9206d2d..4257357e 100644 --- a/src/render/pass/TexPassElement.hpp +++ b/src/render/pass/TexPassElement.hpp @@ -24,6 +24,7 @@ class CTexPassElement : public IPassElement { }; CTexPassElement(const SRenderData& data); + CTexPassElement(SRenderData&& data); virtual ~CTexPassElement() = default; virtual void draw(const CRegion& damage); -- cgit v1.2.3