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() { 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)
|
void reset(const shared_qobject_ptr<T>& other)
|
||||||
{
|
{
|
||||||
shared_qobject_ptr<T> t(other);
|
shared_qobject_ptr<T> t(other);
|
||||||
|
@ -45,6 +45,14 @@ ResourceFolderLoadTask::ResourceFolderLoadTask(const QDir& resource_dir,
|
|||||||
bool is_indexed,
|
bool is_indexed,
|
||||||
bool clean_orphan,
|
bool clean_orphan,
|
||||||
std::function<Resource*(const QFileInfo&)> create_function)
|
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()
|
void ResourceFolderLoadTask::executeTask()
|
||||||
@ -58,8 +66,8 @@ void ResourceFolderLoadTask::executeTask()
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Read JAR files that don't have metadata
|
// Read JAR files that don't have metadata
|
||||||
m_mods_dir.refresh();
|
m_resource_dir.refresh();
|
||||||
for (auto entry : m_mods_dir.entryInfoList()) {
|
for (auto entry : m_resource_dir.entryInfoList()) {
|
||||||
Resource* resource = m_create_func(entry);
|
Resource* resource = m_create_func(entry);
|
||||||
|
|
||||||
if (resource->enabled()) {
|
if (resource->enabled()) {
|
||||||
@ -121,7 +129,7 @@ void ResourceFolderLoadTask::getFromMetadata()
|
|||||||
if (!metadata.isValid())
|
if (!metadata.isValid())
|
||||||
return;
|
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->setMetadata(metadata);
|
||||||
resource->setStatus(ResourceStatus::NOT_INSTALLED);
|
resource->setStatus(ResourceStatus::NOT_INSTALLED);
|
||||||
m_result->resources[resource->internal_id()].reset(resource);
|
m_result->resources[resource->internal_id()].reset(resource);
|
||||||
|
@ -73,15 +73,14 @@ class ResourceFolderLoadTask : public Task {
|
|||||||
void getFromMetadata();
|
void getFromMetadata();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
QDir m_mods_dir, m_index_dir;
|
QDir m_resource_dir, m_index_dir;
|
||||||
bool m_is_indexed;
|
bool m_is_indexed;
|
||||||
bool m_clean_orphan;
|
bool m_clean_orphan;
|
||||||
|
std::function<Resource*(QFileInfo const&)> m_create_func;
|
||||||
ResultPtr m_result;
|
ResultPtr m_result;
|
||||||
|
|
||||||
std::atomic<bool> m_aborted = false;
|
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 */
|
/** This is the thread in which we should put new mod objects */
|
||||||
QThread* m_thread_to_spawn_into;
|
QThread* m_thread_to_spawn_into;
|
||||||
};
|
};
|
||||||
|
Loading…
x
Reference in New Issue
Block a user