From aa12ee50823b9e9ade8279b8adaa69b07c2ea730 Mon Sep 17 00:00:00 2001 From: Tobias Doerffel Date: Sun, 7 Sep 2008 12:33:56 +0000 Subject: [PATCH] * fixed freeze after adding BB-tracks (closes #2089337) * replaced bad cast for calling projectNotes::save/restoreState by proper C++ construct git-svn-id: https://lmms.svn.sf.net/svnroot/lmms/trunk/lmms@1570 0778d3d1-df1d-0410-868b-ea421aaaa00d --- ChangeLog | 7 ++++++- src/core/song.cpp | 14 +++++++++----- 2 files changed, 15 insertions(+), 6 deletions(-) diff --git a/ChangeLog b/ChangeLog index 325ebe0db..f73ae1f65 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,10 @@ 2008-09-07 Tobias Doerffel + * src/core/song.cpp: + - fixed freeze after adding BB-tracks (closes #2089337) + - replaced bad cast for calling projectNotes::save/restoreState by + proper C++ construct + * include/controller_rack_view.h: * include/fx_mixer_view.h: * include/main_window.h: @@ -15,7 +20,7 @@ * src/gui/widgets/controller_rack_view.cpp: * src/tracks/instrument_track.cpp: properly save and restore position, size, visibility and state of - MDI-subwindows + MDI-subwindows (closes #2072383) * src/core/serializing_object.cpp: fixed hook-mechanism diff --git a/src/core/song.cpp b/src/core/song.cpp index 232d83bf5..d2d6f7bca 100644 --- a/src/core/song.cpp +++ b/src/core/song.cpp @@ -672,6 +672,7 @@ void song::addBBTrack( void ) track * t = track::create( track::BBTrack, this ); engine::getBBTrackContainer()->setCurrentBB( bbTrack::numOfBBTrack( t ) ); + engine::getMixer()->unlock(); } @@ -679,7 +680,9 @@ void song::addBBTrack( void ) void song::addSampleTrack( void ) { + engine::getMixer()->lock(); (void) track::create( track::SampleTrack, this ); + engine::getMixer()->unlock(); } @@ -687,7 +690,9 @@ void song::addSampleTrack( void ) void song::addAutomationTrack( void ) { + engine::getMixer()->lock(); (void) track::create( track::AutomationTrack, this ); + engine::getMixer()->unlock(); } @@ -937,9 +942,8 @@ void song::loadProject( const QString & _file_name ) engine::getProjectNotes()-> nodeName() ) { - ( (journallingObject *)( engine:: - getProjectNotes() ) )-> - restoreState( node.toElement() ); + engine::getProjectNotes()-> + serializingObject::restoreState( node.toElement() ); } else if( node.nodeName() == m_playPos[Mode_PlaySong]. @@ -1008,8 +1012,8 @@ bool song::saveProject( void ) engine::getControllerRackView()->saveState( mmp, mmp.content() ); engine::getPianoRoll()->saveState( mmp, mmp.content() ); engine::getAutomationEditor()->saveState( mmp, mmp.content() ); - ( (journallingObject *)( engine::getProjectNotes() ) )-> - saveState( mmp, mmp.content() ); + engine::getProjectNotes()-> + serializingObject::saveState( mmp, mmp.content() ); m_playPos[Mode_PlaySong].m_timeLine->saveState( mmp, mmp.content() ); }