From 857722ed8f16bb5b9e64154690f6b0bf3f880dd7 Mon Sep 17 00:00:00 2001 From: Andy Shaw Date: Mon, 27 Apr 2020 10:34:33 +0200 Subject: 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 --- src/plugins/platforms/android/qandroidplatformclipboard.cpp | 11 +++++++++-- src/plugins/platforms/android/qandroidplatformclipboard.h | 6 ++++-- 2 files changed, 13 insertions(+), 4 deletions(-) (limited to 'src') 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 -- cgit v1.2.3