Merge pull request #1145 from Trial97/net_job_crash
This commit is contained in:
commit
a4502f44c2
@ -53,7 +53,10 @@ class ByteArraySink : public Sink {
|
|||||||
public:
|
public:
|
||||||
auto init(QNetworkRequest& request) -> Task::State override
|
auto init(QNetworkRequest& request) -> Task::State override
|
||||||
{
|
{
|
||||||
m_output->clear();
|
if (m_output)
|
||||||
|
m_output->clear();
|
||||||
|
else
|
||||||
|
qWarning() << "ByteArraySink did not initialize the buffer because it's not addressable";
|
||||||
if (initAllValidators(request))
|
if (initAllValidators(request))
|
||||||
return Task::State::Running;
|
return Task::State::Running;
|
||||||
return Task::State::Failed;
|
return Task::State::Failed;
|
||||||
@ -61,7 +64,10 @@ class ByteArraySink : public Sink {
|
|||||||
|
|
||||||
auto write(QByteArray& data) -> Task::State override
|
auto write(QByteArray& data) -> Task::State override
|
||||||
{
|
{
|
||||||
m_output->append(data);
|
if (m_output)
|
||||||
|
m_output->append(data);
|
||||||
|
else
|
||||||
|
qWarning() << "ByteArraySink did not write the buffer because it's not addressable";
|
||||||
if (writeAllValidators(data))
|
if (writeAllValidators(data))
|
||||||
return Task::State::Running;
|
return Task::State::Running;
|
||||||
return Task::State::Failed;
|
return Task::State::Failed;
|
||||||
@ -69,7 +75,10 @@ class ByteArraySink : public Sink {
|
|||||||
|
|
||||||
auto abort() -> Task::State override
|
auto abort() -> Task::State override
|
||||||
{
|
{
|
||||||
m_output->clear();
|
if (m_output)
|
||||||
|
m_output->clear();
|
||||||
|
else
|
||||||
|
qWarning() << "ByteArraySink did not clear the buffer because it's not addressable";
|
||||||
failAllValidators();
|
failAllValidators();
|
||||||
return Task::State::Failed;
|
return Task::State::Failed;
|
||||||
}
|
}
|
||||||
|
@ -138,19 +138,18 @@ void ConcurrentTask::startNext()
|
|||||||
connect(next.get(), &Task::progress, this, [this, next](qint64 current, qint64 total) { subTaskProgress(next, current, total); });
|
connect(next.get(), &Task::progress, this, [this, next](qint64 current, qint64 total) { subTaskProgress(next, current, total); });
|
||||||
|
|
||||||
m_doing.insert(next.get(), next);
|
m_doing.insert(next.get(), next);
|
||||||
|
qsizetype num_starts = qMin(m_queue.size(), m_total_max_size - m_doing.size());
|
||||||
auto task_progress = std::make_shared<TaskStepProgress>(next->getUid());
|
auto task_progress = std::make_shared<TaskStepProgress>(next->getUid());
|
||||||
m_task_progress.insert(next->getUid(), task_progress);
|
m_task_progress.insert(next->getUid(), task_progress);
|
||||||
|
|
||||||
updateState();
|
updateState();
|
||||||
updateStepProgress(*task_progress.get(), Operation::ADDED);
|
updateStepProgress(*task_progress.get(), Operation::ADDED);
|
||||||
|
|
||||||
|
|
||||||
QCoreApplication::processEvents();
|
QCoreApplication::processEvents();
|
||||||
|
|
||||||
QMetaObject::invokeMethod(next.get(), &Task::start, Qt::QueuedConnection);
|
QMetaObject::invokeMethod(next.get(), &Task::start, Qt::QueuedConnection);
|
||||||
|
|
||||||
// Allow going up the number of concurrent tasks in case of tasks being added in the middle of a running task.
|
// Allow going up the number of concurrent tasks in case of tasks being added in the middle of a running task.
|
||||||
int num_starts = qMin(m_queue.size(), m_total_max_size - m_doing.size());
|
|
||||||
for (int i = 0; i < num_starts; i++)
|
for (int i = 0; i < num_starts; i++)
|
||||||
QMetaObject::invokeMethod(this, &ConcurrentTask::startNext, Qt::QueuedConnection);
|
QMetaObject::invokeMethod(this, &ConcurrentTask::startNext, Qt::QueuedConnection);
|
||||||
}
|
}
|
||||||
|
@ -240,10 +240,13 @@ void ResourcePage::updateSelectionButton()
|
|||||||
}
|
}
|
||||||
|
|
||||||
m_ui->resourceSelectionButton->setEnabled(true);
|
m_ui->resourceSelectionButton->setEnabled(true);
|
||||||
if (!getCurrentPack()->isVersionSelected(m_selected_version_index)) {
|
if (getCurrentPack()) {
|
||||||
m_ui->resourceSelectionButton->setText(tr("Select %1 for download").arg(resourceString()));
|
if (!getCurrentPack()->isVersionSelected(m_selected_version_index))
|
||||||
|
m_ui->resourceSelectionButton->setText(tr("Select %1 for download").arg(resourceString()));
|
||||||
|
else
|
||||||
|
m_ui->resourceSelectionButton->setText(tr("Deselect %1 for download").arg(resourceString()));
|
||||||
} else {
|
} else {
|
||||||
m_ui->resourceSelectionButton->setText(tr("Deselect %1 for download").arg(resourceString()));
|
qWarning() << "Tried to update the selected button but there is not a pack selected";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user