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)
|
include(../../qpluginbase.pri)
|
||||||
|
|
||||||
QTDIR_build:DESTDIR = $$QT_BUILD_TREE/plugins/platforms
|
QTDIR_build:DESTDIR = $$QT_BUILD_TREE/plugins/platforms
|
||||||
QT += platformsupport platformsupport-private widgets-private
|
QT += platformsupport platformsupport-private
|
||||||
|
|
||||||
contains(QT_CONFIG, opengles2) {
|
|
||||||
QT += opengl opengl-private
|
|
||||||
}
|
|
||||||
|
|
||||||
# Uncomment this to build with support for IMF once it becomes available in the BBNDK
|
# Uncomment this to build with support for IMF once it becomes available in the BBNDK
|
||||||
#CONFIG += qqnx_imf
|
#CONFIG += qqnx_imf
|
||||||
@ -80,11 +76,9 @@ HEADERS = main.h \
|
|||||||
LIBS += -lscreen
|
LIBS += -lscreen
|
||||||
|
|
||||||
contains(QT_CONFIG, opengles2) {
|
contains(QT_CONFIG, opengles2) {
|
||||||
SOURCES += qqnxglcontext.cpp \
|
SOURCES += qqnxglcontext.cpp
|
||||||
qqnxglbackingstore.cpp
|
|
||||||
|
|
||||||
HEADERS += qqnxglcontext.h \
|
HEADERS += qqnxglcontext.h
|
||||||
qqnxglbackingstore.h
|
|
||||||
|
|
||||||
LIBS += -lEGL
|
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>
|
#include <QtGui/qwindowsysteminterface.h>
|
||||||
|
|
||||||
#if !defined(QT_NO_OPENGL)
|
#if !defined(QT_NO_OPENGL)
|
||||||
#include "qqnxglbackingstore.h"
|
|
||||||
#include "qqnxglcontext.h"
|
#include "qqnxglcontext.h"
|
||||||
|
|
||||||
#include <QtGui/QOpenGLContext>
|
#include <QtGui/QOpenGLContext>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@ -117,9 +115,6 @@ QQnxIntegration::QQnxIntegration()
|
|||||||
#endif
|
#endif
|
||||||
, m_services(0)
|
, m_services(0)
|
||||||
, m_fontDatabase(new QGenericUnixFontDatabase())
|
, m_fontDatabase(new QGenericUnixFontDatabase())
|
||||||
#if !defined(QT_NO_OPENGL)
|
|
||||||
, m_paintUsingOpenGL(false)
|
|
||||||
#endif
|
|
||||||
#if defined(Q_OS_BLACKBERRY)
|
#if defined(Q_OS_BLACKBERRY)
|
||||||
, m_eventDispatcher(new QQnxEventDispatcherBlackberry())
|
, m_eventDispatcher(new QQnxEventDispatcherBlackberry())
|
||||||
, m_bpsEventFilter(0)
|
, m_bpsEventFilter(0)
|
||||||
@ -301,12 +296,7 @@ QPlatformWindow *QQnxIntegration::createPlatformWindow(QWindow *window) const
|
|||||||
QPlatformBackingStore *QQnxIntegration::createPlatformBackingStore(QWindow *window) const
|
QPlatformBackingStore *QQnxIntegration::createPlatformBackingStore(QWindow *window) const
|
||||||
{
|
{
|
||||||
qIntegrationDebug() << Q_FUNC_INFO;
|
qIntegrationDebug() << Q_FUNC_INFO;
|
||||||
#if !defined(QT_NO_OPENGL)
|
return new QQnxRasterBackingStore(window);
|
||||||
if (paintUsingOpenGL())
|
|
||||||
return new QQnxGLBackingStore(window);
|
|
||||||
else
|
|
||||||
#endif
|
|
||||||
return new QQnxRasterBackingStore(window);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#if !defined(QT_NO_OPENGL)
|
#if !defined(QT_NO_OPENGL)
|
||||||
|
@ -107,10 +107,6 @@ public:
|
|||||||
|
|
||||||
QVariant styleHint(StyleHint hint) const;
|
QVariant styleHint(StyleHint hint) const;
|
||||||
|
|
||||||
#if !defined(QT_NO_OPENGL)
|
|
||||||
bool paintUsingOpenGL() const { return m_paintUsingOpenGL; }
|
|
||||||
#endif
|
|
||||||
|
|
||||||
QPlatformServices *services() const;
|
QPlatformServices *services() const;
|
||||||
|
|
||||||
#if defined(Q_OS_BLACKBERRY)
|
#if defined(Q_OS_BLACKBERRY)
|
||||||
@ -139,9 +135,6 @@ private:
|
|||||||
#endif
|
#endif
|
||||||
QQnxServices *m_services;
|
QQnxServices *m_services;
|
||||||
QPlatformFontDatabase *m_fontDatabase;
|
QPlatformFontDatabase *m_fontDatabase;
|
||||||
#if !defined(QT_NO_OPENGL)
|
|
||||||
bool m_paintUsingOpenGL;
|
|
||||||
#endif
|
|
||||||
QAbstractEventDispatcher *m_eventDispatcher;
|
QAbstractEventDispatcher *m_eventDispatcher;
|
||||||
#if defined(Q_OS_BLACKBERRY)
|
#if defined(Q_OS_BLACKBERRY)
|
||||||
QQnxBpsEventFilter *m_bpsEventFilter;
|
QQnxBpsEventFilter *m_bpsEventFilter;
|
||||||
|
Loading…
Reference in New Issue
Block a user