diff --git a/src/BackgroundUtil.cpp b/src/BackgroundUtil.cpp index be20d456bb..4d608a6e18 100644 --- a/src/BackgroundUtil.cpp +++ b/src/BackgroundUtil.cpp @@ -129,6 +129,13 @@ void BackgroundUtil::SortBackgroundChangesArray( vector &vBack sort( vBackgroundChanges.begin(), vBackgroundChanges.end(), CompareBackgroundChanges ); } +void BackgroundUtil::AddBackgroundChange( vector &vBackgroundChanges, BackgroundChange seg ) +{ + vector::iterator it; + it = upper_bound( vBackgroundChanges.begin(), vBackgroundChanges.end(), seg, CompareBackgroundChanges ); + vBackgroundChanges.insert( it, seg ); +} + void BackgroundUtil::GetBackgroundEffects( const RString &_sName, vector &vsPathsOut, vector &vsNamesOut ) { RString sName = _sName; diff --git a/src/BackgroundUtil.h b/src/BackgroundUtil.h index c4907b590c..4858019e5f 100644 --- a/src/BackgroundUtil.h +++ b/src/BackgroundUtil.h @@ -73,6 +73,7 @@ struct BackgroundChange /** @brief Shared background-related routines. */ namespace BackgroundUtil { + void AddBackgroundChange( vector &vBackgroundChanges, BackgroundChange seg ); void SortBackgroundChangesArray( vector &vBackgroundChanges ); void GetBackgroundEffects( const RString &sName, vector &vsPathsOut, vector &vsNamesOut ); diff --git a/src/Song.cpp b/src/Song.cpp index 33299ff66a..719509a18a 100644 --- a/src/Song.cpp +++ b/src/Song.cpp @@ -175,14 +175,12 @@ void Song::AddBackgroundChange( BackgroundLayer iLayer, BackgroundChange seg ) } ASSERT( iLayer >= 0 && iLayer < NUM_BackgroundLayer ); - GetBackgroundChanges(iLayer).push_back( seg ); - BackgroundUtil::SortBackgroundChangesArray( GetBackgroundChanges(iLayer) ); + BackgroundUtil::AddBackgroundChange( GetBackgroundChanges(iLayer), seg ); } void Song::AddForegroundChange( BackgroundChange seg ) { - GetForegroundChanges().push_back( seg ); - BackgroundUtil::SortBackgroundChangesArray( GetForegroundChanges() ); + BackgroundUtil::AddBackgroundChange( GetForegroundChanges(), seg ); } void Song::AddLyricSegment( LyricSegment seg )