aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorlambdcalculus <64238778+lambdcalculus@users.noreply.github.com>2023-11-30 09:17:42 -0300
committerGitHub <noreply@github.com>2023-11-30 13:17:42 +0100
commite9469a5ca4c1e156430e02cc1d55c03c4a008613 (patch)
treea96013570957852b5cde6d0fe70c03f5af28c452 /src
parente6e5e86f68459d6e85b48dccf0627493ea521256 (diff)
rework ms list callback logic (#927)
fixes crash when joining server before getting ms list back
Diffstat (limited to 'src')
-rw-r--r--src/lobby.cpp2
-rw-r--r--src/main.cpp2
-rw-r--r--src/networkmanager.cpp12
3 files changed, 8 insertions, 8 deletions
diff --git a/src/lobby.cpp b/src/lobby.cpp
index a705b262..85cc7449 100644
--- a/src/lobby.cpp
+++ b/src/lobby.cpp
@@ -229,7 +229,7 @@ void Lobby::loadUI()
void Lobby::on_refresh_released()
{
- net_manager->get_server_list(std::bind(&Lobby::list_servers, this));
+ net_manager->get_server_list();
get_motd();
list_favorites();
}
diff --git a/src/main.cpp b/src/main.cpp
index 5b696fef..4528bc46 100644
--- a/src/main.cpp
+++ b/src/main.cpp
@@ -56,7 +56,7 @@ int main(int argc, char *argv[])
main_app.installTranslator(&appTranslator);
main_app.construct_lobby();
- main_app.net_manager->get_server_list(std::bind(&Lobby::list_servers, main_app.w_lobby));
+ main_app.net_manager->get_server_list();
main_app.net_manager->send_heartbeat();
main_app.w_lobby->show();
return main_app.exec();
diff --git a/src/networkmanager.cpp b/src/networkmanager.cpp
index 96e262a5..b7e2810c 100644
--- a/src/networkmanager.cpp
+++ b/src/networkmanager.cpp
@@ -29,18 +29,17 @@ NetworkManager::NetworkManager(AOApplication *parent) : QObject(parent)
heartbeat_timer->start(heartbeat_interval);
}
-void NetworkManager::get_server_list(const std::function<void()> &cb)
+void NetworkManager::get_server_list()
{
QNetworkRequest req(QUrl(ms_baseurl + "/servers"));
req.setRawHeader("User-Agent", get_user_agent().toUtf8());
QNetworkReply *reply = http->get(req);
connect(reply, &QNetworkReply::finished,
- this, std::bind(&NetworkManager::ms_request_finished, this, reply, cb));
+ this, std::bind(&NetworkManager::ms_request_finished, this, reply));
}
-void NetworkManager::ms_request_finished(QNetworkReply *reply,
- const std::function<void()> &cb)
+void NetworkManager::ms_request_finished(QNetworkReply *reply)
{
QJsonDocument json = QJsonDocument::fromJson(reply->readAll());
if (json.isNull()) {
@@ -72,8 +71,9 @@ void NetworkManager::ms_request_finished(QNetworkReply *reply,
}
ao_app->set_server_list(server_list);
- cb();
-
+ if (ao_app->lobby_constructed) {
+ ao_app->w_lobby->list_servers();
+ }
reply->deleteLater();
}