Delay writing image cache index while loading songs (#1917)

This commit is contained in:
Tracy Ward
2019-10-12 11:37:38 -04:00
committed by GitHub
3 changed files with 16 additions and 2 deletions
+9 -1
View File
@@ -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.
+3
View File
@@ -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();
+4 -1
View File
@@ -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() );
}