fix: race condition on ResourceFolderModel tests
This (hopefully) fixes the race contiditions that sometimes got triggered in tests. Signed-off-by: flow <flowlnlnln@gmail.com>
This commit is contained in:
@ -36,7 +36,7 @@ class BasicFolderLoadTask : public Task {
|
||||
[[nodiscard]] bool canAbort() const override { return true; }
|
||||
bool abort() override
|
||||
{
|
||||
m_aborted = true;
|
||||
m_aborted.store(true);
|
||||
return true;
|
||||
}
|
||||
|
||||
@ -49,7 +49,7 @@ class BasicFolderLoadTask : public Task {
|
||||
}
|
||||
|
||||
if (m_aborted)
|
||||
emitAborted();
|
||||
emit finished();
|
||||
else
|
||||
emitSucceeded();
|
||||
}
|
||||
@ -58,7 +58,7 @@ private:
|
||||
QDir m_dir;
|
||||
ResultPtr m_result;
|
||||
|
||||
bool m_aborted = false;
|
||||
std::atomic<bool> m_aborted = false;
|
||||
|
||||
std::function<Resource*(QFileInfo const&)> m_create_func;
|
||||
};
|
||||
|
@ -499,7 +499,7 @@ void LocalModParseTask::processAsLitemod()
|
||||
|
||||
bool LocalModParseTask::abort()
|
||||
{
|
||||
m_aborted = true;
|
||||
m_aborted.store(true);
|
||||
return true;
|
||||
}
|
||||
|
||||
@ -521,7 +521,7 @@ void LocalModParseTask::executeTask()
|
||||
}
|
||||
|
||||
if (m_aborted)
|
||||
emitAborted();
|
||||
emit finished();
|
||||
else
|
||||
emitSucceeded();
|
||||
}
|
||||
|
@ -39,5 +39,5 @@ private:
|
||||
QFileInfo m_modFile;
|
||||
ResultPtr m_result;
|
||||
|
||||
bool m_aborted = false;
|
||||
std::atomic<bool> m_aborted = false;
|
||||
};
|
||||
|
@ -38,8 +38,8 @@
|
||||
|
||||
#include "minecraft/mod/MetadataHandler.h"
|
||||
|
||||
ModFolderLoadTask::ModFolderLoadTask(QDir mods_dir, QDir index_dir, bool is_indexed, bool clean_orphan, QObject* parent)
|
||||
: Task(parent, false), m_mods_dir(mods_dir), m_index_dir(index_dir), m_is_indexed(is_indexed), m_clean_orphan(clean_orphan), m_result(new Result())
|
||||
ModFolderLoadTask::ModFolderLoadTask(QDir mods_dir, QDir index_dir, bool is_indexed, bool clean_orphan)
|
||||
: Task(nullptr, false), m_mods_dir(mods_dir), m_index_dir(index_dir), m_is_indexed(is_indexed), m_clean_orphan(clean_orphan), m_result(new Result())
|
||||
{}
|
||||
|
||||
void ModFolderLoadTask::executeTask()
|
||||
@ -96,7 +96,10 @@ void ModFolderLoadTask::executeTask()
|
||||
}
|
||||
}
|
||||
|
||||
emitSucceeded();
|
||||
if (m_aborted)
|
||||
emit finished();
|
||||
else
|
||||
emitSucceeded();
|
||||
}
|
||||
|
||||
void ModFolderLoadTask::getFromMetadata()
|
||||
|
@ -57,7 +57,15 @@ public:
|
||||
}
|
||||
|
||||
public:
|
||||
ModFolderLoadTask(QDir mods_dir, QDir index_dir, bool is_indexed, bool clean_orphan = false, QObject* parent = nullptr);
|
||||
ModFolderLoadTask(QDir mods_dir, QDir index_dir, bool is_indexed, bool clean_orphan = false);
|
||||
|
||||
[[nodiscard]] bool canAbort() const override { return true; }
|
||||
bool abort() override
|
||||
{
|
||||
m_aborted.store(true);
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
void executeTask() override;
|
||||
|
||||
@ -69,4 +77,6 @@ private:
|
||||
bool m_is_indexed;
|
||||
bool m_clean_orphan;
|
||||
ResultPtr m_result;
|
||||
|
||||
std::atomic<bool> m_aborted = false;
|
||||
};
|
||||
|
Reference in New Issue
Block a user