aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTrial97 <alexandru.tripon97@gmail.com>2023-08-15 17:00:58 +0300
committerTrial97 <alexandru.tripon97@gmail.com>2023-08-15 17:03:51 +0300
commitc22eec8f27e11a6517abb89075b36705d73b1983 (patch)
treebfafbd9414a59f62bfbd3acea266131320f2faf5
parent8f5bb982cd27dd9158b63d826769c168455a139b (diff)
downloadPrismLauncher-c22eec8f27e11a6517abb89075b36705d73b1983.tar.gz
PrismLauncher-c22eec8f27e11a6517abb89075b36705d73b1983.tar.bz2
PrismLauncher-c22eec8f27e11a6517abb89075b36705d73b1983.zip
fixed crash on atlauncher pack install
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
-rw-r--r--launcher/modplatform/atlauncher/ATLPackInstallTask.cpp21
1 files changed, 18 insertions, 3 deletions
diff --git a/launcher/modplatform/atlauncher/ATLPackInstallTask.cpp b/launcher/modplatform/atlauncher/ATLPackInstallTask.cpp
index 5d1a361d..e5771b7c 100644
--- a/launcher/modplatform/atlauncher/ATLPackInstallTask.cpp
+++ b/launcher/modplatform/atlauncher/ATLPackInstallTask.cpp
@@ -1005,15 +1005,30 @@ static Meta::Version::Ptr getComponentVersion(const QString& uid, const QString&
if (!vlist)
return {};
- if (!vlist->isLoaded())
- vlist->load(Net::Mode::Online);
+ if (!vlist->isLoaded()) {
+ QEventLoop loadVersionLoop;
+ auto task = vlist->getLoadTask();
+ QObject::connect(task.get(), &Task::finished, &loadVersionLoop, &QEventLoop::quit);
+ if (!task->isRunning())
+ task->start();
+
+ loadVersionLoop.exec();
+ }
auto ver = vlist->getVersion(version);
if (!ver)
return {};
- if (!ver->isLoaded())
+ if (!ver->isLoaded()) {
+ QEventLoop loadVersionLoop;
ver->load(Net::Mode::Online);
+ auto task = ver->getCurrentTask();
+ QObject::connect(task.get(), &Task::finished, &loadVersionLoop, &QEventLoop::quit);
+ if (!task->isRunning())
+ task->start();
+
+ loadVersionLoop.exec();
+ }
return ver;
}