Patch status: fixed in Qt 6.9.1 https://bugreports.qt.io/browse/QTBUG-135047 https://codereview.qt-project.org/c/qt/qtwebengine/+/634033 --- a/src/core/compositor/native_skia_output_device_opengl.cpp +++ b/src/core/compositor/native_skia_output_device_opengl.cpp @@ -214,9 +214,10 @@ glFun->glBindTexture(GL_TEXTURE_2D, 0); - m_frontBuffer->textureCleanupCallback = [glFun, glxFun, display, glxPixmap, - glTexture]() { + m_frontBuffer->textureCleanupCallback = [glFun, glxFun, display, glxPixmap, glTexture, + glxHelper, pixmapId]() { glxFun->glXReleaseTexImageEXT(display, glxPixmap, GLX_FRONT_LEFT_EXT); glFun->glDeleteTextures(1, &glTexture); glXDestroyGLXPixmap(display, glxPixmap); + glxHelper->freePixmap(pixmapId); }; } --- a/src/core/ozone/glx_helper.cpp +++ b/src/core/ozone/glx_helper.cpp @@ -101,3 +101,13 @@ } +void GLXHelper::freePixmap(uint32_t pixmapId) const +{ + xcb_void_cookie_t cookie = xcb_free_pixmap_checked(m_connection, pixmapId); + xcb_generic_error_t *error = xcb_request_check(m_connection, cookie); + if (error) { + qWarning("GLX: XCB_FREE_PIXMAP failed with error code: 0x%x", error->error_code); + free(error); + } +} + QT_END_NAMESPACE --- a/src/core/ozone/glx_helper.h +++ b/src/core/ozone/glx_helper.h @@ -34,4 +34,5 @@ GLXPixmap importBufferAsPixmap(int dmaBufFd, uint32_t size, uint16_t width, uint16_t height, uint16_t stride) const; + void freePixmap(uint32_t pixmapId) const; bool isDmaBufSupported() const { return m_isDmaBufSupported; }