summaryrefslogtreecommitdiffstats
path: root/src/plugins/platforms/android/src/qandroidplatformintegration.cpp
diff options
context:
space:
mode:
authorBogDan Vatra <bogdan@kde.org>2014-01-17 10:31:27 +0200
committerThe Qt Project <gerrit-noreply@qt-project.org>2014-01-17 10:23:08 +0100
commit8a9bd001c947e6888d37e99fc456339fd2b51b36 (patch)
tree2b91044f316f1c501e4b781fb008b9dfee527d1d /src/plugins/platforms/android/src/qandroidplatformintegration.cpp
parent338f4c9246fd4a85f3f90ca443fd786a008ba348 (diff)
Support multiple native surfaces on Android.
Support for multiple native surfaces is needed by applications that need to mix raster windows with GL windows. Rework the raster and opengl implementation, get rid of eglfs and fbconvenience dependencies. Create a single android platform plugin. [ChangeLog][Android] Rework the raster and opengl implementation. [ChangeLog][Android] Create a single android platform plugin. Task-number: QTBUG-34650 Change-Id: I9b1ab51554823329dda8cfbf8fef27c38f917c7b Reviewed-by: Paul Olav Tvete <paul.tvete@digia.com>
Diffstat (limited to 'src/plugins/platforms/android/src/qandroidplatformintegration.cpp')
-rw-r--r--src/plugins/platforms/android/src/qandroidplatformintegration.cpp343
1 files changed, 0 insertions, 343 deletions
diff --git a/src/plugins/platforms/android/src/qandroidplatformintegration.cpp b/src/plugins/platforms/android/src/qandroidplatformintegration.cpp
deleted file mode 100644
index ae3e257d3c..0000000000
--- a/src/plugins/platforms/android/src/qandroidplatformintegration.cpp
+++ /dev/null
@@ -1,343 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2012 BogDan Vatra <bogdan@kde.org>
-** Contact: http://www.qt-project.org/legal
-**
-** This file is part of the plugins of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and Digia. For licensing terms and
-** conditions see http://qt.digia.com/licensing. For further information
-** use the contact form at http://qt.digia.com/contact-us.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, 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, Digia gives you certain additional
-** rights. These rights are described in the Digia 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.
-**
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#include "qandroidplatformintegration.h"
-#include "qabstracteventdispatcher.h"
-#include "androidjnimain.h"
-#include <QtGui/qguiapplication.h>
-#include <qpa/qwindowsysteminterface.h>
-#include <QThread>
-#include <qpa/qplatformwindow.h>
-#include "qandroidplatformservices.h"
-#include "qandroidplatformfontdatabase.h"
-#include "qandroidplatformclipboard.h"
-#include "qandroidplatformaccessibility.h"
-#include <QtPlatformSupport/private/qgenericunixeventdispatcher_p.h>
-
-#ifndef ANDROID_PLUGIN_OPENGL
-# include "qandroidplatformscreen.h"
-# include "qandroidplatformwindow.h"
-# include <QtPlatformSupport/private/qfbbackingstore_p.h>
-#else
-# include "qeglfswindow.h"
-# include "androidjnimenu.h"
-# include "qandroidopenglcontext.h"
-# include "qandroidopenglplatformwindow.h"
-# include "qandroidopenglplatformscreen.h"
-# include "qeglfshooks.h"
-# include <QtGui/qopenglcontext.h>
-#endif
-
-#include "qandroidplatformtheme.h"
-#include "qandroidsystemlocale.h"
-
-QT_BEGIN_NAMESPACE
-
-int QAndroidPlatformIntegration::m_defaultGeometryWidth = 320;
-int QAndroidPlatformIntegration::m_defaultGeometryHeight = 455;
-int QAndroidPlatformIntegration::m_defaultPhysicalSizeWidth = 50;
-int QAndroidPlatformIntegration::m_defaultPhysicalSizeHeight = 71;
-
-Qt::ScreenOrientation QAndroidPlatformIntegration::m_orientation = Qt::PrimaryOrientation;
-Qt::ScreenOrientation QAndroidPlatformIntegration::m_nativeOrientation = Qt::PrimaryOrientation;
-
-void *QAndroidPlatformNativeInterface::nativeResourceForIntegration(const QByteArray &resource)
-{
- if (resource=="JavaVM")
- return QtAndroid::javaVM();
- if (resource == "QtActivity")
- return QtAndroid::activity();
- if (resource == "AndroidStylePalettes")
- return &m_palettes;
- if (resource == "AndroidStyleFonts")
- return &m_fonts;
- return 0;
-}
-
-QAndroidPlatformIntegration::QAndroidPlatformIntegration(const QStringList &paramList)
- : m_touchDevice(0)
-#ifndef QT_NO_ACCESSIBILITY
- , m_accessibility(0)
-#endif
-{
- Q_UNUSED(paramList);
-
- m_androidPlatformNativeInterface = new QAndroidPlatformNativeInterface();
-
-#ifndef ANDROID_PLUGIN_OPENGL
- m_primaryScreen = new QAndroidPlatformScreen();
- screenAdded(m_primaryScreen);
- m_primaryScreen->setPhysicalSize(QSize(m_defaultPhysicalSizeWidth, m_defaultPhysicalSizeHeight));
- m_primaryScreen->setGeometry(QRect(0, 0, m_defaultGeometryWidth, m_defaultGeometryHeight));
-#endif
-
- m_mainThread = QThread::currentThread();
- QtAndroid::setAndroidPlatformIntegration(this);
-
- m_androidFDB = new QAndroidPlatformFontDatabase();
- m_androidPlatformServices = new QAndroidPlatformServices();
- m_androidPlatformClipboard = new QAndroidPlatformClipboard();
-
- m_androidSystemLocale = new QAndroidSystemLocale;
-}
-
-bool QAndroidPlatformIntegration::hasCapability(Capability cap) const
-{
- switch (cap) {
- case ThreadedPixmaps: return true;
- case ApplicationState: return true;
- case NativeWidgets: return false;
- default:
-#ifndef ANDROID_PLUGIN_OPENGL
- return QPlatformIntegration::hasCapability(cap);
-#else
- return QEglFSIntegration::hasCapability(cap);
-#endif
- }
-}
-
-#ifndef ANDROID_PLUGIN_OPENGL
-QPlatformBackingStore *QAndroidPlatformIntegration::createPlatformBackingStore(QWindow *window) const
-{
- return new QFbBackingStore(window);
-}
-
-QPlatformWindow *QAndroidPlatformIntegration::createPlatformWindow(QWindow *window) const
-{
- QAndroidPlatformWindow *platformWindow = new QAndroidPlatformWindow(window);
- platformWindow->setWindowState(window->windowState());
-
- return platformWindow;
-}
-
-QAbstractEventDispatcher *QAndroidPlatformIntegration::createEventDispatcher() const
-{
- return createUnixEventDispatcher();
-}
-#else // !ANDROID_PLUGIN_OPENGL
-QPlatformWindow *QAndroidPlatformIntegration::createPlatformWindow(QWindow *window) const
-{
- QAndroidOpenGLPlatformWindow *platformWindow = new QAndroidOpenGLPlatformWindow(window);
- platformWindow->create();
- platformWindow->requestActivateWindow();
- platformWindow->setWindowState(window->windowState());
- QtAndroidMenu::setActiveTopLevelWindow(window);
-
- return platformWindow;
-}
-
-void QAndroidPlatformIntegration::invalidateNativeSurface()
-{
- foreach (QWindow *w, QGuiApplication::topLevelWindows()) {
- QAndroidOpenGLPlatformWindow *window =
- static_cast<QAndroidOpenGLPlatformWindow *>(w->handle());
- if (window != 0)
- window->invalidateSurface();
- }
-}
-
-void QAndroidPlatformIntegration::surfaceChanged()
-{
- QAndroidOpenGLPlatformWindow::updateStaticNativeWindow();
- foreach (QWindow *w, QGuiApplication::topLevelWindows()) {
- QAndroidOpenGLPlatformWindow *window =
- static_cast<QAndroidOpenGLPlatformWindow *>(w->handle());
- if (window != 0)
- window->resetSurface();
- }
-}
-
-QPlatformOpenGLContext *QAndroidPlatformIntegration::createPlatformOpenGLContext(QOpenGLContext *context) const
-{
- return new QAndroidOpenGLContext(this,
- QEglFSHooks::hooks()->surfaceFormatFor(context->format()),
- context->shareHandle(),
- display());
-}
-#endif // ANDROID_PLUGIN_OPENGL
-
-QAndroidPlatformIntegration::~QAndroidPlatformIntegration()
-{
- delete m_androidPlatformNativeInterface;
- delete m_androidFDB;
- delete m_androidSystemLocale;
- QtAndroid::setAndroidPlatformIntegration(NULL);
-}
-QPlatformFontDatabase *QAndroidPlatformIntegration::fontDatabase() const
-{
- return m_androidFDB;
-}
-
-#ifndef QT_NO_CLIPBOARD
-QPlatformClipboard *QAndroidPlatformIntegration::clipboard() const
-{
-static QAndroidPlatformClipboard *clipboard = 0;
- if (!clipboard)
- clipboard = new QAndroidPlatformClipboard;
-
- return clipboard;
-}
-#endif
-
-QPlatformInputContext *QAndroidPlatformIntegration::inputContext() const
-{
- return &m_platformInputContext;
-}
-
-QPlatformNativeInterface *QAndroidPlatformIntegration::nativeInterface() const
-{
- return m_androidPlatformNativeInterface;
-}
-
-QPlatformServices *QAndroidPlatformIntegration::services() const
-{
- return m_androidPlatformServices;
-}
-
-QVariant QAndroidPlatformIntegration::styleHint(StyleHint hint) const
-{
- switch (hint) {
- case ShowIsMaximized:
- return true;
- default:
- return QPlatformIntegration::styleHint(hint);
- }
-}
-
-Qt::WindowState QAndroidPlatformIntegration::defaultWindowState(Qt::WindowFlags flags) const
-{
- // Don't maximize dialogs on Android
- if (flags & Qt::Dialog & ~Qt::Window)
- return Qt::WindowNoState;
-
- return QPlatformIntegration::defaultWindowState(flags);
-}
-
-static const QLatin1String androidThemeName("android");
-QStringList QAndroidPlatformIntegration::themeNames() const
-{
- return QStringList(QString(androidThemeName));
-}
-
-QPlatformTheme *QAndroidPlatformIntegration::createPlatformTheme(const QString &name) const
-{
- if (androidThemeName == name)
- return new QAndroidPlatformTheme(m_androidPlatformNativeInterface);
-
- return 0;
-}
-
-void QAndroidPlatformIntegration::setDefaultDisplayMetrics(int gw, int gh, int sw, int sh)
-{
- m_defaultGeometryWidth = gw;
- m_defaultGeometryHeight = gh;
- m_defaultPhysicalSizeWidth = sw;
- m_defaultPhysicalSizeHeight = sh;
-}
-
-void QAndroidPlatformIntegration::setDefaultDesktopSize(int gw, int gh)
-{
- m_defaultGeometryWidth = gw;
- m_defaultGeometryHeight = gh;
-}
-
-void QAndroidPlatformIntegration::setScreenOrientation(Qt::ScreenOrientation currentOrientation,
- Qt::ScreenOrientation nativeOrientation)
-{
- m_orientation = currentOrientation;
- m_nativeOrientation = nativeOrientation;
-}
-
-#ifndef QT_NO_ACCESSIBILITY
-QPlatformAccessibility *QAndroidPlatformIntegration::accessibility() const
-{
- if (!m_accessibility)
- m_accessibility = new QAndroidPlatformAccessibility();
- return m_accessibility;
-}
-#endif
-
-
-#ifndef ANDROID_PLUGIN_OPENGL
-void QAndroidPlatformIntegration::setDesktopSize(int width, int height)
-{
- if (m_primaryScreen)
- QMetaObject::invokeMethod(m_primaryScreen, "setGeometry", Qt::AutoConnection, Q_ARG(QRect, QRect(0,0,width, height)));
-}
-
-void QAndroidPlatformIntegration::setDisplayMetrics(int width, int height)
-{
- if (m_primaryScreen)
- QMetaObject::invokeMethod(m_primaryScreen, "setPhysicalSize", Qt::AutoConnection, Q_ARG(QSize, QSize(width, height)));
-}
-#else
-void QAndroidPlatformIntegration::setDesktopSize(int width, int height)
-{
- m_defaultGeometryWidth = width;
- m_defaultGeometryHeight = height;
-}
-
-void QAndroidPlatformIntegration::setDisplayMetrics(int width, int height)
-{
- m_defaultPhysicalSizeWidth = width;
- m_defaultPhysicalSizeHeight = height;
-}
-
-QEglFSScreen *QAndroidPlatformIntegration::createScreen() const
-{
- return new QAndroidOpenGLPlatformScreen(display());
-}
-
-#endif
-
-void QAndroidPlatformIntegration::pauseApp()
-{
- if (QAbstractEventDispatcher::instance(m_mainThread))
- QAbstractEventDispatcher::instance(m_mainThread)->interrupt();
-}
-
-void QAndroidPlatformIntegration::resumeApp()
-{
- if (QAbstractEventDispatcher::instance(m_mainThread))
- QAbstractEventDispatcher::instance(m_mainThread)->wakeUp();
-}
-
-QT_END_NAMESPACE