summaryrefslogtreecommitdiffstats
path: root/src/hardwareintegration
diff options
context:
space:
mode:
authorJorgen Lind <jorgen.lind@digia.com>2014-03-10 09:25:04 +0100
committerThe Qt Project <gerrit-noreply@qt-project.org>2014-03-11 15:35:08 +0100
commit6b173d993542e2aed01b5a97d3e0fb64940ad432 (patch)
treed9a3e3376917b9fa21c64d6a325e57fb5c8e0b22 /src/hardwareintegration
parenta9d9fa463cd6b915fd4fda7e06317b5299c893e7 (diff)
Fixup for GLX integration
Change-Id: I2de94481f7d3e109fdce7ca961f8969299cf5d9e Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
Diffstat (limited to 'src/hardwareintegration')
-rw-r--r--src/hardwareintegration/client/xcomposite-egl/qwaylandxcompositeeglclientbufferintegration.cpp5
-rw-r--r--src/hardwareintegration/client/xcomposite-egl/qwaylandxcompositeeglclientbufferintegration.h1
-rw-r--r--src/hardwareintegration/client/xcomposite-glx/qwaylandxcompositeglxintegration.cpp4
-rw-r--r--src/hardwareintegration/client/xcomposite-glx/qwaylandxcompositeglxintegration.h7
-rw-r--r--src/hardwareintegration/client/xcomposite-glx/qwaylandxcompositeglxwindow.cpp5
-rw-r--r--src/hardwareintegration/client/xcomposite-glx/qwaylandxcompositeglxwindow.h4
-rw-r--r--src/hardwareintegration/compositor/xcomposite-glx/xcompositeglxintegration.cpp4
7 files changed, 17 insertions, 13 deletions
diff --git a/src/hardwareintegration/client/xcomposite-egl/qwaylandxcompositeeglclientbufferintegration.cpp b/src/hardwareintegration/client/xcomposite-egl/qwaylandxcompositeeglclientbufferintegration.cpp
index 12ab0a47d..c26ebd6ae 100644
--- a/src/hardwareintegration/client/xcomposite-egl/qwaylandxcompositeeglclientbufferintegration.cpp
+++ b/src/hardwareintegration/client/xcomposite-egl/qwaylandxcompositeeglclientbufferintegration.cpp
@@ -52,6 +52,7 @@ QT_BEGIN_NAMESPACE
QWaylandXCompositeEGLClientBufferIntegration::QWaylandXCompositeEGLClientBufferIntegration()
: QWaylandClientBufferIntegration()
, mWaylandDisplay(0)
+ , mDisplay(0)
{
qDebug() << "Using XComposite-EGL";
}
@@ -65,6 +66,10 @@ void QWaylandXCompositeEGLClientBufferIntegration::initialize(QWaylandDisplay *d
{
mWaylandDisplay = display;
mWaylandDisplay->addRegistryListener(&wlDisplayHandleGlobal, this);
+ while (!mDisplay) {
+ display->flushRequests();
+ display->blockingReadEvents();
+ }
}
QWaylandWindow * QWaylandXCompositeEGLClientBufferIntegration::createEglWindow(QWindow *window)
diff --git a/src/hardwareintegration/client/xcomposite-egl/qwaylandxcompositeeglclientbufferintegration.h b/src/hardwareintegration/client/xcomposite-egl/qwaylandxcompositeeglclientbufferintegration.h
index 9cf19e1c7..cce0e91bf 100644
--- a/src/hardwareintegration/client/xcomposite-egl/qwaylandxcompositeeglclientbufferintegration.h
+++ b/src/hardwareintegration/client/xcomposite-egl/qwaylandxcompositeeglclientbufferintegration.h
@@ -75,7 +75,6 @@ public:
~QWaylandXCompositeEGLClientBufferIntegration();
void initialize(QWaylandDisplay *dispaly) Q_DECL_OVERRIDE;
- bool waitingForEvents() Q_DECL_OVERRIDE { return !mDisplay; }
QWaylandWindow *createEglWindow(QWindow *window) Q_DECL_OVERRIDE;
QPlatformOpenGLContext *createPlatformOpenGLContext(const QSurfaceFormat &glFormat, QPlatformOpenGLContext *share) const Q_DECL_OVERRIDE;
diff --git a/src/hardwareintegration/client/xcomposite-glx/qwaylandxcompositeglxintegration.cpp b/src/hardwareintegration/client/xcomposite-glx/qwaylandxcompositeglxintegration.cpp
index b2c0dd5d3..f08f8dcb5 100644
--- a/src/hardwareintegration/client/xcomposite-glx/qwaylandxcompositeglxintegration.cpp
+++ b/src/hardwareintegration/client/xcomposite-glx/qwaylandxcompositeglxintegration.cpp
@@ -68,6 +68,10 @@ void QWaylandXCompositeGLXIntegration::initialize(QWaylandDisplay *display)
{
mWaylandDisplay = display;
mWaylandDisplay->addRegistryListener(QWaylandXCompositeGLXIntegration::wlDisplayHandleGlobal, this);
+ while (!mDisplay) {
+ display->flushRequests();
+ display->blockingReadEvents();
+ }
}
QWaylandWindow * QWaylandXCompositeGLXIntegration::createEglWindow(QWindow *window)
diff --git a/src/hardwareintegration/client/xcomposite-glx/qwaylandxcompositeglxintegration.h b/src/hardwareintegration/client/xcomposite-glx/qwaylandxcompositeglxintegration.h
index 174629159..1751f775f 100644
--- a/src/hardwareintegration/client/xcomposite-glx/qwaylandxcompositeglxintegration.h
+++ b/src/hardwareintegration/client/xcomposite-glx/qwaylandxcompositeglxintegration.h
@@ -69,11 +69,10 @@ public:
QWaylandXCompositeGLXIntegration();
~QWaylandXCompositeGLXIntegration();
- void initialize(QWaylandDisplay *display);
- bool waitingForEvents() { return !mDisplay; }
+ void initialize(QWaylandDisplay *display) Q_DECL_OVERRIDE;
- QWaylandWindow *createEglWindow(QWindow *window);
- QPlatformOpenGLContext *createPlatformOpenGLContext(const QSurfaceFormat &glFormat, QPlatformOpenGLContext *share) const;
+ QWaylandWindow *createEglWindow(QWindow *window) Q_DECL_OVERRIDE;
+ QPlatformOpenGLContext *createPlatformOpenGLContext(const QSurfaceFormat &glFormat, QPlatformOpenGLContext *share) const Q_DECL_OVERRIDE;
QWaylandDisplay *waylandDisplay() const;
struct qt_xcomposite *waylandXComposite() const;
diff --git a/src/hardwareintegration/client/xcomposite-glx/qwaylandxcompositeglxwindow.cpp b/src/hardwareintegration/client/xcomposite-glx/qwaylandxcompositeglxwindow.cpp
index f33790f33..899ed7649 100644
--- a/src/hardwareintegration/client/xcomposite-glx/qwaylandxcompositeglxwindow.cpp
+++ b/src/hardwareintegration/client/xcomposite-glx/qwaylandxcompositeglxwindow.cpp
@@ -56,7 +56,6 @@ QWaylandXCompositeGLXWindow::QWaylandXCompositeGLXWindow(QWindow *window, QWayla
, m_glxIntegration(glxIntegration)
, m_xWindow(0)
, m_config(qglx_findConfig(glxIntegration->xDisplay(), glxIntegration->screen(), window->format(), GLX_WINDOW_BIT | GLX_PIXMAP_BIT))
- , m_buffer(0)
{
}
@@ -71,8 +70,6 @@ void QWaylandXCompositeGLXWindow::setGeometry(const QRect &rect)
QWaylandWindow::setGeometry(rect);
if (m_xWindow) {
- delete m_buffer;
-
XDestroyWindow(m_glxIntegration->xDisplay(), m_xWindow);
m_xWindow = 0;
}
@@ -115,7 +112,7 @@ void QWaylandXCompositeGLXWindow::createSurface()
XMapWindow(m_glxIntegration->xDisplay(), m_xWindow);
XSync(m_glxIntegration->xDisplay(), False);
- m_buffer = new QWaylandXCompositeBuffer(m_glxIntegration->waylandXComposite(),
+ mBuffer = new QWaylandXCompositeBuffer(m_glxIntegration->waylandXComposite(),
(uint32_t)m_xWindow,
size);
}
diff --git a/src/hardwareintegration/client/xcomposite-glx/qwaylandxcompositeglxwindow.h b/src/hardwareintegration/client/xcomposite-glx/qwaylandxcompositeglxwindow.h
index 9866ad039..6fe99466d 100644
--- a/src/hardwareintegration/client/xcomposite-glx/qwaylandxcompositeglxwindow.h
+++ b/src/hardwareintegration/client/xcomposite-glx/qwaylandxcompositeglxwindow.h
@@ -62,7 +62,7 @@ public:
Window xWindow() const;
- QWaylandBuffer *buffer() { return m_buffer; }
+ QWaylandBuffer *buffer() { return mBuffer; }
private:
void createSurface();
@@ -71,8 +71,6 @@ private:
Window m_xWindow;
GLXFBConfig m_config;
-
- QWaylandBuffer *m_buffer;
};
QT_END_NAMESPACE
diff --git a/src/hardwareintegration/compositor/xcomposite-glx/xcompositeglxintegration.cpp b/src/hardwareintegration/compositor/xcomposite-glx/xcompositeglxintegration.cpp
index dce1fdc31..bd5ddef9a 100644
--- a/src/hardwareintegration/compositor/xcomposite-glx/xcompositeglxintegration.cpp
+++ b/src/hardwareintegration/compositor/xcomposite-glx/xcompositeglxintegration.cpp
@@ -76,6 +76,7 @@ XCompositeGLXClientBufferIntegration::XCompositeGLXClientBufferIntegration()
, mDisplay(0)
, mHandler(0)
{
+ qDebug() << "Loading GLX integration";
}
XCompositeGLXClientBufferIntegration::~XCompositeGLXClientBufferIntegration()
@@ -85,6 +86,7 @@ XCompositeGLXClientBufferIntegration::~XCompositeGLXClientBufferIntegration()
void XCompositeGLXClientBufferIntegration::initializeHardware(QtWayland::Display *)
{
+ qDebug() << "Initializing GLX integration";
QPlatformNativeInterface *nativeInterface = QGuiApplicationPrivate::platformIntegration()->nativeInterface();
if (nativeInterface) {
mDisplay = static_cast<Display *>(nativeInterface->nativeResourceForWindow("Display",m_compositor->window()));
@@ -112,7 +114,7 @@ void XCompositeGLXClientBufferIntegration::initializeHardware(QtWayland::Display
delete glContext;
}
-void XCompositeGLXClientBufferIntegration::updateTextureFromBuffer(struct ::wl_resource *buffer)
+void XCompositeGLXClientBufferIntegration::bindTextureToBuffer(struct ::wl_resource *buffer)
{
XCompositeBuffer *compositorBuffer = XCompositeBuffer::fromResource(buffer);
Pixmap pixmap = XCompositeNameWindowPixmap(mDisplay, compositorBuffer->window());