Python: Avoid warning in QFutureWatcher

Re-using a watcher will trigger the warning as the future had been
set on the "old" watcher even though it may have finished or
disconnected.

Change-Id: I32d937b1d73d8bba9ec5639c62393da84638099e
Reviewed-by: David Schulz <david.schulz@qt.io>
This commit is contained in:
Christian Stenger
2023-10-30 10:52:45 +01:00
parent bcc45d8bb9
commit b39476dd47

View File

@@ -161,7 +161,7 @@ public:
PythonInterpreterAspect *q;
RunConfiguration *rc;
QList<PySideUicExtraCompiler *> m_extraCompilers;
QFutureWatcher<PipPackageInfo> m_watcher;
QFutureWatcher<PipPackageInfo> *m_watcher = nullptr;
QMetaObject::Connection m_watcherConnection;
};
@@ -218,11 +218,13 @@ void PythonInterpreterAspectPrivate::checkForPySide(const FilePath &python,
{
const PipPackage package(pySidePackageName);
QObject::disconnect(m_watcherConnection);
m_watcherConnection = QObject::connect(&m_watcher, &QFutureWatcherBase::finished, q, [=] {
handlePySidePackageInfo(m_watcher.result(), python, pySidePackageName);
delete m_watcher;
m_watcher = new QFutureWatcher<PipPackageInfo>(this);
m_watcherConnection = QObject::connect(m_watcher, &QFutureWatcherBase::finished, q, [=] {
handlePySidePackageInfo(m_watcher->result(), python, pySidePackageName);
});
const auto future = Pip::instance(python)->info(package);
m_watcher.setFuture(future);
m_watcher->setFuture(future);
ExtensionSystem::PluginManager::futureSynchronizer()->addFuture(future);
}