QNX: Remove dependency on QtWidgets from QNX QPA plugin
Change-Id: I52027752630beee81a97644983dbccf973c0c2c2 Reviewed-by: Kevin Krammer <kevin.krammer@kdab.com> Reviewed-by: Kevin Ottens <kevin.ottens.qnx@kdab.com> Reviewed-by: Thomas McGuire <thomas.mcguire@kdab.com> Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com>
This commit is contained in:
parent
3a2bc9530e
commit
89a1a943ce
@ -2,11 +2,7 @@ TARGET = qnx
|
||||
include(../../qpluginbase.pri)
|
||||
|
||||
QTDIR_build:DESTDIR = $$QT_BUILD_TREE/plugins/platforms
|
||||
QT += platformsupport platformsupport-private widgets-private
|
||||
|
||||
contains(QT_CONFIG, opengles2) {
|
||||
QT += opengl opengl-private
|
||||
}
|
||||
QT += platformsupport platformsupport-private
|
||||
|
||||
# Uncomment this to build with support for IMF once it becomes available in the BBNDK
|
||||
#CONFIG += qqnx_imf
|
||||
@ -80,11 +76,9 @@ HEADERS = main.h \
|
||||
LIBS += -lscreen
|
||||
|
||||
contains(QT_CONFIG, opengles2) {
|
||||
SOURCES += qqnxglcontext.cpp \
|
||||
qqnxglbackingstore.cpp
|
||||
SOURCES += qqnxglcontext.cpp
|
||||
|
||||
HEADERS += qqnxglcontext.h \
|
||||
qqnxglbackingstore.h
|
||||
HEADERS += qqnxglcontext.h
|
||||
|
||||
LIBS += -lEGL
|
||||
}
|
||||
|
@ -1,182 +0,0 @@
|
||||
/***************************************************************************
|
||||
**
|
||||
** Copyright (C) 2011 - 2012 Research In Motion
|
||||
** Contact: http://www.qt-project.org/
|
||||
**
|
||||
** This file is part of the plugins of the Qt Toolkit.
|
||||
**
|
||||
** $QT_BEGIN_LICENSE:LGPL$
|
||||
** GNU Lesser General Public License Usage
|
||||
** This file may be used under the terms of the GNU Lesser General Public
|
||||
** License version 2.1 as published by the Free Software Foundation and
|
||||
** appearing in the file LICENSE.LGPL included in the packaging of this
|
||||
** file. Please review the following information to ensure the GNU Lesser
|
||||
** General Public License version 2.1 requirements will be met:
|
||||
** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
|
||||
**
|
||||
** In addition, as a special exception, Nokia gives you certain additional
|
||||
** rights. These rights are described in the Nokia Qt LGPL Exception
|
||||
** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
|
||||
**
|
||||
** GNU General Public License Usage
|
||||
** Alternatively, this file may be used under the terms of the GNU General
|
||||
** Public License version 3.0 as published by the Free Software Foundation
|
||||
** and appearing in the file LICENSE.GPL included in the packaging of this
|
||||
** file. Please review the following information to ensure the GNU General
|
||||
** Public License version 3.0 requirements will be met:
|
||||
** http://www.gnu.org/copyleft/gpl.html.
|
||||
**
|
||||
** Other Usage
|
||||
** Alternatively, this file may be used in accordance with the terms and
|
||||
** conditions contained in a signed written agreement between you and Nokia.
|
||||
**
|
||||
**
|
||||
**
|
||||
**
|
||||
**
|
||||
**
|
||||
** $QT_END_LICENSE$
|
||||
**
|
||||
****************************************************************************/
|
||||
|
||||
#include "qqnxglbackingstore.h"
|
||||
#include "qqnxglcontext.h"
|
||||
#include "qqnxwindow.h"
|
||||
#include "qqnxscreen.h"
|
||||
|
||||
#include <QtGui/qwindow.h>
|
||||
|
||||
#include <QtOpenGL/private/qgl_p.h>
|
||||
#include <QtOpenGL/QGLContext>
|
||||
|
||||
#include <QtCore/QDebug>
|
||||
|
||||
#include <errno.h>
|
||||
|
||||
#ifdef QQNXGLBACKINGSTORE_DEBUG
|
||||
#define qGLBackingStoreDebug qDebug
|
||||
#else
|
||||
#define qGLBackingStoreDebug QT_NO_QDEBUG_MACRO
|
||||
#endif
|
||||
|
||||
QT_BEGIN_NAMESPACE
|
||||
|
||||
QQnxGLPaintDevice::QQnxGLPaintDevice(QWindow *window)
|
||||
: QGLPaintDevice(),
|
||||
m_window(0),
|
||||
m_glContext(0)
|
||||
{
|
||||
m_window = static_cast<QQnxWindow*>(window->handle());
|
||||
|
||||
// Extract the QPlatformOpenGLContext from the window
|
||||
QPlatformOpenGLContext *platformOpenGLContext = m_window->platformOpenGLContext();
|
||||
|
||||
// Convert this to a QGLContext
|
||||
m_glContext = QGLContext::fromOpenGLContext(platformOpenGLContext->context());
|
||||
}
|
||||
|
||||
QQnxGLPaintDevice::~QQnxGLPaintDevice()
|
||||
{
|
||||
// Cleanup GL context
|
||||
delete m_glContext;
|
||||
}
|
||||
|
||||
QPaintEngine *QQnxGLPaintDevice::paintEngine() const
|
||||
{
|
||||
// Select a paint engine based on configued OpenGL version
|
||||
return qt_qgl_paint_engine();
|
||||
}
|
||||
|
||||
QSize QQnxGLPaintDevice::size() const
|
||||
{
|
||||
// Get size of EGL surface
|
||||
return m_window->geometry().size();
|
||||
}
|
||||
|
||||
|
||||
QQnxGLBackingStore::QQnxGLBackingStore(QWindow *window)
|
||||
: QPlatformBackingStore(window),
|
||||
m_openGLContext(0),
|
||||
m_paintDevice(0),
|
||||
m_requestedSize(),
|
||||
m_size()
|
||||
{
|
||||
qGLBackingStoreDebug() << Q_FUNC_INFO << "w =" << window;
|
||||
|
||||
// Create an OpenGL paint device which in turn creates a QGLContext for us
|
||||
m_paintDevice = new QQnxGLPaintDevice(window);
|
||||
m_openGLContext = m_paintDevice->context()->contextHandle();
|
||||
}
|
||||
|
||||
QQnxGLBackingStore::~QQnxGLBackingStore()
|
||||
{
|
||||
qGLBackingStoreDebug() << Q_FUNC_INFO << "w =" << window();
|
||||
|
||||
// cleanup OpenGL paint device
|
||||
delete m_paintDevice;
|
||||
}
|
||||
|
||||
void QQnxGLBackingStore::flush(QWindow *window, const QRegion ®ion, const QPoint &offset)
|
||||
{
|
||||
Q_UNUSED(region);
|
||||
Q_UNUSED(offset);
|
||||
qGLBackingStoreDebug() << Q_FUNC_INFO << "w =" << window;
|
||||
|
||||
// update the display with newly rendered content
|
||||
m_openGLContext->swapBuffers(window);
|
||||
}
|
||||
|
||||
void QQnxGLBackingStore::resize(const QSize &size, const QRegion &staticContents)
|
||||
{
|
||||
Q_UNUSED(staticContents);
|
||||
qGLBackingStoreDebug() << Q_FUNC_INFO << "w =" << window() << ", s =" << size;
|
||||
|
||||
// NOTE: defer resizing window buffers until next paint as
|
||||
// resize() can be called multiple times before a paint occurs
|
||||
m_requestedSize = size;
|
||||
}
|
||||
|
||||
void QQnxGLBackingStore::beginPaint(const QRegion ®ion)
|
||||
{
|
||||
Q_UNUSED(region);
|
||||
qGLBackingStoreDebug() << Q_FUNC_INFO << "w =" << window();
|
||||
|
||||
// resize EGL surface if window surface resized
|
||||
if (m_size != m_requestedSize) {
|
||||
resizeSurface(m_requestedSize);
|
||||
}
|
||||
}
|
||||
|
||||
void QQnxGLBackingStore::endPaint(const QRegion ®ion)
|
||||
{
|
||||
Q_UNUSED(region);
|
||||
qGLBackingStoreDebug() << Q_FUNC_INFO << "w =" << window();
|
||||
}
|
||||
|
||||
void QQnxGLBackingStore::resizeSurface(const QSize &size)
|
||||
{
|
||||
// need to destroy surface so make sure its not current
|
||||
bool restoreCurrent = false;
|
||||
QQnxGLContext *platformContext = static_cast<QQnxGLContext *>(m_openGLContext->handle());
|
||||
if (platformContext->isCurrent()) {
|
||||
m_openGLContext->doneCurrent();
|
||||
restoreCurrent = true;
|
||||
}
|
||||
|
||||
// destroy old EGL surface
|
||||
platformContext->destroySurface();
|
||||
|
||||
// resize window's buffers
|
||||
static_cast<QQnxWindow*>(window()->handle())->setBufferSize(size);
|
||||
|
||||
// re-create EGL surface with new size
|
||||
m_size = size;
|
||||
platformContext->createSurface(window()->handle());
|
||||
|
||||
// make context current again
|
||||
if (restoreCurrent) {
|
||||
m_openGLContext->makeCurrent(window());
|
||||
}
|
||||
}
|
||||
|
||||
QT_END_NAMESPACE
|
@ -1,95 +0,0 @@
|
||||
/***************************************************************************
|
||||
**
|
||||
** Copyright (C) 2011 - 2012 Research In Motion
|
||||
** Contact: http://www.qt-project.org/
|
||||
**
|
||||
** This file is part of the plugins of the Qt Toolkit.
|
||||
**
|
||||
** $QT_BEGIN_LICENSE:LGPL$
|
||||
** GNU Lesser General Public License Usage
|
||||
** This file may be used under the terms of the GNU Lesser General Public
|
||||
** License version 2.1 as published by the Free Software Foundation and
|
||||
** appearing in the file LICENSE.LGPL included in the packaging of this
|
||||
** file. Please review the following information to ensure the GNU Lesser
|
||||
** General Public License version 2.1 requirements will be met:
|
||||
** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
|
||||
**
|
||||
** In addition, as a special exception, Nokia gives you certain additional
|
||||
** rights. These rights are described in the Nokia Qt LGPL Exception
|
||||
** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
|
||||
**
|
||||
** GNU General Public License Usage
|
||||
** Alternatively, this file may be used under the terms of the GNU General
|
||||
** Public License version 3.0 as published by the Free Software Foundation
|
||||
** and appearing in the file LICENSE.GPL included in the packaging of this
|
||||
** file. Please review the following information to ensure the GNU General
|
||||
** Public License version 3.0 requirements will be met:
|
||||
** http://www.gnu.org/copyleft/gpl.html.
|
||||
**
|
||||
** Other Usage
|
||||
** Alternatively, this file may be used in accordance with the terms and
|
||||
** conditions contained in a signed written agreement between you and Nokia.
|
||||
**
|
||||
**
|
||||
**
|
||||
**
|
||||
**
|
||||
**
|
||||
** $QT_END_LICENSE$
|
||||
**
|
||||
****************************************************************************/
|
||||
|
||||
#ifndef QQNXGLBACKINGSTORE_H
|
||||
#define QQNXGLBACKINGSTORE_H
|
||||
|
||||
#include <qpa/qplatformbackingstore.h>
|
||||
#include <QtOpenGL/private/qglpaintdevice_p.h>
|
||||
|
||||
#include <screen/screen.h>
|
||||
|
||||
QT_BEGIN_NAMESPACE
|
||||
|
||||
class QGLContext;
|
||||
class QQnxGLContext;
|
||||
class QQnxScreen;
|
||||
class QQnxWindow;
|
||||
|
||||
class QQnxGLPaintDevice : public QGLPaintDevice
|
||||
{
|
||||
public:
|
||||
QQnxGLPaintDevice(QWindow *window);
|
||||
~QQnxGLPaintDevice();
|
||||
|
||||
QPaintEngine *paintEngine() const;
|
||||
QSize size() const;
|
||||
QGLContext *context() const { return m_glContext; }
|
||||
|
||||
private:
|
||||
QQnxWindow *m_window;
|
||||
QGLContext *m_glContext;
|
||||
};
|
||||
|
||||
class QQnxGLBackingStore : public QPlatformBackingStore
|
||||
{
|
||||
public:
|
||||
QQnxGLBackingStore(QWindow *window);
|
||||
~QQnxGLBackingStore();
|
||||
|
||||
QPaintDevice *paintDevice() { return m_paintDevice; }
|
||||
void flush(QWindow *window, const QRegion ®ion, const QPoint &offset);
|
||||
void resize(const QSize &size, const QRegion &staticContents);
|
||||
void beginPaint(const QRegion ®ion);
|
||||
void endPaint(const QRegion ®ion);
|
||||
|
||||
void resizeSurface(const QSize &size);
|
||||
|
||||
private:
|
||||
QOpenGLContext *m_openGLContext;
|
||||
QQnxGLPaintDevice *m_paintDevice;
|
||||
QSize m_requestedSize;
|
||||
QSize m_size;
|
||||
};
|
||||
|
||||
QT_END_NAMESPACE
|
||||
|
||||
#endif // QQNXGLBACKINGSTORE_H
|
@ -84,9 +84,7 @@
|
||||
#include <QtGui/qwindowsysteminterface.h>
|
||||
|
||||
#if !defined(QT_NO_OPENGL)
|
||||
#include "qqnxglbackingstore.h"
|
||||
#include "qqnxglcontext.h"
|
||||
|
||||
#include <QtGui/QOpenGLContext>
|
||||
#endif
|
||||
|
||||
@ -117,9 +115,6 @@ QQnxIntegration::QQnxIntegration()
|
||||
#endif
|
||||
, m_services(0)
|
||||
, m_fontDatabase(new QGenericUnixFontDatabase())
|
||||
#if !defined(QT_NO_OPENGL)
|
||||
, m_paintUsingOpenGL(false)
|
||||
#endif
|
||||
#if defined(Q_OS_BLACKBERRY)
|
||||
, m_eventDispatcher(new QQnxEventDispatcherBlackberry())
|
||||
, m_bpsEventFilter(0)
|
||||
@ -301,11 +296,6 @@ QPlatformWindow *QQnxIntegration::createPlatformWindow(QWindow *window) const
|
||||
QPlatformBackingStore *QQnxIntegration::createPlatformBackingStore(QWindow *window) const
|
||||
{
|
||||
qIntegrationDebug() << Q_FUNC_INFO;
|
||||
#if !defined(QT_NO_OPENGL)
|
||||
if (paintUsingOpenGL())
|
||||
return new QQnxGLBackingStore(window);
|
||||
else
|
||||
#endif
|
||||
return new QQnxRasterBackingStore(window);
|
||||
}
|
||||
|
||||
|
@ -107,10 +107,6 @@ public:
|
||||
|
||||
QVariant styleHint(StyleHint hint) const;
|
||||
|
||||
#if !defined(QT_NO_OPENGL)
|
||||
bool paintUsingOpenGL() const { return m_paintUsingOpenGL; }
|
||||
#endif
|
||||
|
||||
QPlatformServices *services() const;
|
||||
|
||||
#if defined(Q_OS_BLACKBERRY)
|
||||
@ -139,9 +135,6 @@ private:
|
||||
#endif
|
||||
QQnxServices *m_services;
|
||||
QPlatformFontDatabase *m_fontDatabase;
|
||||
#if !defined(QT_NO_OPENGL)
|
||||
bool m_paintUsingOpenGL;
|
||||
#endif
|
||||
QAbstractEventDispatcher *m_eventDispatcher;
|
||||
#if defined(Q_OS_BLACKBERRY)
|
||||
QQnxBpsEventFilter *m_bpsEventFilter;
|
||||
|
Loading…
Reference in New Issue
Block a user