summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSamuel Rødal <samuel.rodal@nokia.com>2011-06-23 15:43:55 +0200
committerSamuel Rødal <samuel.rodal@nokia.com>2011-06-23 15:44:33 +0200
commit9f3d56e07671c286c0a3fe0cb1c00814bac2c0ce (patch)
treedb27aa28e824d62034c4a0bfdb807f54c0e0822e
parentc9f2063ba02cad1f1a05db5f2463da5bfc2630cf (diff)
Get Qt compositor working with wayland EGL on refactor branch.
-rw-r--r--examples/qml-compositor/main.cpp6
-rw-r--r--src/qt-compositor/compositor_api/waylandcompositor.cpp8
-rw-r--r--src/qt-compositor/compositor_api/waylandcompositor.h5
-rw-r--r--src/qt-compositor/hardware_integration/mesa_egl/mesaeglintegration.cpp8
4 files changed, 16 insertions, 11 deletions
diff --git a/examples/qml-compositor/main.cpp b/examples/qml-compositor/main.cpp
index 588697506..f5a8b2c2d 100644
--- a/examples/qml-compositor/main.cpp
+++ b/examples/qml-compositor/main.cpp
@@ -57,14 +57,11 @@ class QmlCompositor : public QSGView, public WaylandCompositor
{
Q_OBJECT
public:
- QmlCompositor() : WaylandCompositor(this) {
+ QmlCompositor() : WaylandCompositor(this, const_cast<QGLContext *>(context())) {
setMouseTracking(true);
setSource(QUrl(QLatin1String("qrc:qml/QmlCompositor/main.qml")));
setResizeMode(QSGView::SizeRootObjectToView);
winId();
- if (windowHandle()) {
- windowHandle()->glSurface();
- }
}
signals:
@@ -132,7 +129,6 @@ int main(int argc, char *argv[])
QObject::connect(&compositor, SIGNAL(windowResized(QVariant)), compositor.rootObject(), SLOT(windowResized(QVariant)));
return app.exec();
-
}
#include "main.moc"
diff --git a/src/qt-compositor/compositor_api/waylandcompositor.cpp b/src/qt-compositor/compositor_api/waylandcompositor.cpp
index 36e358a9f..183019070 100644
--- a/src/qt-compositor/compositor_api/waylandcompositor.cpp
+++ b/src/qt-compositor/compositor_api/waylandcompositor.cpp
@@ -48,8 +48,9 @@
#include "waylandsurfaceitem.h"
#endif
-WaylandCompositor::WaylandCompositor(QWidget *topLevelWidget, const char *socketName)
+WaylandCompositor::WaylandCompositor(QWidget *topLevelWidget, QGLContext *context, const char *socketName)
: m_compositor(0)
+ , m_glContext(context)
, m_toplevel_widget(topLevelWidget)
, m_socket_name(socketName)
{
@@ -101,6 +102,11 @@ WaylandSurface *WaylandCompositor::directRenderSurface() const
return surf ? surf->handle() : 0;
}
+QGLContext * WaylandCompositor::glContext() const
+{
+ return m_glContext;
+}
+
QWidget * WaylandCompositor::topLevelWidget() const
{
return m_toplevel_widget;
diff --git a/src/qt-compositor/compositor_api/waylandcompositor.h b/src/qt-compositor/compositor_api/waylandcompositor.h
index e1438d306..316941d3d 100644
--- a/src/qt-compositor/compositor_api/waylandcompositor.h
+++ b/src/qt-compositor/compositor_api/waylandcompositor.h
@@ -49,6 +49,7 @@
#include <QtOpenGL/QGLContext>
#endif
+class QGLContext;
class QWidget;
class QMimeData;
class WaylandSurface;
@@ -61,7 +62,7 @@ namespace Wayland
class WaylandCompositor
{
public:
- WaylandCompositor(QWidget *topLevelWidget = 0, const char *socketName = 0);
+ WaylandCompositor(QWidget *topLevelWidget = 0, QGLContext *context = 0, const char *socketName = 0);
virtual ~WaylandCompositor();
void frameFinished(WaylandSurface *surface = 0);
@@ -72,6 +73,7 @@ public:
void setDirectRenderSurface(WaylandSurface *surface);
WaylandSurface *directRenderSurface() const;
+ QGLContext *glContext() const;
QWidget *topLevelWidget()const;
virtual void surfaceCreated(WaylandSurface *surface) = 0;
@@ -87,6 +89,7 @@ private:
static void retainedSelectionChanged(QMimeData *mimeData, void *param);
Wayland::Compositor *m_compositor;
+ QGLContext *m_glContext;
QWidget *m_toplevel_widget;
QByteArray m_socket_name;
};
diff --git a/src/qt-compositor/hardware_integration/mesa_egl/mesaeglintegration.cpp b/src/qt-compositor/hardware_integration/mesa_egl/mesaeglintegration.cpp
index 4d3ae462b..444b0e393 100644
--- a/src/qt-compositor/hardware_integration/mesa_egl/mesaeglintegration.cpp
+++ b/src/qt-compositor/hardware_integration/mesa_egl/mesaeglintegration.cpp
@@ -41,7 +41,7 @@
#include "mesaeglintegration.h"
#include <QtGui/QPlatformNativeInterface>
-#include <QtGui/private/qapplication_p.h>
+#include <QtWidgets/private/qapplication_p.h>
#define EGL_EGLEXT_PROTOTYPES
#include <EGL/egl.h>
@@ -82,13 +82,13 @@ void MesaEglIntegration::initializeHardware(Wayland::Display *waylandDisplay)
QPlatformNativeInterface *nativeInterface = QApplicationPrivate::platformIntegration()->nativeInterface();
if (nativeInterface) {
- d->egl_display = nativeInterface->nativeResourceForWidget("EglDisplay",m_compositor->topLevelWidget());
+ d->egl_display = nativeInterface->nativeResourceForWindow("EglDisplay", m_compositor->topLevelWidget()->windowHandle());
if (d->egl_display) {
- eglBindWaylandDisplayWL(d->egl_display,waylandDisplay->handle());
+ eglBindWaylandDisplayWL(d->egl_display, waylandDisplay->handle());
} else {
fprintf(stderr, "Failed to initialize egl display");
}
- d->egl_context = nativeInterface->nativeResourceForWidget("EglContext",m_compositor->topLevelWidget());
+ d->egl_context = nativeInterface->nativeResourceForContext("EglContext", m_compositor->glContext()->contextHandle());
}
}