summaryrefslogtreecommitdiffstats
path: root/src/plugins/platforms
diff options
context:
space:
mode:
authorSamuel Rødal <samuel.rodal@nokia.com>2012-03-23 08:51:15 +0100
committerQt by Nokia <qt-info@nokia.com>2012-03-23 22:05:56 +0100
commit4a79b52bde74ed7332d92543b8cf1ac810e19c6e (patch)
treea2706bfcb3ba0d3f3329de5c47cca4d0a259d062 /src/plugins/platforms
parent400e59201bf93dc9519cc4cf58286863330dc4eb (diff)
Make QEglFSBackingStore use QtGui-only APIs.
We now have better replacements for QGLPaintDevice etc. Change-Id: I3ac563f0ac26a563b3c788d16c77e0237d9d96d9 Reviewed-by: Donald Carr <donald.carr@nokia.com> Reviewed-by: Jørgen Lind <jorgen.lind@nokia.com> Reviewed-by: Andy Nichols <andy.nichols@nokia.com>
Diffstat (limited to 'src/plugins/platforms')
-rw-r--r--src/plugins/platforms/eglfs/eglfs.pro4
-rw-r--r--src/plugins/platforms/eglfs/qeglfsbackingstore.cpp77
-rw-r--r--src/plugins/platforms/eglfs/qeglfsbackingstore.h17
3 files changed, 43 insertions, 55 deletions
diff --git a/src/plugins/platforms/eglfs/eglfs.pro b/src/plugins/platforms/eglfs/eglfs.pro
index 86a1b8239c..c12d612c98 100644
--- a/src/plugins/platforms/eglfs/eglfs.pro
+++ b/src/plugins/platforms/eglfs/eglfs.pro
@@ -3,10 +3,6 @@ load(qt_plugin)
QT += core-private gui-private platformsupport-private
-!contains(QT_CONFIG, no-widgets) {
- QT += opengl opengl-private widgets-private
-}
-
DESTDIR = $$QT.gui.plugins/platforms
#DEFINES += QEGL_EXTRA_DEBUG
diff --git a/src/plugins/platforms/eglfs/qeglfsbackingstore.cpp b/src/plugins/platforms/eglfs/qeglfsbackingstore.cpp
index d2e4a47e56..8e9e5f76e0 100644
--- a/src/plugins/platforms/eglfs/qeglfsbackingstore.cpp
+++ b/src/plugins/platforms/eglfs/qeglfsbackingstore.cpp
@@ -41,67 +41,54 @@
#include "qeglfsbackingstore.h"
-#ifndef QT_NO_WIDGETS
-#include <QtOpenGL/private/qgl_p.h>
-#include <QtOpenGL/private/qglpaintdevice_p.h>
-#endif //QT_NO_WIDGETS
-
-#include <QtGui/QPlatformOpenGLContext>
-#include <QtGui/QScreen>
+#include <QtGui/QOpenGLContext>
+#include <QtGui/QOpenGLPaintDevice>
QT_BEGIN_NAMESPACE
-#ifndef QT_NO_WIDGETS
-class QEglFSPaintDevice : public QGLPaintDevice
+QEglFSBackingStore::QEglFSBackingStore(QWindow *window)
+ : QPlatformBackingStore(window)
+ , m_context(new QOpenGLContext)
{
-public:
- QEglFSPaintDevice(QEglFSScreen *screen)
- :QGLPaintDevice(), m_screen(screen)
- {
- #ifdef QEGL_EXTRA_DEBUG
- qWarning("QEglPaintDevice %p, %p",this, screen);
- #endif
- }
-
- QSize size() const { return m_screen->geometry().size(); }
- QGLContext* context() const { return QGLContext::fromOpenGLContext(m_screen->platformContext()->context()); }
-
- QPaintEngine *paintEngine() const { return qt_qgl_paint_engine(); }
+ m_context->setFormat(window->requestedFormat());
+ m_context->setScreen(window->screen());
+ m_context->create();
+}
- void beginPaint(){
- QGLPaintDevice::beginPaint();
- }
-private:
- QEglFSScreen *m_screen;
- QGLContext *m_context;
-};
-#endif //QT_NO_WIDGETS
+QEglFSBackingStore::~QEglFSBackingStore()
+{
+ delete m_context;
+}
-QEglFSBackingStore::QEglFSBackingStore(QWindow *window)
- : QPlatformBackingStore(window),
- m_paintDevice(0)
+QPaintDevice *QEglFSBackingStore::paintDevice()
{
-#ifdef QEGL_EXTRA_DEBUG
- qWarning("QEglBackingStore %p, %p", window, window->screen());
-#endif
-#ifdef QT_NO_WIDGETS
- m_paintDevice = new QImage(0,0);
-#else
- m_paintDevice = new QEglFSPaintDevice(static_cast<QEglFSScreen *>(window->screen()->handle()));
-#endif //QT_NO_WIDGETS
+ return m_device;
}
void QEglFSBackingStore::flush(QWindow *window, const QRegion &region, const QPoint &offset)
{
- Q_UNUSED(window);
Q_UNUSED(region);
Q_UNUSED(offset);
+
#ifdef QEGL_EXTRA_DEBUG
qWarning("QEglBackingStore::flush %p", window);
#endif
-#ifndef QT_NO_WIDGETS
- static_cast<QEglFSPaintDevice *>(m_paintDevice)->context()->swapBuffers();
-#endif //QT_NO_WIDGETS
+
+ m_context->swapBuffers(window);
+}
+
+void QEglFSBackingStore::beginPaint(const QRegion &)
+{
+ // needed to prevent QOpenGLContext::makeCurrent() from failing
+ window()->setSurfaceType(QSurface::OpenGLSurface);
+
+ m_context->makeCurrent(window());
+ m_device = new QOpenGLPaintDevice(window()->size());
+}
+
+void QEglFSBackingStore::endPaint()
+{
+ delete m_device;
}
void QEglFSBackingStore::resize(const QSize &size, const QRegion &staticContents)
diff --git a/src/plugins/platforms/eglfs/qeglfsbackingstore.h b/src/plugins/platforms/eglfs/qeglfsbackingstore.h
index 1ae3ecdc61..1eb4d8d79a 100644
--- a/src/plugins/platforms/eglfs/qeglfsbackingstore.h
+++ b/src/plugins/platforms/eglfs/qeglfsbackingstore.h
@@ -42,25 +42,30 @@
#ifndef QEGLWINDOWSURFACE_H
#define QEGLWINDOWSURFACE_H
-#include "qeglfsintegration.h"
-#include "qeglfswindow.h"
-
#include <QtGui/qplatformbackingstore_qpa.h>
QT_BEGIN_NAMESPACE
+class QOpenGLContext;
+class QOpenGLPaintDevice;
+
class QEglFSBackingStore : public QPlatformBackingStore
{
public:
QEglFSBackingStore(QWindow *window);
- ~QEglFSBackingStore() { delete m_paintDevice; }
+ ~QEglFSBackingStore();
+
+ QPaintDevice *paintDevice();
+
+ void beginPaint(const QRegion &);
+ void endPaint();
- QPaintDevice *paintDevice() { return m_paintDevice; }
void flush(QWindow *window, const QRegion &region, const QPoint &offset);
void resize(const QSize &size, const QRegion &staticContents);
private:
- QPaintDevice *m_paintDevice;
+ QOpenGLContext *m_context;
+ QOpenGLPaintDevice *m_device;
};
QT_END_NAMESPACE