summaryrefslogtreecommitdiff
path: root/src/hardwareintegration/compositor/linux-dmabuf-unstable-v1/linuxdmabufclientbufferintegration.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/hardwareintegration/compositor/linux-dmabuf-unstable-v1/linuxdmabufclientbufferintegration.cpp')
-rw-r--r--src/hardwareintegration/compositor/linux-dmabuf-unstable-v1/linuxdmabufclientbufferintegration.cpp17
1 files changed, 9 insertions, 8 deletions
diff --git a/src/hardwareintegration/compositor/linux-dmabuf-unstable-v1/linuxdmabufclientbufferintegration.cpp b/src/hardwareintegration/compositor/linux-dmabuf-unstable-v1/linuxdmabufclientbufferintegration.cpp
index 3cc7c4e6..24e80ed1 100644
--- a/src/hardwareintegration/compositor/linux-dmabuf-unstable-v1/linuxdmabufclientbufferintegration.cpp
+++ b/src/hardwareintegration/compositor/linux-dmabuf-unstable-v1/linuxdmabufclientbufferintegration.cpp
@@ -267,6 +267,12 @@ LinuxDmabufClientBufferIntegration::LinuxDmabufClientBufferIntegration()
LinuxDmabufClientBufferIntegration::~LinuxDmabufClientBufferIntegration()
{
m_importedBuffers.clear();
+
+ if (egl_unbind_wayland_display != nullptr && m_displayBound) {
+ Q_ASSERT(m_wlDisplay != nullptr);
+ if (!egl_unbind_wayland_display(m_eglDisplay, m_wlDisplay))
+ qCWarning(qLcWaylandCompositorHardwareIntegration) << "eglUnbindWaylandDisplayWL failed";
+ }
}
void LinuxDmabufClientBufferIntegration::initializeHardware(struct ::wl_display *display)
@@ -320,14 +326,9 @@ void LinuxDmabufClientBufferIntegration::initializeHardware(struct ::wl_display
if (egl_bind_wayland_display && egl_unbind_wayland_display) {
m_displayBound = egl_bind_wayland_display(m_eglDisplay, display);
- if (!m_displayBound) {
- if (ignoreBindDisplay) {
- qCWarning(qLcWaylandCompositorHardwareIntegration) << "Could not bind Wayland display. Ignoring.";
- } else {
- qCWarning(qLcWaylandCompositorHardwareIntegration) << "Failed to initialize EGL display. Could not bind Wayland display.";
- return;
- }
- }
+ if (!m_displayBound)
+ qCDebug(qLcWaylandCompositorHardwareIntegration) << "Wayland display already bound by other client buffer integration.";
+ m_wlDisplay = display;
}
// request and sent formats/modifiers only after egl_display is bound