diff options
author | Assam Boudjelthia <assam.boudjelthia@qt.io> | 2020-08-25 11:32:58 +0300 |
---|---|---|
committer | Assam Boudjelthia <assam.boudjelthia@qt.io> | 2020-08-27 23:35:16 +0300 |
commit | fc4a73aa544bf03d881ddb7e2eb8ebd47d7da7b8 (patch) | |
tree | 6e0a334fa3b9535541d546ecffc890cbb4307a6a /src/gui/kernel/qoffscreensurface_platform.h | |
parent | 15db957585828af7a83896963fade95c3ddcc7e3 (diff) |
Add QOffScreenSurface platform API abstraction
This follows the work done in 6ff79478a44fce12ca18832a56db4a370a9ff417.
The API is available by including qoffscreensurface.h, scoped in
the QPlatformInterface namespace. The namespace
exposes platform specific type-safe interfaces that provide:
a) Factory functions for adopting native contexts, e.g.
QAndroidPlatformOffscreenSurface::fromNative(ANativeWindow);
b) Access to underlying native handles, e.g.
surface->platformInterface<QAndroidPlatformOffscreenSurface>()
->nativeSurface()
Fixes: QTBUG-85874
Change-Id: I29c459866e0355a52320d5d473e8b147e050acb3
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
Diffstat (limited to 'src/gui/kernel/qoffscreensurface_platform.h')
-rw-r--r-- | src/gui/kernel/qoffscreensurface_platform.h | 67 |
1 files changed, 67 insertions, 0 deletions
diff --git a/src/gui/kernel/qoffscreensurface_platform.h b/src/gui/kernel/qoffscreensurface_platform.h new file mode 100644 index 0000000000..87e6b453a7 --- /dev/null +++ b/src/gui/kernel/qoffscreensurface_platform.h @@ -0,0 +1,67 @@ +/**************************************************************************** +** +** Copyright (C) 2020 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the QtGui module 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/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 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QOFFSCREENSURFACE_PLATFORM_H +#define QOFFSCREENSURFACE_PLATFORM_H + +#include <QtGui/qtguiglobal.h> +#include <QtGui/qoffscreensurface.h> + +#if defined(Q_OS_ANDROID) +QT_FORWARD_DECLARE_CLASS(ANativeWindow); +#endif + +QT_BEGIN_NAMESPACE + +namespace QPlatformInterface { + +#if defined(Q_OS_ANDROID) +struct Q_GUI_EXPORT QAndroidPlatformOffscreenSurface +{ + QT_DECLARE_PLATFORM_INTERFACE(QAndroidPlatformOffscreenSurface) + static QOffscreenSurface *fromNative(ANativeWindow *nativeSurface); + virtual ANativeWindow *nativeSurface() const = 0; +}; +#endif + +} // QPlatformInterface + +QT_END_NAMESPACE + +#endif // QOFFSCREENSURFACE_PLATFORM_H |