MCPcopy Create free account
hub / github.com/BobbyAnguelov/Esoterica / ProcessResourceRequests

Method ProcessResourceRequests

Code/Base/Resource/ResourceSystem.cpp:398–436  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

396 EE::Delete( recordIter->second );
397 m_resourceRecords.erase( recordIter );
398 }
399 }
400
401 // Delete request
402 EE::Delete( pCompletedRequest );
403 }
404
405 m_completedRequests.clear();
406 }
407
408 // Kick off new async task
409 //-------------------------------------------------------------------------
410
411 if ( !m_activeRequests.empty() )
412 {
413 m_taskSystem.ScheduleTask( &m_asyncProcessingTask );
414 m_isAsyncTaskRunning = true;
415 }
416 }
417
418 void ResourceSystem::WaitForAllRequestsToComplete()
419 {
420 while ( IsBusy() )
421 {
422 Update();
423 }
424 }
425
426 void ResourceSystem::ProcessResourceRequests()
427 {
428 EE_PROFILE_FUNCTION_RESOURCE();
429
430 //-------------------------------------------------------------------------
431
432 // We dont have to worry about this loop even if the m_activeRequests array is modified from another thread since we only access the array in 2 places and both use locks
433 for ( int32_t i = (int32_t) m_activeRequests.size() - 1; i >= 0; i-- )
434 {
435 ResourceRequest::RequestContext context;
436 context.m_createRawRequestRequestFunction = [this] ( ResourceRequest* pRequest ) { m_pResourceProvider->RequestRawResource( pRequest ); };
437 context.m_cancelRawRequestRequestFunction = [this] ( ResourceRequest* pRequest ) { m_pResourceProvider->CancelRequest( pRequest ); };
438 context.m_loadResourceFunction = [this] ( ResourceRequesterID const& requesterID, ResourcePtr& resourcePtr ) { LoadResource( resourcePtr, requesterID ); };
439 context.m_unloadResourceFunction = [this] ( ResourceRequesterID const& requesterID, ResourcePtr& resourcePtr ) { UnloadResource( resourcePtr, requesterID ); };

Callers

nothing calls this directly

Calls 10

LoadResourceFunction · 0.85
UnloadResourceFunction · 0.85
sizeMethod · 0.45
RequestRawResourceMethod · 0.45
CancelRequestMethod · 0.45
IsActiveMethod · 0.45
UpdateMethod · 0.45
emplace_backMethod · 0.45
erase_unsortedMethod · 0.45
beginMethod · 0.45

Tested by

no test coverage detected