diff options
author | Artem Dyomin <artem.dyomin@qt.io> | 2023-06-23 14:57:11 +0200 |
---|---|---|
committer | Artem Dyomin <artem.dyomin@qt.io> | 2023-06-26 15:35:37 +0200 |
commit | 8e7b5d5a42337036cb2dcd59a1e07489756e67da (patch) | |
tree | 8c1042c472d80a2a98671d951c3bc95361e0d5ce /src/multimedia/platform | |
parent | 77929f9f462513948f8048569716293c6a7fa74e (diff) |
Introduce private interface for QCapturableWindow providing
No implementations, interface only in the patch.
Pick-to: 6.6
Change-Id: I63a1fe8a6ca919311211807426a4d044056308a7
Reviewed-by: Lars Knoll <lars@knoll.priv.no>
Diffstat (limited to 'src/multimedia/platform')
-rw-r--r-- | src/multimedia/platform/qplatformcapturablewindows_p.h | 44 | ||||
-rw-r--r-- | src/multimedia/platform/qplatformmediaintegration.cpp | 11 | ||||
-rw-r--r-- | src/multimedia/platform/qplatformmediaintegration_p.h | 7 |
3 files changed, 59 insertions, 3 deletions
diff --git a/src/multimedia/platform/qplatformcapturablewindows_p.h b/src/multimedia/platform/qplatformcapturablewindows_p.h new file mode 100644 index 000000000..41949aaac --- /dev/null +++ b/src/multimedia/platform/qplatformcapturablewindows_p.h @@ -0,0 +1,44 @@ +// Copyright (C) 2023 The Qt Company Ltd. +// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only + +#ifndef QPLATFORMCAPTURABLEWINDOWS_P_H +#define QPLATFORMCAPTURABLEWINDOWS_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists purely as an +// implementation detail. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +#include "private/qtmultimediaglobal_p.h" +#include "qcapturablewindow.h" + +#include <qlist.h> + +QT_BEGIN_NAMESPACE + +class QCapturableWindow; +class QCapturableWindowPrivate; + +class QPlatformCapturableWindows +{ +public: + QPlatformCapturableWindows() = default; + + virtual ~QPlatformCapturableWindows() = default; + + virtual QList<QCapturableWindow> windows() const { return {}; } + + virtual bool isWindowValid(const QCapturableWindowPrivate &) const { return false; } + + Q_DISABLE_COPY(QPlatformCapturableWindows); +}; + +QT_END_NAMESPACE + +#endif // QPLATFORMCAPTURABLEWINDOWS_P_H diff --git a/src/multimedia/platform/qplatformmediaintegration.cpp b/src/multimedia/platform/qplatformmediaintegration.cpp index bcfb2bd90..7adfbcf54 100644 --- a/src/multimedia/platform/qplatformmediaintegration.cpp +++ b/src/multimedia/platform/qplatformmediaintegration.cpp @@ -12,6 +12,7 @@ #include <qcameradevice.h> #include <qloggingcategory.h> +#include "qplatformcapturablewindows_p.h" #include "QtCore/private/qfactoryloader_p.h" #include "qplatformmediaplugin_p.h" @@ -136,6 +137,16 @@ QMaybe<QPlatformAudioOutput *> QPlatformMediaIntegration::createAudioOutput(QAud return new QPlatformAudioOutput(q); } +QList<QCapturableWindow> QPlatformMediaIntegration::capturableWindows() +{ + return m_capturableWindows ? m_capturableWindows->windows() : QList<QCapturableWindow>{}; +} + +bool QPlatformMediaIntegration::isCapturableWindowValid(const QCapturableWindowPrivate &window) +{ + return m_capturableWindows && m_capturableWindows->isWindowValid(window); +} + QPlatformMediaIntegration::QPlatformMediaIntegration() = default; QPlatformMediaIntegration::~QPlatformMediaIntegration() = default; diff --git a/src/multimedia/platform/qplatformmediaintegration_p.h b/src/multimedia/platform/qplatformmediaintegration_p.h index feba057d7..debd68485 100644 --- a/src/multimedia/platform/qplatformmediaintegration_p.h +++ b/src/multimedia/platform/qplatformmediaintegration_p.h @@ -50,6 +50,7 @@ class QPlatformAudioInput; class QPlatformAudioOutput; class QPlatformVideoDevices; class QCapturableWindow; +class QPlatformCapturableWindows; class Q_MULTIMEDIA_EXPORT QPlatformMediaIntegration { @@ -80,12 +81,12 @@ public: virtual QMaybe<QPlatformVideoSink *> createVideoSink(QVideoSink *) { return notAvailable; } - virtual QList<QCapturableWindow> capturableWindows() { return {}; }; - - bool isCapturableWindowValid(const QCapturableWindowPrivate &) { return false; } + QList<QCapturableWindow> capturableWindows(); + bool isCapturableWindowValid(const QCapturableWindowPrivate &); protected: std::unique_ptr<QPlatformVideoDevices> m_videoDevices; + std::unique_ptr<QPlatformCapturableWindows> m_capturableWindows; }; QT_END_NAMESPACE |