forked from qt-creator/qt-creator
Revert "Android: Make the device watcher process terminate on shutdown"
This reverts commit e45e16d904
.
Reason for revert: This one should look different in master
Change-Id: I4fbf3a9d046e5fe5a6a45d5ba93b685f5967498c
Reviewed-by: Eike Ziller <eike.ziller@qt.io>
This commit is contained in:
committed by
Alessandro Portale
parent
e914f42458
commit
2d33425cd5
@@ -35,8 +35,6 @@
|
||||
|
||||
#include <coreplugin/icore.h>
|
||||
|
||||
#include <extensionsystem/iplugin.h>
|
||||
|
||||
#include <projectexplorer/devicesupport/devicemanager.h>
|
||||
#include <projectexplorer/devicesupport/idevicewidget.h>
|
||||
#include <projectexplorer/kitinformation.h>
|
||||
@@ -590,8 +588,6 @@ void AndroidDeviceManager::setupDevicesWatcher()
|
||||
m_adbDeviceWatcherProcess->setCommand(command);
|
||||
m_adbDeviceWatcherProcess->setEnvironment(AndroidConfigurations::toolsEnvironment(m_androidConfig));
|
||||
m_adbDeviceWatcherProcess->start();
|
||||
qCDebug(androidDeviceLog).noquote() << "ADB device watcher started:"
|
||||
<< command.toUserOutput();
|
||||
|
||||
// Setup AVD filesystem watcher to listen for changes when an avd is created/deleted,
|
||||
// or started/stopped
|
||||
@@ -615,28 +611,6 @@ void AndroidDeviceManager::setupDevicesWatcher()
|
||||
updateAvdsList();
|
||||
}
|
||||
|
||||
void AndroidDeviceManager::shutdownDevicesWatcher()
|
||||
{
|
||||
m_avdsFutureWatcher.waitForFinished();
|
||||
m_removeAvdFutureWatcher.waitForFinished();
|
||||
|
||||
if (m_adbDeviceWatcherProcess) {
|
||||
m_adbDeviceWatcherProcess->terminate();
|
||||
m_adbDeviceWatcherProcess->waitForFinished();
|
||||
m_adbDeviceWatcherProcess.reset();
|
||||
|
||||
// Despite terminate/waitForFinished, the process may still
|
||||
// be around and remain if Qt Creator finishes too early.
|
||||
QTimer::singleShot(1000, this, [this] { emit devicesWatcherShutdownFinished(); });
|
||||
}
|
||||
}
|
||||
|
||||
ExtensionSystem::IPlugin::ShutdownFlag AndroidDeviceManager::devicesShutdownFlag() const
|
||||
{
|
||||
return m_adbDeviceWatcherProcess ? ExtensionSystem::IPlugin::AsynchronousShutdown
|
||||
: ExtensionSystem::IPlugin::SynchronousShutdown;
|
||||
}
|
||||
|
||||
void AndroidDeviceManager::HandleAvdsListChange()
|
||||
{
|
||||
DeviceManager *const devMgr = DeviceManager::instance();
|
||||
@@ -790,6 +764,16 @@ AndroidDeviceManager::AndroidDeviceManager(QObject *parent)
|
||||
m_androidConfig(AndroidConfigurations::currentConfig()),
|
||||
m_avdManager(m_androidConfig)
|
||||
{
|
||||
connect(qApp, &QCoreApplication::aboutToQuit, this, [this]() {
|
||||
if (m_adbDeviceWatcherProcess) {
|
||||
m_adbDeviceWatcherProcess->terminate();
|
||||
m_adbDeviceWatcherProcess->waitForFinished();
|
||||
m_adbDeviceWatcherProcess.reset();
|
||||
}
|
||||
m_avdsFutureWatcher.waitForFinished();
|
||||
m_removeAvdFutureWatcher.waitForFinished();
|
||||
});
|
||||
|
||||
connect(&m_removeAvdFutureWatcher, &QFutureWatcherBase::finished,
|
||||
this, &AndroidDeviceManager::handleAvdRemoved);
|
||||
}
|
||||
|
@@ -30,8 +30,6 @@
|
||||
#include "androidconfigurations.h"
|
||||
#include "androiddeviceinfo.h"
|
||||
|
||||
#include <extensionsystem/iplugin.h>
|
||||
|
||||
#include <projectexplorer/devicesupport/idevice.h>
|
||||
#include <projectexplorer/devicesupport/idevicefactory.h>
|
||||
|
||||
@@ -108,13 +106,9 @@ private:
|
||||
|
||||
class AndroidDeviceManager : public QObject
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
static AndroidDeviceManager *instance();
|
||||
void setupDevicesWatcher();
|
||||
void shutdownDevicesWatcher();
|
||||
ExtensionSystem::IPlugin::ShutdownFlag devicesShutdownFlag() const;
|
||||
void updateAvdsList();
|
||||
IDevice::DeviceState getDeviceState(const QString &serial, IDevice::MachineType type) const;
|
||||
void updateDeviceState(const ProjectExplorer::IDevice::ConstPtr &device);
|
||||
@@ -126,9 +120,6 @@ public:
|
||||
|
||||
QString getRunningAvdsSerialNumber(const QString &name) const;
|
||||
|
||||
signals:
|
||||
void devicesWatcherShutdownFinished();
|
||||
|
||||
private:
|
||||
AndroidDeviceManager(QObject *parent = nullptr);
|
||||
void HandleDevicesListChange(const QString &serialNumber);
|
||||
|
@@ -160,19 +160,6 @@ bool AndroidPlugin::initialize(const QStringList &arguments, QString *errorMessa
|
||||
return true;
|
||||
}
|
||||
|
||||
AndroidPlugin::ShutdownFlag AndroidPlugin::aboutToShutdown()
|
||||
{
|
||||
AndroidDeviceManager *dm = AndroidDeviceManager::instance();
|
||||
const IPlugin::ShutdownFlag sf = dm->devicesShutdownFlag();
|
||||
|
||||
if (sf == AsynchronousShutdown)
|
||||
connect(dm, &AndroidDeviceManager::devicesWatcherShutdownFinished,
|
||||
this, &ExtensionSystem::IPlugin::asynchronousShutdownFinished);
|
||||
|
||||
dm->shutdownDevicesWatcher();
|
||||
return sf;
|
||||
}
|
||||
|
||||
void AndroidPlugin::kitsRestored()
|
||||
{
|
||||
const bool qtForAndroidInstalled
|
||||
|
@@ -44,9 +44,6 @@ class AndroidPlugin final : public ExtensionSystem::IPlugin
|
||||
|
||||
class AndroidPluginPrivate *d = nullptr;
|
||||
|
||||
public:
|
||||
ShutdownFlag aboutToShutdown() final;
|
||||
|
||||
#ifdef WITH_TESTS
|
||||
private slots:
|
||||
void testAndroidSdkManagerProgressParser_data();
|
||||
|
Reference in New Issue
Block a user