diff options
author | Andy Shaw <andy.shaw@qt.io> | 2020-04-27 10:34:33 +0200 |
---|---|---|
committer | Andy Shaw <andy.shaw@qt.io> | 2020-05-19 21:40:35 +0000 |
commit | 857722ed8f16bb5b9e64154690f6b0bf3f880dd7 (patch) | |
tree | 407d1cb5e91664c888d573f622f70db142922d66 /src | |
parent | 77e978001b7caa2c45b8a15e79e81ad5b3173c38 (diff) |
Android: Only have one valid QMimeData object kept around
Once the clipboard data is queried then we can clean up the previous
QMimeData object created. So rather than keeping on to it and cleaning
up when the clipboard is created we can delete it at that point. This
means it is not necessary to make it a QObject subclass, so we can save
in that respect too.
Pick-to: 5.15
Change-Id: I152ca6ea5c713abe25f75ca2016759c0e3152bfb
Reviewed-by: Assam Boudjelthia <assam.boudjelthia@qt.io>
Diffstat (limited to 'src')
-rw-r--r-- | src/plugins/platforms/android/qandroidplatformclipboard.cpp | 11 | ||||
-rw-r--r-- | src/plugins/platforms/android/qandroidplatformclipboard.h | 6 |
2 files changed, 13 insertions, 4 deletions
diff --git a/src/plugins/platforms/android/qandroidplatformclipboard.cpp b/src/plugins/platforms/android/qandroidplatformclipboard.cpp index 17dfe27d12..2912c58e8c 100644 --- a/src/plugins/platforms/android/qandroidplatformclipboard.cpp +++ b/src/plugins/platforms/android/qandroidplatformclipboard.cpp @@ -48,12 +48,19 @@ QAndroidPlatformClipboard::QAndroidPlatformClipboard() QtAndroidClipboard::setClipboardManager(this); } +QAndroidPlatformClipboard::~QAndroidPlatformClipboard() +{ + if (data) + delete data; +} + QMimeData *QAndroidPlatformClipboard::mimeData(QClipboard::Mode mode) { Q_UNUSED(mode); Q_ASSERT(supportsMode(mode)); - QMimeData *data = QtAndroidClipboard::getClipboardMimeData(); - data->setParent(this); + if (data) + data->deleteLater(); + data = QtAndroidClipboard::getClipboardMimeData(); return data; } diff --git a/src/plugins/platforms/android/qandroidplatformclipboard.h b/src/plugins/platforms/android/qandroidplatformclipboard.h index 3ed9d323f8..9920b776d4 100644 --- a/src/plugins/platforms/android/qandroidplatformclipboard.h +++ b/src/plugins/platforms/android/qandroidplatformclipboard.h @@ -46,14 +46,16 @@ #ifndef QT_NO_CLIPBOARD QT_BEGIN_NAMESPACE -class QAndroidPlatformClipboard : public QObject, public QPlatformClipboard +class QAndroidPlatformClipboard : public QPlatformClipboard { public: QAndroidPlatformClipboard(); - + ~QAndroidPlatformClipboard(); QMimeData *mimeData(QClipboard::Mode mode = QClipboard::Clipboard) override; void setMimeData(QMimeData *data, QClipboard::Mode mode = QClipboard::Clipboard) override; bool supportsMode(QClipboard::Mode mode) const override; +private: + QMimeData *data = nullptr; }; QT_END_NAMESPACE |