MCPcopy Create free account
hub / github.com/PolyMC/PolyMC / update

Method update

launcher/minecraft/mod/ResourceFolderModel.cpp:223–254  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

221
222static QMutex s_update_task_mutex;
223bool ResourceFolderModel::update()
224{
225 // We hold a lock here to prevent race conditions on the m_current_update_task reset.
226 QMutexLocker lock(&s_update_task_mutex);
227
228 // Already updating, so we schedule a future update and return.
229 if (m_current_update_task) {
230 m_scheduled_update = true;
231 return false;
232 }
233
234 m_current_update_task.reset(createUpdateTask());
235 if (!m_current_update_task)
236 return false;
237
238 connect(m_current_update_task.get(), &Task::succeeded, this, &ResourceFolderModel::onUpdateSucceeded,
239 Qt::ConnectionType::QueuedConnection);
240 connect(m_current_update_task.get(), &Task::failed, this, &ResourceFolderModel::onUpdateFailed, Qt::ConnectionType::QueuedConnection);
241 connect(m_current_update_task.get(), &Task::finished, this, [=] {
242 m_current_update_task.reset();
243 if (m_scheduled_update) {
244 m_scheduled_update = false;
245 update();
246 } else {
247 emit updateFinished();
248 }
249 }, Qt::ConnectionType::QueuedConnection);
250
251 QThreadPool::globalInstance()->start(m_current_update_task.get());
252
253 return true;
254}
255
256void ResourceFolderModel::resolveResource(Resource* res)
257{

Callers 1

executeTaskMethod · 0.45

Calls 3

resetMethod · 0.45
getMethod · 0.45
startMethod · 0.45

Tested by

no test coverage detected