summaryrefslogtreecommitdiff
path: root/src/hyprerror/HyprError.cpp
diff options
context:
space:
mode:
authorUjinT34 <41110182+UjinT34@users.noreply.github.com>2026-03-07 00:44:10 +0300
committerGitHub <noreply@github.com>2026-03-06 21:44:10 +0000
commit4152ac76d0813d9d0f67d2f04653a13fa6e17433 (patch)
treec341f1883cf5a182d32e4ad00192ba8786a9bb75 /src/hyprerror/HyprError.cpp
parenta5858018d896e0e0f0db517f893cd9a0936dd881 (diff)
renderer: refactor Texture, Framebuffer and Renderbuffer (#13437)
Part 1 of the renderer refactors
Diffstat (limited to 'src/hyprerror/HyprError.cpp')
-rw-r--r--src/hyprerror/HyprError.cpp30
1 files changed, 18 insertions, 12 deletions
diff --git a/src/hyprerror/HyprError.cpp b/src/hyprerror/HyprError.cpp
index 360bdfdc..60bf0a78 100644
--- a/src/hyprerror/HyprError.cpp
+++ b/src/hyprerror/HyprError.cpp
@@ -30,8 +30,6 @@ CHyprError::CHyprError() {
if (m_fadeOpacity->isBeingAnimated() || m_monitorChanged)
g_pHyprRenderer->damageBox(m_damageBox);
});
-
- m_texture = makeShared<CTexture>();
}
void CHyprError::queueCreate(std::string message, const CHyprColor& color) {
@@ -40,8 +38,8 @@ void CHyprError::queueCreate(std::string message, const CHyprColor& color) {
}
void CHyprError::createQueued() {
- if (m_isCreated)
- m_texture->destroyTexture();
+ if (m_isCreated && m_texture)
+ m_texture.reset();
m_fadeOpacity->setConfig(g_pConfigManager->getAnimationPropertyConfig("fadeIn"));
@@ -145,12 +143,13 @@ void CHyprError::createQueued() {
// copy the data to an OpenGL texture we have
const auto DATA = cairo_image_surface_get_data(CAIROSURFACE);
- m_texture->allocate();
- m_texture->bind();
- m_texture->setTexParameter(GL_TEXTURE_MAG_FILTER, GL_NEAREST);
- m_texture->setTexParameter(GL_TEXTURE_MIN_FILTER, GL_NEAREST);
- m_texture->setTexParameter(GL_TEXTURE_SWIZZLE_R, GL_BLUE);
- m_texture->setTexParameter(GL_TEXTURE_SWIZZLE_B, GL_RED);
+ auto tex = texture();
+ tex->allocate(PMONITOR->m_pixelSize);
+ tex->bind();
+ tex->setTexParameter(GL_TEXTURE_MAG_FILTER, GL_NEAREST);
+ tex->setTexParameter(GL_TEXTURE_MIN_FILTER, GL_NEAREST);
+ tex->setTexParameter(GL_TEXTURE_SWIZZLE_R, GL_BLUE);
+ tex->setTexParameter(GL_TEXTURE_SWIZZLE_B, GL_RED);
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, PMONITOR->m_pixelSize.x, PMONITOR->m_pixelSize.y, 0, GL_RGBA, GL_UNSIGNED_BYTE, DATA);
@@ -187,7 +186,8 @@ void CHyprError::draw() {
if (!m_fadeOpacity->isBeingAnimated()) {
if (m_fadeOpacity->value() == 0.f) {
m_queuedDestroy = false;
- m_texture->destroyTexture();
+ if (m_texture)
+ m_texture.reset();
m_isCreated = false;
m_queued = "";
@@ -218,7 +218,7 @@ void CHyprError::draw() {
m_monitorChanged = false;
CTexPassElement::SRenderData data;
- data.tex = m_texture;
+ data.tex = texture();
data.box = monbox;
data.a = m_fadeOpacity->value();
@@ -239,3 +239,9 @@ bool CHyprError::active() {
float CHyprError::height() {
return m_lastHeight;
}
+
+SP<ITexture> CHyprError::texture() {
+ if (!m_texture)
+ m_texture = g_pHyprRenderer->createTexture();
+ return m_texture;
+} \ No newline at end of file