diff --git a/src/backend/drm/Renderer.cpp b/src/backend/drm/Renderer.cpp index 20cc5e4..f161c75 100644 --- a/src/backend/drm/Renderer.cpp +++ b/src/backend/drm/Renderer.cpp @@ -1033,9 +1033,8 @@ CDRMRenderer::SBlitResult CDRMRenderer::blit(SP from, SP to, S GLCALL(glTexParameteri(fromTex.target, GL_TEXTURE_MAG_FILTER, GL_NEAREST)); GLCALL(glTexParameteri(fromTex.target, GL_TEXTURE_MIN_FILTER, GL_NEAREST)); - if (intermediateBuf) { + if (intermediateBuf) GLCALL(glTexImage2D(fromTex.target, 0, PIXEL_BUFFER_FORMAT, fromDma.size.x, fromDma.size.y, 0, PIXEL_BUFFER_FORMAT, GL_UNSIGNED_BYTE, intermediateBuf)); - } GLCALL(glUseProgram(SHADER.program)); GLCALL(glDisable(GL_BLEND)); diff --git a/src/backend/drm/Renderer.hpp b/src/backend/drm/Renderer.hpp index 40261bb..e8fc28c 100644 --- a/src/backend/drm/Renderer.hpp +++ b/src/backend/drm/Renderer.hpp @@ -36,6 +36,8 @@ namespace Aquamarine { GLuint fbo = 0, rbo = 0; SGLTex tex; Hyprutils::Signal::CHyprSignalListener bufferDestroy; + // This is malloc'd manually instead of using a std::vector to keep lifetime management in line with the rest of the class, + // which e.g. doesn't immediately free the eglImage on drop but instead waits until onBufferAttachmentDrop. uint8_t* intermediateBuf = nullptr; size_t intermediateBufLen = 0;