diff options
Diffstat (limited to 'src/compositor/compositor_api/qwaylandcompositor.cpp')
-rw-r--r-- | src/compositor/compositor_api/qwaylandcompositor.cpp | 21 |
1 files changed, 16 insertions, 5 deletions
diff --git a/src/compositor/compositor_api/qwaylandcompositor.cpp b/src/compositor/compositor_api/qwaylandcompositor.cpp index 52a6614b..08c0ef51 100644 --- a/src/compositor/compositor_api/qwaylandcompositor.cpp +++ b/src/compositor/compositor_api/qwaylandcompositor.cpp @@ -365,9 +365,6 @@ void QWaylandCompositorPrivate::initializeHardwareIntegration() loadClientBufferIntegration(); loadServerBufferIntegration(); - - if (server_buffer_integration) - server_buffer_integration->initializeHardware(q); #endif } @@ -429,6 +426,7 @@ void QWaylandCompositorPrivate::loadClientBufferIntegration() void QWaylandCompositorPrivate::loadServerBufferIntegration() { #if QT_CONFIG(opengl) + Q_Q(QWaylandCompositor); QStringList keys = QtWayland::ServerBufferIntegrationFactory::keys(); QString targetKey; QByteArray serverBufferIntegration = qgetenv("QT_WAYLAND_SERVER_BUFFER_INTEGRATION"); @@ -437,9 +435,22 @@ void QWaylandCompositorPrivate::loadServerBufferIntegration() } if (!targetKey.isEmpty()) { server_buffer_integration.reset(QtWayland::ServerBufferIntegrationFactory::create(targetKey, QStringList())); - if (hw_integration) - hw_integration->setServerBufferIntegration(targetKey); + if (server_buffer_integration) { + qCDebug(qLcWaylandCompositorHardwareIntegration) + << "Loaded server buffer integration:" << targetKey; + if (!server_buffer_integration->initializeHardware(q)) { + qCWarning(qLcWaylandCompositorHardwareIntegration) + << "Failed to initialize hardware for server buffer integration:" << targetKey; + server_buffer_integration.reset(); + } + } else { + qCWarning(qLcWaylandCompositorHardwareIntegration) + << "Failed to load server buffer integration:" << targetKey; + } } + + if (server_buffer_integration && hw_integration) + hw_integration->setServerBufferIntegration(targetKey); #endif } |