summaryrefslogtreecommitdiffstats
path: root/src/hardwareintegration
diff options
context:
space:
mode:
authorAndy Nichols <andy.nichols@digia.com>2014-02-04 15:04:56 +0100
committerAndy Nichols <andy.nichols@digia.com>2014-02-04 15:04:56 +0100
commite5d1d051e413160e37e7b61d8d7ad74298f98a76 (patch)
tree804f966db6780b539ec90206017a1a79c006450b /src/hardwareintegration
parent05076e4e16615741becfc434979502901cbf396a (diff)
parent50f43a0c56e4329facbba6b7e4bbec0e87ff9d63 (diff)
Merge remote-tracking branch 'origin/stable' into dev
Conflicts: src/client/hardwareintegration/qwaylandclientbufferintegrationplugin_p.h src/client/hardwareintegration/qwaylandserverbufferintegrationplugin_p.h src/compositor/hardware_integration/qwaylandclientbufferintegrationplugin.h src/compositor/hardware_integration/qwaylandserverbufferintegrationplugin.h src/plugins/hardwareintegration/client/brcm-egl/main.cpp src/plugins/hardwareintegration/client/drm-egl-server/main.cpp src/plugins/hardwareintegration/client/wayland-egl/main.cpp src/plugins/hardwareintegration/client/xcomposite-egl/main.cpp src/plugins/hardwareintegration/client/xcomposite-glx/main.cpp src/plugins/hardwareintegration/compositor/brcm-egl/main.cpp src/plugins/hardwareintegration/compositor/drm-egl-server/main.cpp src/plugins/hardwareintegration/compositor/wayland-egl/main.cpp src/plugins/hardwareintegration/compositor/xcomposite-egl/main.cpp src/plugins/hardwareintegration/compositor/xcomposite-glx/main.cpp Change-Id: I9a9b418075970dd334babc3590b9b0315c2afb0d
Diffstat (limited to 'src/hardwareintegration')
-rw-r--r--src/hardwareintegration/client/brcm-egl/brcm-egl.pri17
-rw-r--r--src/hardwareintegration/client/brcm-egl/qwaylandbrcmeglintegration.cpp11
-rw-r--r--src/hardwareintegration/client/brcm-egl/qwaylandbrcmeglintegration.h8
-rw-r--r--src/hardwareintegration/client/brcm-egl/qwaylandbrcmeglwindow.cpp38
-rw-r--r--src/hardwareintegration/client/brcm-egl/qwaylandbrcmeglwindow.h7
-rw-r--r--src/hardwareintegration/client/brcm-egl/qwaylandbrcmglcontext.cpp4
-rw-r--r--src/hardwareintegration/client/brcm-egl/qwaylandbrcmglcontext.h2
-rw-r--r--src/hardwareintegration/client/wayland-egl/qwaylandeglwindow.cpp2
-rw-r--r--src/hardwareintegration/client/wayland-egl/wayland-egl.pri2
-rw-r--r--src/hardwareintegration/client/xcomposite-egl/xcomposite-egl.pri2
-rw-r--r--src/hardwareintegration/client/xcomposite-glx/qwaylandxcompositeglxintegration.cpp9
-rw-r--r--src/hardwareintegration/client/xcomposite-glx/qwaylandxcompositeglxintegration.h8
-rw-r--r--src/hardwareintegration/client/xcomposite-glx/qwaylandxcompositeglxwindow.h4
-rw-r--r--src/hardwareintegration/client/xcomposite-glx/xcomposite-glx.pri2
-rw-r--r--src/hardwareintegration/compositor/brcm-egl/brcm-egl.pri25
-rw-r--r--src/hardwareintegration/compositor/brcm-egl/brcmbuffer.h2
-rw-r--r--src/hardwareintegration/compositor/brcm-egl/brcmeglintegration.h2
-rw-r--r--src/hardwareintegration/compositor/wayland-egl/waylandeglclientbufferintegration.cpp24
-rw-r--r--src/hardwareintegration/compositor/wayland-egl/waylandeglclientbufferintegration.h2
19 files changed, 77 insertions, 94 deletions
diff --git a/src/hardwareintegration/client/brcm-egl/brcm-egl.pri b/src/hardwareintegration/client/brcm-egl/brcm-egl.pri
index 542c1c717..eb8e450f9 100644
--- a/src/hardwareintegration/client/brcm-egl/brcm-egl.pri
+++ b/src/hardwareintegration/client/brcm-egl/brcm-egl.pri
@@ -1,5 +1,18 @@
INCLUDEPATH += $$PWD
-LIBS += -lEGL
+
+contains(QT_CONFIG, no-pkg-config) {
+ CONFIG += link_pkgconfig
+ PKGCONFIG += wayland-client
+} else {
+ LIBS += -lwayland-client
+}
+
+for(p, QMAKE_LIBDIR_EGL) {
+ exists($$p):LIBS += -L$$p
+}
+
+LIBS += $$QMAKE_LIBS_EGL
+INCLUDEPATH += $$QMAKE_INCDIR_EGL
SOURCES += $$PWD/qwaylandbrcmeglintegration.cpp \
$$PWD/qwaylandbrcmglcontext.cpp \
@@ -10,4 +23,4 @@ HEADERS += $$PWD/qwaylandbrcmeglintegration.h \
$$PWD/qwaylandbrcmeglwindow.h
CONFIG += wayland-scanner
-WAYLANDCLIENTSOURCES += ../../../extensions/brcm.xml
+WAYLANDCLIENTSOURCES += $$PWD/../../../extensions/brcm.xml
diff --git a/src/hardwareintegration/client/brcm-egl/qwaylandbrcmeglintegration.cpp b/src/hardwareintegration/client/brcm-egl/qwaylandbrcmeglintegration.cpp
index 197f4d2ce..f1e14c10c 100644
--- a/src/hardwareintegration/client/brcm-egl/qwaylandbrcmeglintegration.cpp
+++ b/src/hardwareintegration/client/brcm-egl/qwaylandbrcmeglintegration.cpp
@@ -41,7 +41,7 @@
#include "qwaylandbrcmeglintegration.h"
-#include "qwaylandglintegration.h"
+#include <QtWaylandClient/private/qwaylandclientbufferintegration_p.h>
#include "qwaylandbrcmeglwindow.h"
#include "qwaylandbrcmglcontext.h"
@@ -52,11 +52,10 @@
QT_BEGIN_NAMESPACE
-QWaylandBrcmEglIntegration::QWaylandBrcmEglIntegration(QWaylandDisplay *waylandDisplay)
- : m_waylandDisplay(waylandDisplay->wl_display())
+QWaylandBrcmEglIntegration::QWaylandBrcmEglIntegration()
+ : m_waylandDisplay(0)
{
qDebug() << "Using Brcm-EGL";
- waylandDisplay->addRegistryListener(wlDisplayHandleGlobal, this);
}
void QWaylandBrcmEglIntegration::wlDisplayHandleGlobal(void *data, struct wl_registry *registry, uint32_t id, const QString &interface, uint32_t version)
@@ -78,8 +77,10 @@ QWaylandBrcmEglIntegration::~QWaylandBrcmEglIntegration()
eglTerminate(m_eglDisplay);
}
-void QWaylandBrcmEglIntegration::initialize()
+void QWaylandBrcmEglIntegration::initialize(QWaylandDisplay *waylandDisplay)
{
+ m_waylandDisplay = waylandDisplay->wl_display();
+ waylandDisplay->addRegistryListener(wlDisplayHandleGlobal, this);
EGLint major,minor;
m_eglDisplay = eglGetDisplay((EGLNativeDisplayType)EGL_DEFAULT_DISPLAY);
if (m_eglDisplay == NULL) {
diff --git a/src/hardwareintegration/client/brcm-egl/qwaylandbrcmeglintegration.h b/src/hardwareintegration/client/brcm-egl/qwaylandbrcmeglintegration.h
index f1100d8de..471f3a03c 100644
--- a/src/hardwareintegration/client/brcm-egl/qwaylandbrcmeglintegration.h
+++ b/src/hardwareintegration/client/brcm-egl/qwaylandbrcmeglintegration.h
@@ -42,7 +42,7 @@
#ifndef QWAYLANDBRCMEGLINTEGRATION_H
#define QWAYLANDBRCMEGLINTEGRATION_H
-#include "qwaylandglintegration.h"
+#include <QtWaylandClient/private/qwaylandclientbufferintegration_p.h>
#include <EGL/egl.h>
#include <EGL/eglext.h>
@@ -59,13 +59,13 @@ class QWindow;
struct qt_brcm;
-class QWaylandBrcmEglIntegration : public QWaylandGLIntegration
+class QWaylandBrcmEglIntegration : public QWaylandClientBufferIntegration
{
public:
- QWaylandBrcmEglIntegration(QWaylandDisplay *waylandDisplay);
+ QWaylandBrcmEglIntegration();
~QWaylandBrcmEglIntegration();
- void initialize();
+ void initialize(QWaylandDisplay *waylandDisplay);
bool supportsThreadedOpenGL() const { return true; }
diff --git a/src/hardwareintegration/client/brcm-egl/qwaylandbrcmeglwindow.cpp b/src/hardwareintegration/client/brcm-egl/qwaylandbrcmeglwindow.cpp
index 5c67ba8e5..3ca72a772 100644
--- a/src/hardwareintegration/client/brcm-egl/qwaylandbrcmeglwindow.cpp
+++ b/src/hardwareintegration/client/brcm-egl/qwaylandbrcmeglwindow.cpp
@@ -41,8 +41,8 @@
#include "qwaylandbrcmeglwindow.h"
-#include "qwaylandbuffer.h"
-#include "qwaylandscreen.h"
+#include <QtWaylandClient/private/qwaylandbuffer_p.h>
+#include <QtWaylandClient/private/qwaylandscreen_p.h>
#include "qwaylandbrcmglcontext.h"
#include <QtPlatformSupport/private/qeglconvenience_p.h>
@@ -127,12 +127,12 @@ private:
QWaylandBrcmEglWindow::QWaylandBrcmEglWindow(QWindow *window)
: QWaylandWindow(window)
- , m_eglIntegration(static_cast<QWaylandBrcmEglIntegration *>(mDisplay->eglIntegration()))
+ , m_eglIntegration(static_cast<QWaylandBrcmEglIntegration *>(mDisplay->clientBufferIntegration()))
, m_eglConfig(0)
, m_format(window->format())
+ , m_eventQueue(wl_display_create_queue(mDisplay->wl_display()))
, m_current(0)
, m_count(0)
- , m_eventQueue(wl_display_create_queue(mDisplay->wl_display()))
{
}
@@ -249,38 +249,14 @@ void QWaylandBrcmEglWindow::swapBuffers()
}
m_buffers[m_current]->bind();
-
- m_mutex.lock();
- m_pending << m_buffers[m_current];
- m_mutex.unlock();
-
- // can't use a direct call since swapBuffers might be called from a separate thread
- QMetaObject::invokeMethod(this, "flushBuffers");
+ attach(m_buffers[m_current], 0, 0);
+ damage(QRect(QPoint(), geometry().size()));
+ commit();
m_current = (m_current + 1) % m_count;
-
m_buffers[m_current]->waitForRelease();
}
-void QWaylandBrcmEglWindow::flushBuffers()
-{
- if (m_pending.isEmpty())
- return;
-
- QSize size = geometry().size();
-
- m_mutex.lock();
- while (!m_pending.isEmpty()) {
- QWaylandBrcmBuffer *buffer = m_pending.takeFirst();
- attach(buffer, 0, 0);
- damage(QRect(QPoint(), size));
- commit();
- }
- m_mutex.unlock();
-
- mDisplay->flushRequests();
-}
-
bool QWaylandBrcmEglWindow::makeCurrent(EGLContext context)
{
if (!m_count)
diff --git a/src/hardwareintegration/client/brcm-egl/qwaylandbrcmeglwindow.h b/src/hardwareintegration/client/brcm-egl/qwaylandbrcmeglwindow.h
index 5a3fa0461..bc8f12d1f 100644
--- a/src/hardwareintegration/client/brcm-egl/qwaylandbrcmeglwindow.h
+++ b/src/hardwareintegration/client/brcm-egl/qwaylandbrcmeglwindow.h
@@ -42,7 +42,7 @@
#ifndef QWAYLANDBRCMEGLWINDOW_H
#define QWAYLANDBRCMEGLWINDOW_H
-#include "qwaylandwindow.h"
+#include <QtWaylandClient/private/qwaylandwindow_p.h>
#include "qwaylandbrcmeglintegration.h"
#include <QMutex>
@@ -68,9 +68,6 @@ public:
bool makeCurrent(EGLContext context);
void swapBuffers();
-private slots:
- void flushBuffers();
-
private:
void createEglSurfaces();
void destroyEglSurfaces();
@@ -93,8 +90,6 @@ private:
int m_current;
int m_count;
- QList<QWaylandBrcmBuffer *> m_pending;
-
QMutex m_mutex;
};
diff --git a/src/hardwareintegration/client/brcm-egl/qwaylandbrcmglcontext.cpp b/src/hardwareintegration/client/brcm-egl/qwaylandbrcmglcontext.cpp
index dfb86e54c..85b7b49f0 100644
--- a/src/hardwareintegration/client/brcm-egl/qwaylandbrcmglcontext.cpp
+++ b/src/hardwareintegration/client/brcm-egl/qwaylandbrcmglcontext.cpp
@@ -41,8 +41,8 @@
#include "qwaylandbrcmglcontext.h"
-#include "qwaylanddisplay.h"
-#include "qwaylandwindow.h"
+#include <QtWaylandClient/private/qwaylanddisplay_p.h>
+#include <QtWaylandClient/private/qwaylandwindow_p.h>
#include "qwaylandbrcmeglwindow.h"
#include <QtPlatformSupport/private/qeglconvenience_p.h>
diff --git a/src/hardwareintegration/client/brcm-egl/qwaylandbrcmglcontext.h b/src/hardwareintegration/client/brcm-egl/qwaylandbrcmglcontext.h
index 7beef166b..a66c0a601 100644
--- a/src/hardwareintegration/client/brcm-egl/qwaylandbrcmglcontext.h
+++ b/src/hardwareintegration/client/brcm-egl/qwaylandbrcmglcontext.h
@@ -42,7 +42,7 @@
#ifndef QWAYLANDBRCMGLCONTEXT_H
#define QWAYLANDBRCMGLCONTEXT_H
-#include "qwaylanddisplay.h"
+#include <QtWaylandClient/private/qwaylanddisplay_p.h>
#include <qpa/qplatformopenglcontext.h>
diff --git a/src/hardwareintegration/client/wayland-egl/qwaylandeglwindow.cpp b/src/hardwareintegration/client/wayland-egl/qwaylandeglwindow.cpp
index 1e86bd313..dc5bbc3ba 100644
--- a/src/hardwareintegration/client/wayland-egl/qwaylandeglwindow.cpp
+++ b/src/hardwareintegration/client/wayland-egl/qwaylandeglwindow.cpp
@@ -90,7 +90,7 @@ void QWaylandEglWindow::setGeometry(const QRect &rect)
createDecoration();
QMargins margins = frameMargins();
- QSize sizeWithMargins = geometry().size() + QSize(margins.left() + margins.right(), margins.top() + margins.bottom());
+ QSize sizeWithMargins = rect.size() + QSize(margins.left() + margins.right(), margins.top() + margins.bottom());
if (m_waylandEglWindow) {
int current_width, current_height;
diff --git a/src/hardwareintegration/client/wayland-egl/wayland-egl.pri b/src/hardwareintegration/client/wayland-egl/wayland-egl.pri
index bf03a8c72..107a96f93 100644
--- a/src/hardwareintegration/client/wayland-egl/wayland-egl.pri
+++ b/src/hardwareintegration/client/wayland-egl/wayland-egl.pri
@@ -1,7 +1,7 @@
INCLUDEPATH += $$PWD
!contains(QT_CONFIG, no-pkg-config) {
CONFIG += link_pkgconfig
- PKGCONFIG += wayland-egl egl
+ PKGCONFIG += wayland-client wayland-egl egl
} else {
LIBS += -lwayland-egl -lEGL
}
diff --git a/src/hardwareintegration/client/xcomposite-egl/xcomposite-egl.pri b/src/hardwareintegration/client/xcomposite-egl/xcomposite-egl.pri
index fa08daaf2..89ec9840d 100644
--- a/src/hardwareintegration/client/xcomposite-egl/xcomposite-egl.pri
+++ b/src/hardwareintegration/client/xcomposite-egl/xcomposite-egl.pri
@@ -3,7 +3,7 @@ include($$PWD/../xcomposite_share/xcomposite_share.pri)
!contains(QT_CONFIG, no-pkg-config) {
CONFIG += link_pkgconfig
- PKGCONFIG += xcomposite egl x11
+ PKGCONFIG += wayland-client xcomposite egl x11
} else {
LIBS += -lXcomposite -lEGL -lX11
}
diff --git a/src/hardwareintegration/client/xcomposite-glx/qwaylandxcompositeglxintegration.cpp b/src/hardwareintegration/client/xcomposite-glx/qwaylandxcompositeglxintegration.cpp
index 62a9b0f34..b2c0dd5d3 100644
--- a/src/hardwareintegration/client/xcomposite-glx/qwaylandxcompositeglxintegration.cpp
+++ b/src/hardwareintegration/client/xcomposite-glx/qwaylandxcompositeglxintegration.cpp
@@ -49,15 +49,14 @@
QT_BEGIN_NAMESPACE
-QWaylandXCompositeGLXIntegration::QWaylandXCompositeGLXIntegration(QWaylandDisplay *waylandDisplay)
- : mWaylandDisplay(waylandDisplay)
+QWaylandXCompositeGLXIntegration::QWaylandXCompositeGLXIntegration()
+ : mWaylandDisplay(0)
, mWaylandComposite(0)
, mDisplay(0)
, mScreen(0)
, mRootWindow(0)
{
qDebug() << "Using XComposite-GLX";
- waylandDisplay->addRegistryListener(QWaylandXCompositeGLXIntegration::wlDisplayHandleGlobal, this);
}
QWaylandXCompositeGLXIntegration::~QWaylandXCompositeGLXIntegration()
@@ -65,8 +64,10 @@ QWaylandXCompositeGLXIntegration::~QWaylandXCompositeGLXIntegration()
XCloseDisplay(mDisplay);
}
-void QWaylandXCompositeGLXIntegration::initialize()
+void QWaylandXCompositeGLXIntegration::initialize(QWaylandDisplay *display)
{
+ mWaylandDisplay = display;
+ mWaylandDisplay->addRegistryListener(QWaylandXCompositeGLXIntegration::wlDisplayHandleGlobal, this);
}
QWaylandWindow * QWaylandXCompositeGLXIntegration::createEglWindow(QWindow *window)
diff --git a/src/hardwareintegration/client/xcomposite-glx/qwaylandxcompositeglxintegration.h b/src/hardwareintegration/client/xcomposite-glx/qwaylandxcompositeglxintegration.h
index 8e1d762dc..174629159 100644
--- a/src/hardwareintegration/client/xcomposite-glx/qwaylandxcompositeglxintegration.h
+++ b/src/hardwareintegration/client/xcomposite-glx/qwaylandxcompositeglxintegration.h
@@ -42,7 +42,7 @@
#ifndef QWAYLANDXCOMPOSITEGLXINTEGRATION_H
#define QWAYLANDXCOMPOSITEGLXINTEGRATION_H
-#include <QtWaylandClient/qwaylandglintegration.h>
+#include <QtWaylandClient/private/qwaylandclientbufferintegration_p.h>
#include <wayland-client.h>
#include <QtCore/QTextStream>
@@ -63,13 +63,13 @@ struct qt_xcomposite;
QT_BEGIN_NAMESPACE
-class QWaylandXCompositeGLXIntegration : public QWaylandGLIntegration
+class QWaylandXCompositeGLXIntegration : public QWaylandClientBufferIntegration
{
public:
- QWaylandXCompositeGLXIntegration(QWaylandDisplay * waylandDispaly);
+ QWaylandXCompositeGLXIntegration();
~QWaylandXCompositeGLXIntegration();
- void initialize();
+ void initialize(QWaylandDisplay *display);
bool waitingForEvents() { return !mDisplay; }
QWaylandWindow *createEglWindow(QWindow *window);
diff --git a/src/hardwareintegration/client/xcomposite-glx/qwaylandxcompositeglxwindow.h b/src/hardwareintegration/client/xcomposite-glx/qwaylandxcompositeglxwindow.h
index 88f417f2d..9866ad039 100644
--- a/src/hardwareintegration/client/xcomposite-glx/qwaylandxcompositeglxwindow.h
+++ b/src/hardwareintegration/client/xcomposite-glx/qwaylandxcompositeglxwindow.h
@@ -42,13 +42,13 @@
#ifndef QWAYLANDXCOMPOSITEGLXWINDOW_H
#define QWAYLANDXCOMPOSITEGLXWINDOW_H
-#include "qwaylandwindow.h"
+#include <QtWaylandClient/private/qwaylandwindow_p.h>
#include "qwaylandxcompositeglxintegration.h"
#include "qwaylandxcompositeglxcontext.h"
#include <QtCore/QWaitCondition>
-#include "qwaylandbuffer.h"
+#include <QtWaylandClient/private/qwaylandbuffer_p.h>
QT_BEGIN_NAMESPACE
diff --git a/src/hardwareintegration/client/xcomposite-glx/xcomposite-glx.pri b/src/hardwareintegration/client/xcomposite-glx/xcomposite-glx.pri
index cc41322bb..3ecf5e7cb 100644
--- a/src/hardwareintegration/client/xcomposite-glx/xcomposite-glx.pri
+++ b/src/hardwareintegration/client/xcomposite-glx/xcomposite-glx.pri
@@ -3,7 +3,7 @@ include ($$PWD/../xcomposite_share/xcomposite_share.pri)
!contains(QT_CONFIG, no-pkg-config) {
CONFIG += link_pkgconfig
- PKGCONFIG += xcomposite gl x11
+ PKGCONFIG += wayland-client xcomposite gl x11
} else {
LIBS += -lXcomposite -lGL -lX11
}
diff --git a/src/hardwareintegration/compositor/brcm-egl/brcm-egl.pri b/src/hardwareintegration/compositor/brcm-egl/brcm-egl.pri
index c04b4abc9..72645ace3 100644
--- a/src/hardwareintegration/compositor/brcm-egl/brcm-egl.pri
+++ b/src/hardwareintegration/compositor/brcm-egl/brcm-egl.pri
@@ -3,17 +3,30 @@ load(qt_plugin)
QT = compositor compositor-private core-private gui-private
-INCLUDEPATH = $$PWD
-LIBS += -lwayland-server -lEGL
+INCLUDEPATH += $$PWD
+
+!contains(QT_CONFIG, no-pkg-config) {
+ CONFIG += link_pkgconfig
+ PKGCONFIG += wayland-server
+} else {
+ LIBS += -lwayland-server
+}
+
+for(p, QMAKE_LIBDIR_EGL) {
+ exists($$p):LIBS += -L$$p
+}
+
+LIBS += $$QMAKE_LIBS_EGL
+INCLUDEPATH += $$QMAKE_INCDIR_EGL
SOURCES += \
- brcmeglintegration.cpp \
- brcmbuffer.cpp
+ $$PWD/brcmeglintegration.cpp \
+ $$PWD/brcmbuffer.cpp
HEADERS += \
- brcmeglintegration.h \
- brcmbuffer.h
+ $$PWD/brcmeglintegration.h \
+ $$PWD/brcmbuffer.h
CONFIG += wayland-scanner
WAYLANDSERVERSOURCES += $$PWD/../../../extensions/brcm.xml
diff --git a/src/hardwareintegration/compositor/brcm-egl/brcmbuffer.h b/src/hardwareintegration/compositor/brcm-egl/brcmbuffer.h
index 6ec5868f9..785ec2160 100644
--- a/src/hardwareintegration/compositor/brcm-egl/brcmbuffer.h
+++ b/src/hardwareintegration/compositor/brcm-egl/brcmbuffer.h
@@ -42,7 +42,7 @@
#define BRCMBUFFER_H
#include <QtCompositor/private/qwlcompositor_p.h>
-#include <qwayland-server-wayland.h>
+#include <QtCompositor/private/qwayland-server-wayland.h>
#include <QtCore/QSize>
#include <QtCore/QVector>
diff --git a/src/hardwareintegration/compositor/brcm-egl/brcmeglintegration.h b/src/hardwareintegration/compositor/brcm-egl/brcmeglintegration.h
index f6486ed4b..25c5ab71e 100644
--- a/src/hardwareintegration/compositor/brcm-egl/brcmeglintegration.h
+++ b/src/hardwareintegration/compositor/brcm-egl/brcmeglintegration.h
@@ -58,7 +58,7 @@ public:
void initializeHardware(QtWayland::Display *waylandDisplay) Q_DECL_OVERRIDE;
- void udpateTextureFromBuffer(struct ::wl_resource *buffer) Q_DECL_OVERRIDE;
+ void bindTextureToBuffer(struct ::wl_resource *buffer) Q_DECL_OVERRIDE;
bool isYInverted(struct ::wl_resource *) const Q_DECL_OVERRIDE;
QSize bufferSize(struct ::wl_resource *buffer) const Q_DECL_OVERRIDE;
diff --git a/src/hardwareintegration/compositor/wayland-egl/waylandeglclientbufferintegration.cpp b/src/hardwareintegration/compositor/wayland-egl/waylandeglclientbufferintegration.cpp
index a127b7bd2..ede8a9abf 100644
--- a/src/hardwareintegration/compositor/wayland-egl/waylandeglclientbufferintegration.cpp
+++ b/src/hardwareintegration/compositor/wayland-egl/waylandeglclientbufferintegration.cpp
@@ -54,10 +54,12 @@
#include <EGL/egl.h>
#include <EGL/eglext.h>
+/* Needed for compatibility with Mesa older than 10.0. */
+typedef EGLBoolean (EGLAPIENTRYP PFNEGLQUERYWAYLANDBUFFERWL_compat) (EGLDisplay dpy, struct wl_resource *buffer, EGLint attribute, EGLint *value);
+
#ifndef EGL_WL_bind_wayland_display
typedef EGLBoolean (EGLAPIENTRYP PFNEGLBINDWAYLANDDISPLAYWL) (EGLDisplay dpy, struct wl_display *display);
typedef EGLBoolean (EGLAPIENTRYP PFNEGLUNBINDWAYLANDDISPLAYWL) (EGLDisplay dpy, struct wl_display *display);
-typedef EGLBoolean (EGLAPIENTRYP PFNEGLQUERYWAYLANDBUFFERWL) (EGLDisplay dpy, struct wl_buffer *buffer, EGLint attribute, EGLint *value);
#endif
#ifndef EGL_KHR_image
@@ -79,7 +81,6 @@ public:
: egl_display(EGL_NO_DISPLAY)
, valid(false)
, display_bound(false)
- , flipperConnected(false)
, egl_bind_wayland_display(0)
, egl_unbind_wayland_display(0)
, egl_query_wayland_buffer(0)
@@ -90,10 +91,9 @@ public:
EGLDisplay egl_display;
bool valid;
bool display_bound;
- bool flipperConnected;
PFNEGLBINDWAYLANDDISPLAYWL egl_bind_wayland_display;
PFNEGLUNBINDWAYLANDDISPLAYWL egl_unbind_wayland_display;
- PFNEGLQUERYWAYLANDBUFFERWL egl_query_wayland_buffer;
+ PFNEGLQUERYWAYLANDBUFFERWL_compat egl_query_wayland_buffer;
PFNEGLCREATEIMAGEKHRPROC egl_create_image;
PFNEGLDESTROYIMAGEKHRPROC egl_destroy_image;
@@ -138,7 +138,7 @@ void WaylandEglClientBufferIntegration::initializeHardware(QtWayland::Display *w
return;
}
- d->egl_query_wayland_buffer = reinterpret_cast<PFNEGLQUERYWAYLANDBUFFERWL>(eglGetProcAddress("eglQueryWaylandBufferWL"));
+ d->egl_query_wayland_buffer = reinterpret_cast<PFNEGLQUERYWAYLANDBUFFERWL_compat>(eglGetProcAddress("eglQueryWaylandBufferWL"));
if (!d->egl_query_wayland_buffer) {
qWarning("Failed to initialize egl display. Could not find eglQueryWaylandBufferWL.\n");
return;
@@ -212,20 +212,6 @@ bool WaylandEglClientBufferIntegration::isYInverted(struct ::wl_resource *buffer
}
-bool WaylandEglClientBufferIntegration::setDirectRenderSurface(QWaylandSurface *surface)
-{
- Q_D(WaylandEglClientBufferIntegration);
-
- QPlatformScreen *screen = QPlatformScreen::platformScreenForWindow(m_compositor->window());
- QPlatformScreenPageFlipper *flipper = screen ? screen->pageFlipper() : 0;
- if (flipper && !d->flipperConnected) {
- QObject::connect(flipper, SIGNAL(bufferReleased(QPlatformScreenBuffer*)), m_compositor->handle(), SLOT(releaseBuffer(QPlatformScreenBuffer*)));
- d->flipperConnected = true;
- }
- Q_UNUSED(surface);
- return flipper;
-}
-
void *WaylandEglClientBufferIntegration::lockNativeBuffer(struct ::wl_resource *buffer, QOpenGLContext *) const
{
Q_D(const WaylandEglClientBufferIntegration);
diff --git a/src/hardwareintegration/compositor/wayland-egl/waylandeglclientbufferintegration.h b/src/hardwareintegration/compositor/wayland-egl/waylandeglclientbufferintegration.h
index a289baa0d..94d31fc80 100644
--- a/src/hardwareintegration/compositor/wayland-egl/waylandeglclientbufferintegration.h
+++ b/src/hardwareintegration/compositor/wayland-egl/waylandeglclientbufferintegration.h
@@ -59,8 +59,6 @@ public:
void bindTextureToBuffer(struct ::wl_resource *buffer) Q_DECL_OVERRIDE;
bool isYInverted(struct ::wl_resource *) const Q_DECL_OVERRIDE;
- bool setDirectRenderSurface(QWaylandSurface *) Q_DECL_OVERRIDE;
-
void *lockNativeBuffer(struct ::wl_resource *buffer, QOpenGLContext *context) const Q_DECL_OVERRIDE;
void unlockNativeBuffer(void *native_buffer, QOpenGLContext *context) const Q_DECL_OVERRIDE;