============================================================================== LoadingManager::ProcessNextRequest ============================================================================== Description: Handle the next load request in the queue. Parameters: None. Return: None. ==============================================================================
| 596 | // |
| 597 | //============================================================================== |
| 598 | void LoadingManager::ProcessNextRequest() |
| 599 | { |
| 600 | // Are we done? |
| 601 | if(!mLoading) |
| 602 | { |
| 603 | if(mRequestHead != mRequestTail) |
| 604 | { |
| 605 | // Start loading the next file. |
| 606 | LoadingRequest& request = mRequests[mRequestHead]; |
| 607 | |
| 608 | if ( request.filename[0] != '\0' ) |
| 609 | { |
| 610 | if ( !(CommandLineOptions::Get( CLO_NO_LOADING_SPEW )) ) |
| 611 | { |
| 612 | rReleasePrintf( "<<START>> Async Loading: %s\n", request.filename ); |
| 613 | } |
| 614 | #ifdef RAD_WIN32 |
| 615 | mRequestsProcessed++; |
| 616 | #endif |
| 617 | |
| 618 | request.startTime = radTimeGetMilliseconds(); |
| 619 | mLoading = true; |
| 620 | GameMemoryAllocator heap = request.heap; |
| 621 | |
| 622 | #ifndef RAD_RELEASE |
| 623 | if (HeapManager::s_bSpecialRoute) |
| 624 | { |
| 625 | heap = GMA_SPECIAL; |
| 626 | } |
| 627 | #endif |
| 628 | |
| 629 | request.pFileHandler->LoadFile( request.filename, |
| 630 | this, |
| 631 | (void*)mRequestHead, |
| 632 | heap ); |
| 633 | } |
| 634 | else |
| 635 | { |
| 636 | rAssert( request.pCallback != NULL ); |
| 637 | |
| 638 | mRequestHead = (mRequestHead + 1) % MAX_REQUESTS; |
| 639 | mLoading = false; |
| 640 | |
| 641 | request.pCallback->OnProcessRequestsComplete(request.pUserData); |
| 642 | ProcessNextRequest(); |
| 643 | } |
| 644 | } |
| 645 | } |
| 646 | } |
| 647 | |
| 648 |
no test coverage detected