void initialize();
+ bool supportsThreadedOpenGL() const { return true; }
+
QWaylandWindow *createEglWindow(QWindow *window);
QPlatformOpenGLContext *createPlatformOpenGLContext(const QSurfaceFormat &glFormat, QPlatformOpenGLContext *share) const;
virtual void initialize() = 0;
+ virtual bool supportsThreadedOpenGL() const { return false; }
+
virtual QWaylandWindow *createEglWindow(QWindow *window) = 0;
virtual QPlatformOpenGLContext *createPlatformOpenGLContext(const QSurfaceFormat &glFormat, QPlatformOpenGLContext *share) const = 0;
#include "qwaylandeglwindow.h"
#include "qwaylandglcontext.h"
+#include <wayland-client.h>
+
#include <QtCore/QDebug>
QWaylandEglIntegration::QWaylandEglIntegration(struct wl_display *waylandDisplay)
}
}
+bool QWaylandEglIntegration::supportsThreadedOpenGL() const
+{
+#ifdef WAYLAND_CLIENT_THREAD_AFFINITY
+ return true;
+#else
+ return false;
+#endif
+}
+
QWaylandWindow *QWaylandEglIntegration::createEglWindow(QWindow *window)
{
return new QWaylandEglWindow(window);
~QWaylandEglIntegration();
void initialize();
+ bool supportsThreadedOpenGL() const;
QWaylandWindow *createEglWindow(QWindow *window);
QPlatformOpenGLContext *createPlatformOpenGLContext(const QSurfaceFormat &glFormat, QPlatformOpenGLContext *share) const;
return false;
#endif
case ThreadedOpenGL:
- return hasCapability(OpenGL);
+#ifdef QT_WAYLAND_GL_SUPPORT
+ return mDisplay->eglIntegration()->supportsThreadedOpenGL();
+#else
+ return false;
+#endif
case BufferQueueingOpenGL:
return true;
default: return QPlatformIntegration::hasCapability(cap);