| 588 | } |
| 589 | |
| 590 | void CSkins::UpdateStartLoading(CSkinLoadingStats &Stats) |
| 591 | { |
| 592 | for(auto &[_, pSkinContainer] : m_Skins) |
| 593 | { |
| 594 | if(Stats.m_NumPending == 0 || Stats.m_NumLoading + Stats.m_NumLoaded >= (size_t)g_Config.m_ClSkinsLoadedMax) |
| 595 | { |
| 596 | break; |
| 597 | } |
| 598 | if(pSkinContainer->m_State != CSkinContainer::EState::PENDING) |
| 599 | { |
| 600 | continue; |
| 601 | } |
| 602 | switch(pSkinContainer->Type()) |
| 603 | { |
| 604 | case CSkinContainer::EType::LOCAL: |
| 605 | pSkinContainer->m_pLoadJob = std::make_shared<CSkinLoadJob>(this, pSkinContainer->Name(), pSkinContainer->StorageType()); |
| 606 | break; |
| 607 | case CSkinContainer::EType::DOWNLOAD: |
| 608 | pSkinContainer->m_pLoadJob = std::make_shared<CSkinDownloadJob>(this, pSkinContainer->Name()); |
| 609 | break; |
| 610 | default: |
| 611 | dbg_assert_failed("pSkinContainer->Type() invalid"); |
| 612 | } |
| 613 | Engine()->AddJob(pSkinContainer->m_pLoadJob); |
| 614 | pSkinContainer->SetState(CSkinContainer::EState::LOADING); |
| 615 | Stats.m_NumPending--; |
| 616 | Stats.m_NumLoading++; |
| 617 | } |
| 618 | } |
| 619 | |
| 620 | void CSkins::UpdateFinishLoading(CSkinLoadingStats &Stats, std::chrono::nanoseconds StartTime, std::chrono::nanoseconds MaxTime) |
| 621 | { |