// PreloadResource queues a resource to be preloaded outside of the main thread. void ResourceManager::PreloadResource( const Filename& filename ) { const std::string& extension = filename.GetExtension(); // If the extension isn't registered, we can't load this resource ExtensionMap::iterator extensionIter = mRegisteredExtensions.find( extension ); if ( extensionIter == mRegisteredExtensions.end() ) { return; } ExtensionData* extensionData = extensionIter->second; ResourceGeneric* pResource = extensionData->GetFactoryFunction()( filename ); SDL_assert( pResource != nullptr ); mResources[ filename.GetFullPath() ] = pResource; SDL_LockMutex( m_pPendingJobsMutex ); m_PendingJobs.push_back( pResource ); pResource->SetState( ResourceState::PreloadPending ); SDL_UnlockMutex( m_pPendingJobsMutex ); }