summaryrefslogtreecommitdiffstats
path: root/src/plugins/platforms/qwayland-xcomposite-egl
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins/platforms/qwayland-xcomposite-egl')
-rw-r--r--src/plugins/platforms/qwayland-xcomposite-egl/qwayland-xcomposite-egl.pro4
-rw-r--r--src/plugins/platforms/qwayland-xcomposite-egl/qwaylandxcompositeeglcontext.cpp2
-rw-r--r--src/plugins/platforms/qwayland-xcomposite-egl/qwaylandxcompositeeglintegration.cpp14
-rw-r--r--src/plugins/platforms/qwayland-xcomposite-egl/qwaylandxcompositeeglintegration.h12
-rw-r--r--src/plugins/platforms/qwayland-xcomposite-egl/qwaylandxcompositeeglwindow.cpp26
-rw-r--r--src/plugins/platforms/qwayland-xcomposite-egl/qwaylandxcompositeeglwindow.h6
6 files changed, 22 insertions, 42 deletions
diff --git a/src/plugins/platforms/qwayland-xcomposite-egl/qwayland-xcomposite-egl.pro b/src/plugins/platforms/qwayland-xcomposite-egl/qwayland-xcomposite-egl.pro
index b691ec9dc..e41cf59b4 100644
--- a/src/plugins/platforms/qwayland-xcomposite-egl/qwayland-xcomposite-egl.pro
+++ b/src/plugins/platforms/qwayland-xcomposite-egl/qwayland-xcomposite-egl.pro
@@ -6,6 +6,10 @@ include (../xcomposite_share/xcomposite_share.pri)
OTHER_FILES += qwayland-xcomposite-egl.json
+contains(DEFINES, QT_WAYLAND_WINDOWMANAGER_SUPPORT) {
+ WAYLANDCLIENTSOURCES += ../../../extensions/windowmanager.xml
+}
+
!contains(QT_CONFIG, no-pkg-config) {
CONFIG += link_pkgconfig
PKGCONFIG += xcomposite egl x11
diff --git a/src/plugins/platforms/qwayland-xcomposite-egl/qwaylandxcompositeeglcontext.cpp b/src/plugins/platforms/qwayland-xcomposite-egl/qwaylandxcompositeeglcontext.cpp
index 42139ef18..635e47c06 100644
--- a/src/plugins/platforms/qwayland-xcomposite-egl/qwaylandxcompositeeglcontext.cpp
+++ b/src/plugins/platforms/qwayland-xcomposite-egl/qwaylandxcompositeeglcontext.cpp
@@ -51,7 +51,7 @@
QT_USE_NAMESPACE
QWaylandXCompositeEGLContext::QWaylandXCompositeEGLContext(const QSurfaceFormat &format, QPlatformOpenGLContext *share, EGLDisplay display)
- : QEGLPlatformContext(format, share, display)
+ : QEGLPlatformContext(format, share, display, q_configFromGLFormat(display, format, true, EGL_WINDOW_BIT | EGL_PIXMAP_BIT), EGL_OPENGL_ES_API)
{
}
diff --git a/src/plugins/platforms/qwayland-xcomposite-egl/qwaylandxcompositeeglintegration.cpp b/src/plugins/platforms/qwayland-xcomposite-egl/qwaylandxcompositeeglintegration.cpp
index 992c2dcff..c2ea9a934 100644
--- a/src/plugins/platforms/qwayland-xcomposite-egl/qwaylandxcompositeeglintegration.cpp
+++ b/src/plugins/platforms/qwayland-xcomposite-egl/qwaylandxcompositeeglintegration.cpp
@@ -105,27 +105,27 @@ QWaylandDisplay * QWaylandXCompositeEGLIntegration::waylandDisplay() const
{
return mWaylandDisplay;
}
-wl_xcomposite * QWaylandXCompositeEGLIntegration::waylandXComposite() const
+qt_xcomposite * QWaylandXCompositeEGLIntegration::waylandXComposite() const
{
return mWaylandComposite;
}
-const struct wl_xcomposite_listener QWaylandXCompositeEGLIntegration::xcomposite_listener = {
+const struct qt_xcomposite_listener QWaylandXCompositeEGLIntegration::xcomposite_listener = {
QWaylandXCompositeEGLIntegration::rootInformation
};
-void QWaylandXCompositeEGLIntegration::wlDisplayHandleGlobal(void *data, wl_registry *registry, uint32_t id, const char *interface, uint32_t version)
+void QWaylandXCompositeEGLIntegration::wlDisplayHandleGlobal(void *data, wl_registry *registry, uint32_t id, const QString &interface, uint32_t version)
{
Q_UNUSED(version);
- if (strcmp(interface, "wl_xcomposite") == 0) {
+ if (interface == "wl_xcomposite") {
QWaylandXCompositeEGLIntegration *integration = static_cast<QWaylandXCompositeEGLIntegration *>(data);
- integration->mWaylandComposite = static_cast<struct wl_xcomposite *>(wl_registry_bind(registry,id,&wl_xcomposite_interface,1));
- wl_xcomposite_add_listener(integration->mWaylandComposite,&xcomposite_listener,integration);
+ integration->mWaylandComposite = static_cast<struct qt_xcomposite *>(wl_registry_bind(registry,id,&qt_xcomposite_interface,1));
+ qt_xcomposite_add_listener(integration->mWaylandComposite,&xcomposite_listener,integration);
}
}
-void QWaylandXCompositeEGLIntegration::rootInformation(void *data, wl_xcomposite *xcomposite, const char *display_name, uint32_t root_window)
+void QWaylandXCompositeEGLIntegration::rootInformation(void *data, qt_xcomposite *xcomposite, const char *display_name, uint32_t root_window)
{
Q_UNUSED(xcomposite);
QWaylandXCompositeEGLIntegration *integration = static_cast<QWaylandXCompositeEGLIntegration *>(data);
diff --git a/src/plugins/platforms/qwayland-xcomposite-egl/qwaylandxcompositeeglintegration.h b/src/plugins/platforms/qwayland-xcomposite-egl/qwaylandxcompositeeglintegration.h
index d3015ab57..d7d1d4912 100644
--- a/src/plugins/platforms/qwayland-xcomposite-egl/qwaylandxcompositeeglintegration.h
+++ b/src/plugins/platforms/qwayland-xcomposite-egl/qwaylandxcompositeeglintegration.h
@@ -75,16 +75,18 @@ public:
QPlatformOpenGLContext *createPlatformOpenGLContext(const QSurfaceFormat &glFormat, QPlatformOpenGLContext *share) const;
QWaylandDisplay *waylandDisplay() const;
- struct wl_xcomposite *waylandXComposite() const;
+ struct qt_xcomposite *waylandXComposite() const;
Display *xDisplay() const;
EGLDisplay eglDisplay() const;
int screen() const;
Window rootWindow() const;
+ bool supportsThreadedOpenGL() const { return true; }
+
private:
QWaylandDisplay *mWaylandDisplay;
- struct wl_xcomposite *mWaylandComposite;
+ struct qt_xcomposite *mWaylandComposite;
Display *mDisplay;
EGLDisplay mEglDisplay;
@@ -92,11 +94,11 @@ private:
Window mRootWindow;
static void wlDisplayHandleGlobal(void *data, struct wl_registry *registry, uint32_t id,
- const char *interface, uint32_t version);
+ const QString &interface, uint32_t version);
- static const struct wl_xcomposite_listener xcomposite_listener;
+ static const struct qt_xcomposite_listener xcomposite_listener;
static void rootInformation(void *data,
- struct wl_xcomposite *xcomposite,
+ struct qt_xcomposite *xcomposite,
const char *display_name,
uint32_t root_window);
};
diff --git a/src/plugins/platforms/qwayland-xcomposite-egl/qwaylandxcompositeeglwindow.cpp b/src/plugins/platforms/qwayland-xcomposite-egl/qwaylandxcompositeeglwindow.cpp
index d47439412..f1768991f 100644
--- a/src/plugins/platforms/qwayland-xcomposite-egl/qwaylandxcompositeeglwindow.cpp
+++ b/src/plugins/platforms/qwayland-xcomposite-egl/qwaylandxcompositeeglwindow.cpp
@@ -49,7 +49,10 @@
#include <X11/extensions/Xcomposite.h>
#include "qwaylandxcompositeeglintegration.h"
+
+#ifdef QT_WAYLAND_WINDOWMANAGER_SUPPORT
#include "windowmanager_integration/qwaylandwindowmanagerintegration.h"
+#endif
#include <QtCore/QDebug>
@@ -63,7 +66,6 @@ QWaylandXCompositeEGLWindow::QWaylandXCompositeEGLWindow(QWindow *window, QWayla
, m_xWindow(0)
, m_config(q_configFromGLFormat(glxIntegration->eglDisplay(), window->format(), true, EGL_WINDOW_BIT | EGL_PIXMAP_BIT))
, m_surface(0)
- , m_waitingForSync(false)
{
}
@@ -134,14 +136,6 @@ void QWaylandXCompositeEGLWindow::createEglSurface()
(uint32_t)m_xWindow,
size);
attach(m_buffer, 0, 0);
-
- m_waitingForSync = true;
- struct wl_callback *callback = wl_display_sync(m_glxIntegration->waylandDisplay()->wl_display());
- wl_callback_add_listener(callback,&m_callback_listener,&m_waitingForSync);
-
- m_glxIntegration->waylandDisplay()->flushRequests();
- while (m_waitingForSync)
- m_glxIntegration->waylandDisplay()->blockingReadEvents();
}
void QWaylandXCompositeEGLWindow::requestActivateWindow()
@@ -152,17 +146,3 @@ void QWaylandXCompositeEGLWindow::requestActivateWindow()
QWaylandWindow::requestActivateWindow();
}
-
-const struct wl_callback_listener QWaylandXCompositeEGLWindow::m_callback_listener = {
- QWaylandXCompositeEGLWindow::done
-};
-
-void QWaylandXCompositeEGLWindow::done(void *data,
- struct wl_callback *callback,
- uint32_t time)
-{
- Q_UNUSED(time);
- bool *waitingForSync = static_cast<bool *>(data);
- *waitingForSync=false;
- wl_callback_destroy(callback);
-}
diff --git a/src/plugins/platforms/qwayland-xcomposite-egl/qwaylandxcompositeeglwindow.h b/src/plugins/platforms/qwayland-xcomposite-egl/qwaylandxcompositeeglwindow.h
index 895ac28f0..98f0ed736 100644
--- a/src/plugins/platforms/qwayland-xcomposite-egl/qwaylandxcompositeeglwindow.h
+++ b/src/plugins/platforms/qwayland-xcomposite-egl/qwaylandxcompositeeglwindow.h
@@ -71,12 +71,6 @@ private:
Window m_xWindow;
EGLConfig m_config;
EGLSurface m_surface;
-
- bool m_waitingForSync;
- static const struct wl_callback_listener m_callback_listener;
- static void done(void *data,
- struct wl_callback *wl_callback,
- uint32_t time);
};
QT_END_NAMESPACE