summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorAndy Shaw <andy.shaw@qt.io>2020-04-27 10:34:33 +0200
committerAndy Shaw <andy.shaw@qt.io>2020-05-19 21:40:35 +0000
commit857722ed8f16bb5b9e64154690f6b0bf3f880dd7 (patch)
tree407d1cb5e91664c888d573f622f70db142922d66 /src
parent77e978001b7caa2c45b8a15e79e81ad5b3173c38 (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.cpp11
-rw-r--r--src/plugins/platforms/android/qandroidplatformclipboard.h6
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