diff options
Diffstat (limited to 'src/hardwareintegration/compositor/linux-dmabuf-unstable-v1/linuxdmabufclientbufferintegration.h')
-rw-r--r-- | src/hardwareintegration/compositor/linux-dmabuf-unstable-v1/linuxdmabufclientbufferintegration.h | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/src/hardwareintegration/compositor/linux-dmabuf-unstable-v1/linuxdmabufclientbufferintegration.h b/src/hardwareintegration/compositor/linux-dmabuf-unstable-v1/linuxdmabufclientbufferintegration.h index 24c4eeea..3749d88e 100644 --- a/src/hardwareintegration/compositor/linux-dmabuf-unstable-v1/linuxdmabufclientbufferintegration.h +++ b/src/hardwareintegration/compositor/linux-dmabuf-unstable-v1/linuxdmabufclientbufferintegration.h @@ -9,6 +9,7 @@ #include <QtWaylandCompositor/private/qwlclientbufferintegration_p.h> #include <QtWaylandCompositor/private/qwlclientbuffer_p.h> #include <QtWaylandCompositor/private/qwayland-server-wayland.h> +#include <QtCore/QMutex> #include <drm_fourcc.h> @@ -46,8 +47,9 @@ public: bool importBuffer(wl_resource *resource, LinuxDmabufWlBuffer *linuxDmabufBuffer); void removeBuffer(wl_resource *resource); void deleteOrphanedTextures(); + void deleteSpecificOrphanedTexture(QOpenGLTexture *texture); void deleteImage(EGLImageKHR image); - void deleteGLTextureWhenPossible(QOpenGLTexture *texture) { m_orphanedTextures << texture; } + void deleteGLTextureWhenPossible(QOpenGLTexture *texture, QOpenGLContext* ctx); PFNGLEGLIMAGETARGETTEXTURE2DOESPROC gl_egl_image_target_texture_2d = nullptr; private: @@ -68,7 +70,11 @@ private: EGLDisplay m_eglDisplay = EGL_NO_DISPLAY; ::wl_display *m_wlDisplay = nullptr; bool m_displayBound = false; + + QMutex m_orphanedTexturesLock; QList<QOpenGLTexture *> m_orphanedTextures; + QList<QMetaObject::Connection> m_orphanedTexturesAboutToBeDestroyedConnection; + QHash<EGLint, YuvFormatConversion> m_yuvFormats; bool m_supportsDmabufModifiers = false; QHash<struct ::wl_resource *, LinuxDmabufWlBuffer *> m_importedBuffers; |