diff --git a/timeline/src/Audio_Sequence.C b/timeline/src/Audio_Sequence.C index f8dddd5..935ca6d 100644 --- a/timeline/src/Audio_Sequence.C +++ b/timeline/src/Audio_Sequence.C @@ -177,7 +177,8 @@ Audio_Sequence::set ( Log_Entry &e ) assert( t ); - t->sequence( this ); + /* FIXME: this causes the sequences to be set twice in the replay logic, first when the sequence is created, then when track sequence is assigned. */ + t->sequence( this ); } else if ( ! strcmp( ":name", s ) ) name( v ); diff --git a/timeline/src/Track.C b/timeline/src/Track.C index 0e0ecf6..043a6af 100644 --- a/timeline/src/Track.C +++ b/timeline/src/Track.C @@ -134,7 +134,7 @@ Track::init ( void ) _name = NULL; _selected = false; _size = 1; - + record_ds = NULL; playback_ds = NULL; @@ -604,6 +604,15 @@ Track::remove ( Audio_Sequence *t ) if ( ! takes ) return; + Loggable::block_start(); + + Logger log(this); + + if ( t->id() == 0x2785 ) + { + WARNING( "****** 0x2785 removed here *****"); + } + if ( sequence() == t ) { pack->remove( t ); @@ -617,8 +626,10 @@ Track::remove ( Audio_Sequence *t ) else takes->remove( t ); -/* delete t; */ + delete t; + Loggable::block_end(); + adjust_size(); } @@ -647,9 +658,18 @@ Track::remove ( Control_Sequence *t ) void Track::sequence ( Audio_Sequence * t ) { + Logger log(this); + + /* FIXME: testing */ + if ( sequence() != NULL && sequence()->id() == 0x2785 ) + { + DMESSAGE( "****** Here *****"); + } + if ( sequence() == t ) { - DMESSAGE( "Attempt to set sequence twice" ); + /* ASSERT( false, "Attempt to set same sequence twice" ); */ + DMESSAGE( "Attempt to set same sequence twice, %p == %p", t, sequence() ); return; } @@ -873,8 +893,13 @@ Track::menu_cb ( const Fl_Menu_ *m ) else if ( !strcmp( picked, "Takes/New" ) ) { timeline->track_lock.wrlock(); + + Loggable::block_start(); + sequence( (Audio_Sequence*)sequence()->clone_empty() ); timeline->track_lock.unlock(); + + Loggable::block_end(); } else if ( !strcmp( picked, "Takes/Remove" ) ) { @@ -909,7 +934,7 @@ Track::menu_cb ( const Fl_Menu_ *m ) else if ( !strncmp( picked, "Takes/", sizeof( "Takes/" ) - 1 ) ) { Audio_Sequence* s = (Audio_Sequence*)m->mvalue()->user_data(); - + timeline->track_lock.wrlock(); sequence( s ); timeline->track_lock.unlock();