From 9f9c5b474432d764d8867f17e806f140244b9753 Mon Sep 17 00:00:00 2001 From: Bea Lam Date: Fri, 21 Feb 2014 22:47:02 +1000 Subject: [PATCH] [transfer-engine] Delay transfer engine exit When transferring multiple files via Bluetooth, we quickly receive one transfer request after another, so this causes a timing issue where the engine may quit immediately after the first request and is in the process of closing down when the next request is received, and thus cannot be started again for the next request. --- src/transferengine.cpp | 10 ++++++++++ src/transferengine_p.h | 1 + 2 files changed, 11 insertions(+) diff --git a/src/transferengine.cpp b/src/transferengine.cpp index ec92870..f12de8f 100644 --- a/src/transferengine.cpp +++ b/src/transferengine.cpp @@ -178,6 +178,16 @@ void TransferEnginePrivate::exitSafely() { if (!m_activityMonitor->activeTransfers()) { qDebug() << Q_FUNC_INFO; + QTimer::singleShot(2000, this, SLOT(delayedExitSafely())); + } +} + +void TransferEnginePrivate::delayedExitSafely() +{ + if (m_activityMonitor->activeTransfers()) { + qDebug() << "Keeping transfer engine alive, transfers still ongoing"; + } else { + qDebug() << "Stopping transfer engine"; qApp->exit(); } } diff --git a/src/transferengine_p.h b/src/transferengine_p.h index ef0bb3e..61c3815 100644 --- a/src/transferengine_p.h +++ b/src/transferengine_p.h @@ -118,6 +118,7 @@ class TransferEnginePrivate: QObject public Q_SLOTS: void exitSafely(); + void delayedExitSafely(); void enabledPluginsCheck(); void cleanupExpiredTransfers(const QList &expiredIds); void pluginDirChanged();