From 76ff23f8a187b70621849c5a8bbe6428f8c25c75 Mon Sep 17 00:00:00 2001 From: Nicolas Date: Fri, 5 Jan 2018 00:42:08 -0300 Subject: [PATCH] Song cache: Fix broken BPMs and pack banners --- src/SongCacheIndex.cpp | 5 +++-- src/SongManager.cpp | 14 ++++++-------- 2 files changed, 9 insertions(+), 10 deletions(-) diff --git a/src/SongCacheIndex.cpp b/src/SongCacheIndex.cpp index 1b549dcd78..e669d3a7a5 100644 --- a/src/SongCacheIndex.cpp +++ b/src/SongCacheIndex.cpp @@ -95,8 +95,9 @@ int SongCacheIndex::InsertStepsTimingData(TimingData timing) for (auto&& seg : segs) { const BPMSegment* segment = ToBPM(seg); - bpms.append(ssprintf("%.6f=%.6f", NoteRowToBeat(segment->GetRow()), segment->GetBPM())); + bpms.append(ssprintf("%.6f=%.6f,", NoteRowToBeat(segment->GetRow()), segment->GetBPM())); } + bpms = bpms.substr(0, bpms.size() - 1);//Remove trailing ',' } insertTimingData.bind(timingDataIndex++, bpms); } @@ -945,7 +946,7 @@ inline pair SongCacheIndex::SongFromStatement(Song* song, SQLite:: TimingData stepsTiming = TimingData(song->m_SongTiming.m_fBeat0OffsetInSeconds); //Load timing data stepsTiming.m_fBeat0OffsetInSeconds = static_cast(qTiming.getColumn(timingIndex++)); - SSCLoader::ProcessBPMs(stepsTiming, static_cast(qSteps.getColumn(timingIndex++)), dir); + SSCLoader::ProcessBPMs(stepsTiming, static_cast(qTiming.getColumn(timingIndex++)), dir); //steps_tag_handlers["BPMS"] = &SetStepsBPMs; SSCLoader::ProcessStops(stepsTiming, static_cast(qTiming.getColumn(timingIndex++)), dir); //steps_tag_handlers["STOPS"] = &SetStepsStops; diff --git a/src/SongManager.cpp b/src/SongManager.cpp index e0372e6037..49ed9ef2a7 100644 --- a/src/SongManager.cpp +++ b/src/SongManager.cpp @@ -219,7 +219,7 @@ 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= false; + SONGINDEX->delay_save_cache= true; if(PREFSMAN->m_bFastLoad) SONGINDEX->LoadCache(ld, cache); if( ld ) { @@ -231,7 +231,8 @@ void SongManager::InitSongsFromDisk( LoadingWindow *ld ) cacheIndex++; ld->SetProgress(cacheIndex); auto& pNewSong = pair.second; - if (!FILEMAN->IsADirectory(pNewSong->GetSongDir().substr(0, pNewSong->GetSongDir().size() - 1))) { + RString dir = pNewSong->GetSongDir(); + if (!FILEMAN->IsADirectory(dir.substr(0, dir.length() - 1))) { if (PREFSMAN->m_bShrinkSongCache) SONGINDEX->DeleteSongFromDB(pair.second); delete pair.second; @@ -241,16 +242,13 @@ void SongManager::InitSongsFromDisk( LoadingWindow *ld ) AddSongToList(pNewSong); AddKeyedPointers(pNewSong); m_mapSongGroupIndex[pNewSong->m_sGroupName].emplace_back(pNewSong); - vector folders; - split(pNewSong->GetSongDir(), "/", folders); - if (AddGroup(folders[0], pNewSong->m_sGroupName)) + if (AddGroup(dir.substr(0, dir.find('/', 1) + 1), pNewSong->m_sGroupName)) IMAGECACHE->CacheImage("Banner", GetSongGroupBannerPath(pNewSong->m_sGroupName)); } LoadStepManiaSongDir( SpecialFiles::SONGS_DIR, ld ); LoadStepManiaSongDir( ADDITIONAL_SONGS_DIR, ld ); LoadEnabledSongsFromPref(); - //SONGINDEX->SaveCacheIndex(); - //SONGINDEX->delay_save_cache= false; + SONGINDEX->delay_save_cache= false; LOG->Trace( "Found %i songs in %f seconds.", m_pSongs.size(), tm.GetDeltaTime() ); } @@ -622,7 +620,7 @@ void SongManager::LoadStepManiaSongDir( RString sDir, LoadingWindow *ld ) } if (ld) { ld->SetProgress(songIndex); - ld->SetText("Loading Songs From Disk\n (" + sGroupDirName + "()"); + ld->SetText("Loading Songs From Disk\n (" + sGroupDirName + ")"); } if (!loaded) continue; LOG->Trace("Loaded %i songs from \"%s\"", loaded, (sDir + sGroupDirName).c_str());