NOISSUE fix crash because of early destruction of java list load task
This commit is contained in:
parent
c4c8e99681
commit
5565a2f85e
@ -31,7 +31,27 @@ JavaInstallList::JavaInstallList(QObject *parent) : BaseVersionList(parent)
|
||||
|
||||
shared_qobject_ptr<Task> JavaInstallList::getLoadTask()
|
||||
{
|
||||
return new JavaListLoadTask(this);
|
||||
load();
|
||||
return getCurrentTask();
|
||||
}
|
||||
|
||||
shared_qobject_ptr<Task> JavaInstallList::getCurrentTask()
|
||||
{
|
||||
if(m_status == Status::InProgress)
|
||||
{
|
||||
return m_loadTask;
|
||||
}
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
void JavaInstallList::load()
|
||||
{
|
||||
if(m_status != Status::InProgress)
|
||||
{
|
||||
m_status = Status::InProgress;
|
||||
m_loadTask = new JavaListLoadTask(this);
|
||||
m_loadTask->start();
|
||||
}
|
||||
}
|
||||
|
||||
const BaseVersionPtr JavaInstallList::at(int i) const
|
||||
@ -41,7 +61,7 @@ const BaseVersionPtr JavaInstallList::at(int i) const
|
||||
|
||||
bool JavaInstallList::isLoaded()
|
||||
{
|
||||
return m_loaded;
|
||||
return m_status == JavaInstallList::Status::Done;
|
||||
}
|
||||
|
||||
int JavaInstallList::count() const
|
||||
@ -87,7 +107,6 @@ void JavaInstallList::updateListData(QList<BaseVersionPtr> versions)
|
||||
{
|
||||
beginResetModel();
|
||||
m_vlist = versions;
|
||||
m_loaded = true;
|
||||
sortVersions();
|
||||
if(m_vlist.size())
|
||||
{
|
||||
@ -95,6 +114,8 @@ void JavaInstallList::updateListData(QList<BaseVersionPtr> versions)
|
||||
best->recommended = true;
|
||||
}
|
||||
endResetModel();
|
||||
m_status = Status::Done;
|
||||
m_loadTask.reset();
|
||||
}
|
||||
|
||||
bool sortJavas(BaseVersionPtr left, BaseVersionPtr right)
|
||||
|
@ -31,6 +31,12 @@ class JavaListLoadTask;
|
||||
class MULTIMC_LOGIC_EXPORT JavaInstallList : public BaseVersionList
|
||||
{
|
||||
Q_OBJECT
|
||||
enum class Status
|
||||
{
|
||||
NotDone,
|
||||
InProgress,
|
||||
Done
|
||||
};
|
||||
public:
|
||||
explicit JavaInstallList(QObject *parent = 0);
|
||||
|
||||
@ -47,9 +53,13 @@ public slots:
|
||||
void updateListData(QList<BaseVersionPtr> versions) override;
|
||||
|
||||
protected:
|
||||
QList<BaseVersionPtr> m_vlist;
|
||||
void load();
|
||||
shared_qobject_ptr<Task> getCurrentTask();
|
||||
|
||||
bool m_loaded = false;
|
||||
protected:
|
||||
Status m_status = Status::NotDone;
|
||||
shared_qobject_ptr<JavaListLoadTask> m_loadTask;
|
||||
QList<BaseVersionPtr> m_vlist;
|
||||
};
|
||||
|
||||
class JavaListLoadTask : public Task
|
||||
|
Loading…
Reference in New Issue
Block a user