diff --git a/src/ImageCache.cpp b/src/ImageCache.cpp index 5a27c046be..0469d90a78 100644 --- a/src/ImageCache.cpp +++ b/src/ImageCache.cpp @@ -169,6 +169,7 @@ void ImageCache::UnloadAllImages() } ImageCache::ImageCache() + : delay_save_cache(false) { ReadFromDisk(); } @@ -457,9 +458,16 @@ void ImageCache::CacheImageInternal( RString sImageDir, RString sImagePath ) ImageData.SetValue( sImagePath, "Width", iSourceWidth ); ImageData.SetValue( sImagePath, "Height", iSourceHeight ); ImageData.SetValue( sImagePath, "FullHash", GetHashForFile( sImagePath ) ); - ImageData.WriteFile( IMAGE_CACHE_INDEX ); + if (!delay_save_cache) + WriteToDisk(); } +void ImageCache::WriteToDisk() +{ + ImageData.WriteFile(IMAGE_CACHE_INDEX); +} + + /* * (c) 2003 Glenn Maynard * All rights reserved. diff --git a/src/ImageCache.h b/src/ImageCache.h index 57294fc03f..6f8cfcdabd 100644 --- a/src/ImageCache.h +++ b/src/ImageCache.h @@ -13,6 +13,7 @@ public: ImageCache(); ~ImageCache(); void ReadFromDisk(); + void WriteToDisk(); RageTextureID LoadCachedImage( RString sImageDir, RString sImagePath ); void CacheImage( RString sImageDir, RString sImagePath ); @@ -23,6 +24,8 @@ public: void OutputStats() const; + bool delay_save_cache; + private: static RString GetImageCachePath( RString sImageDir, RString sImagePath ); void UnloadAllImages(); diff --git a/src/SongManager.cpp b/src/SongManager.cpp index 6aa220d279..7987ddc9ef 100644 --- a/src/SongManager.cpp +++ b/src/SongManager.cpp @@ -158,7 +158,8 @@ void SongManager::InitSongsFromDisk( LoadingWindow *ld ) RageTimer tm; // Tell SONGINDEX to not write the cache index file every time a song adds // an entry. -Kyz - SONGINDEX->delay_save_cache= true; + SONGINDEX->delay_save_cache = true; + IMAGECACHE->delay_save_cache = true; LoadStepManiaSongDir( SpecialFiles::SONGS_DIR, ld ); const bool bOldVal = PREFSMAN->m_bFastLoad; @@ -168,6 +169,8 @@ void SongManager::InitSongsFromDisk( LoadingWindow *ld ) LoadEnabledSongsFromPref(); SONGINDEX->SaveCacheIndex(); SONGINDEX->delay_save_cache= false; + IMAGECACHE->WriteToDisk(); + IMAGECACHE->delay_save_cache = false; LOG->Trace( "Found %d songs in %f seconds.", (int)m_pSongs.size(), tm.GetDeltaTime() ); }