try to fix memoery leak
This commit is contained in:
parent
9325b11f60
commit
b7dc98aefa
|
@ -112,16 +112,18 @@ PackageLoader *Repository::init()
|
|||
QWriteLocker locker(lock());
|
||||
// wipe current packages
|
||||
wipePackages();
|
||||
if(PackageLoader *loader = internalInit()) {
|
||||
if(loader->future().isRunning()) {
|
||||
m_loader.reset(internalInit());
|
||||
if(m_loader) {
|
||||
if(m_loader->future().isRunning()) {
|
||||
auto watcher = new QFutureWatcher<void>;
|
||||
connect(watcher, &QFutureWatcher<void>::finished, this, &Repository::updateGroups);
|
||||
connect(watcher, &QFutureWatcher<void>::finished, this, &Repository::removeBusyFlag);
|
||||
connect(watcher, &QFutureWatcher<void>::finished, this, &Repository::initialized);
|
||||
connect(watcher, &QFutureWatcher<void>::finished, watcher, &QFutureWatcher<void>::deleteLater);
|
||||
watcher->setFuture(loader->future());
|
||||
connect(watcher, &QFutureWatcher<void>::finished, this, &Repository::discardPackageLoader);
|
||||
watcher->setFuture(m_loader->future());
|
||||
}
|
||||
return loader;
|
||||
return m_loader.get();
|
||||
} else {
|
||||
updateGroups();
|
||||
removeBusyFlag();
|
||||
|
@ -1021,7 +1023,7 @@ Package *Repository::addPackageFromDescription(QString name, const QList<QByteAr
|
|||
pkgRawPtr->putDescription(name, fields, origin);
|
||||
{
|
||||
QWriteLocker locker(&m_lock);
|
||||
m_packages[name] = move(pkg);
|
||||
//m_packages[name] = move(pkg);
|
||||
}
|
||||
return pkgRawPtr;
|
||||
}
|
||||
|
@ -1043,4 +1045,9 @@ void Repository::removeBusyFlag()
|
|||
emit available();
|
||||
}
|
||||
|
||||
void Repository::discardPackageLoader()
|
||||
{
|
||||
m_loader.reset();
|
||||
}
|
||||
|
||||
} // namespace PackageManagement
|
||||
|
|
|
@ -301,6 +301,9 @@ protected slots:
|
|||
void addBusyFlag();
|
||||
void removeBusyFlag();
|
||||
|
||||
private slots:
|
||||
void discardPackageLoader();
|
||||
|
||||
protected:
|
||||
explicit Repository(const QString &name, uint32 index = invalidIndex, QObject *parent = nullptr);
|
||||
|
||||
|
@ -317,6 +320,7 @@ protected:
|
|||
QString m_srcDir;
|
||||
QString m_pkgDir;
|
||||
QAtomicInteger<byte> m_isBusy;
|
||||
std::unique_ptr<PackageLoader> m_loader;
|
||||
|
||||
private:
|
||||
QReadWriteLock m_lock;
|
||||
|
|
Loading…
Reference in New Issue