Use shared pointer to store server query task

Signed-off-by: iTrooz <hey@itrooz.fr>
This commit is contained in:
iTrooz 2024-11-29 19:42:09 +01:00
parent 1477d64400
commit ba0bd5fd74
No known key found for this signature in database
GPG Key ID: 8B83F77667B1BC6A

View File

@ -455,7 +455,9 @@ class ServersModel : public QAbstractListModel {
qDebug() << "Aborted previous server query task"; qDebug() << "Aborted previous server query task";
} }
currentQueryTask = new ConcurrentTask("Query servers status", APPLICATION->settings()->get("NumberOfConcurrentTasks").toInt()); currentQueryTask = ConcurrentTask::Ptr(
new ConcurrentTask("Query servers status", APPLICATION->settings()->get("NumberOfConcurrentTasks").toInt())
);
int row = 0; int row = 0;
for (Server &server : m_servers) { for (Server &server : m_servers) {
// reset current players // reset current players
@ -476,15 +478,9 @@ class ServersModel : public QAbstractListModel {
row++; row++;
} }
// make task delete itself when done // Destroy task when done
auto *c = currentQueryTask; connect(currentQueryTask.get(), &ConcurrentTask::finished, this, [this]() {
connect(currentQueryTask, &ConcurrentTask::finished, [c]() { currentQueryTask = nullptr;
c->deleteLater();
});
// Also delete it from the model, if the model itself hasn't been deleted
connect(currentQueryTask, &ConcurrentTask::finished, this, [this, c]() {
if (c == currentQueryTask) currentQueryTask = nullptr;
}); });
currentQueryTask->start(); currentQueryTask->start();
@ -577,7 +573,7 @@ class ServersModel : public QAbstractListModel {
QList<Server> m_servers; QList<Server> m_servers;
QFileSystemWatcher* m_watcher = nullptr; QFileSystemWatcher* m_watcher = nullptr;
QTimer m_saveTimer; QTimer m_saveTimer;
ConcurrentTask *currentQueryTask = nullptr; ConcurrentTask::Ptr currentQueryTask = nullptr;
}; };
ServersPage::ServersPage(InstancePtr inst, QWidget* parent) : QMainWindow(parent), ui(new Ui::ServersPage) ServersPage::ServersPage(InstancePtr inst, QWidget* parent) : QMainWindow(parent), ui(new Ui::ServersPage)