mirror of
https://github.com/PrismLauncher/PrismLauncher.git
synced 2025-05-29 05:10:20 +02:00
Fix crashes
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
This commit is contained in:
parent
ee48766996
commit
6aecbfc38f
@ -33,7 +33,11 @@ class shared_qobject_ptr : public QSharedPointer<T> {
|
||||
{}
|
||||
|
||||
void reset() { QSharedPointer<T>::reset(); }
|
||||
void reset(T* other) { QSharedPointer<T>::reset(other); }
|
||||
void reset(T* other)
|
||||
{
|
||||
shared_qobject_ptr<T> t(other);
|
||||
this->swap(t);
|
||||
}
|
||||
void reset(const shared_qobject_ptr<T>& other)
|
||||
{
|
||||
shared_qobject_ptr<T> t(other);
|
||||
|
@ -45,6 +45,14 @@ ResourceFolderLoadTask::ResourceFolderLoadTask(const QDir& resource_dir,
|
||||
bool is_indexed,
|
||||
bool clean_orphan,
|
||||
std::function<Resource*(const QFileInfo&)> create_function)
|
||||
: Task(nullptr, false)
|
||||
, m_resource_dir(resource_dir)
|
||||
, m_index_dir(index_dir)
|
||||
, m_is_indexed(is_indexed)
|
||||
, m_clean_orphan(clean_orphan)
|
||||
, m_create_func(create_function)
|
||||
, m_result(new Result())
|
||||
, m_thread_to_spawn_into(thread())
|
||||
{}
|
||||
|
||||
void ResourceFolderLoadTask::executeTask()
|
||||
@ -58,8 +66,8 @@ void ResourceFolderLoadTask::executeTask()
|
||||
}
|
||||
|
||||
// Read JAR files that don't have metadata
|
||||
m_mods_dir.refresh();
|
||||
for (auto entry : m_mods_dir.entryInfoList()) {
|
||||
m_resource_dir.refresh();
|
||||
for (auto entry : m_resource_dir.entryInfoList()) {
|
||||
Resource* resource = m_create_func(entry);
|
||||
|
||||
if (resource->enabled()) {
|
||||
@ -121,7 +129,7 @@ void ResourceFolderLoadTask::getFromMetadata()
|
||||
if (!metadata.isValid())
|
||||
return;
|
||||
|
||||
auto* resource = m_create_func(QFileInfo(m_mods_dir.filePath(metadata.filename)));
|
||||
auto* resource = m_create_func(QFileInfo(m_resource_dir.filePath(metadata.filename)));
|
||||
resource->setMetadata(metadata);
|
||||
resource->setStatus(ResourceStatus::NOT_INSTALLED);
|
||||
m_result->resources[resource->internal_id()].reset(resource);
|
||||
|
@ -73,15 +73,14 @@ class ResourceFolderLoadTask : public Task {
|
||||
void getFromMetadata();
|
||||
|
||||
private:
|
||||
QDir m_mods_dir, m_index_dir;
|
||||
QDir m_resource_dir, m_index_dir;
|
||||
bool m_is_indexed;
|
||||
bool m_clean_orphan;
|
||||
std::function<Resource*(QFileInfo const&)> m_create_func;
|
||||
ResultPtr m_result;
|
||||
|
||||
std::atomic<bool> m_aborted = false;
|
||||
|
||||
std::function<Resource*(QFileInfo const&)> m_create_func;
|
||||
|
||||
/** This is the thread in which we should put new mod objects */
|
||||
QThread* m_thread_to_spawn_into;
|
||||
};
|
||||
|
Loading…
x
Reference in New Issue
Block a user