Skip to content

Commit

Permalink
Song cache: Fix broken BPMs and pack banners
Browse files Browse the repository at this point in the history
  • Loading branch information
nico-abram committed Feb 10, 2018
1 parent 78939ff commit 76ff23f
Show file tree
Hide file tree
Showing 2 changed files with 9 additions and 10 deletions.
5 changes: 3 additions & 2 deletions src/SongCacheIndex.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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);
}
Expand Down Expand Up @@ -945,7 +946,7 @@ inline pair<RString, int> SongCacheIndex::SongFromStatement(Song* song, SQLite::
TimingData stepsTiming = TimingData(song->m_SongTiming.m_fBeat0OffsetInSeconds);
//Load timing data
stepsTiming.m_fBeat0OffsetInSeconds = static_cast<double>(qTiming.getColumn(timingIndex++));
SSCLoader::ProcessBPMs(stepsTiming, static_cast<const char*>(qSteps.getColumn(timingIndex++)), dir);
SSCLoader::ProcessBPMs(stepsTiming, static_cast<const char*>(qTiming.getColumn(timingIndex++)), dir);
//steps_tag_handlers["BPMS"] = &SetStepsBPMs;
SSCLoader::ProcessStops(stepsTiming, static_cast<const char*>(qTiming.getColumn(timingIndex++)), dir);
//steps_tag_handlers["STOPS"] = &SetStepsStops;
Expand Down
14 changes: 6 additions & 8 deletions src/SongManager.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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 ) {
Expand All @@ -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;
Expand All @@ -241,16 +242,13 @@ void SongManager::InitSongsFromDisk( LoadingWindow *ld )
AddSongToList(pNewSong);
AddKeyedPointers(pNewSong);
m_mapSongGroupIndex[pNewSong->m_sGroupName].emplace_back(pNewSong);
vector<RString> 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() );
}
Expand Down Expand Up @@ -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());
Expand Down

0 comments on commit 76ff23f

Please sign in to comment.