diff --git a/src/NotesWriterSM.cpp b/src/NotesWriterSM.cpp index 7b80baba19..13d3e21a3b 100644 --- a/src/NotesWriterSM.cpp +++ b/src/NotesWriterSM.cpp @@ -287,7 +287,7 @@ static RString GetSMNotesTag( const Song &song, const Steps &in ) return JoinLineList( lines ); } -bool NotesWriterSM::Write( RString sPath, const Song &out ) +bool NotesWriterSM::Write( RString sPath, const Song &out, const vector& vpStepsToSave ) { int flags = RageFile::WRITE; @@ -302,8 +302,6 @@ bool NotesWriterSM::Write( RString sPath, const Song &out ) WriteGlobalTags( f, out ); - // Save specified Steps to this file - const vector& vpStepsToSave = out.GetAllSteps(); FOREACH_CONST( Steps*, vpStepsToSave, s ) { const Steps* pSteps = *s; diff --git a/src/NotesWriterSM.h b/src/NotesWriterSM.h index 71a5e8b292..ee0ed26441 100644 --- a/src/NotesWriterSM.h +++ b/src/NotesWriterSM.h @@ -11,7 +11,7 @@ namespace NotesWriterSM * @param sPath the path to write the file. * @param out the Song to be written out. * @return its success or failure. */ - bool Write( RString sPath, const Song &out ); + bool Write( RString sPath, const Song &out, const vector& vpStepsToSave ); /** * @brief Get some contents about the edit file first. * @param pSong the Song in question. diff --git a/src/Song.cpp b/src/Song.cpp index b9d15c3ea8..50537a8b97 100644 --- a/src/Song.cpp +++ b/src/Song.cpp @@ -925,7 +925,22 @@ bool Song::SaveToSMFile() // If the file exists, make a backup. if( IsAFile(sPath) ) FileCopy( sPath, sPath + ".old" ); - return NotesWriterSM::Write( sPath, *this ); + + vector vpStepsToSave; + FOREACH_CONST( Steps*, m_vpSteps, s ) + { + Steps *pSteps = *s; + if( pSteps->IsAutogen() ) + continue; // don't write autogen notes + + // Only save steps that weren't loaded from a profile. + if( pSteps->WasLoadedFromProfile() ) + continue; + + vpStepsToSave.push_back( pSteps ); + } + + return NotesWriterSM::Write( sPath, *this, vpStepsToSave ); }