Fix order of destruction for sequences.

This commit is contained in:
Jonathan Moore Liles 2008-05-26 01:20:49 -05:00
parent 3717eb12c3
commit 4c45197003
5 changed files with 27 additions and 6 deletions

View File

@ -83,6 +83,8 @@ public:
~Annotation_Sequence ( ) ~Annotation_Sequence ( )
{ {
track()->remove( this );
log_destroy(); log_destroy();
} }

View File

@ -49,6 +49,8 @@ Audio_Sequence::Audio_Sequence ( Track *track ) : Sequence( track )
Audio_Sequence::~Audio_Sequence ( ) Audio_Sequence::~Audio_Sequence ( )
{ {
track()->remove( this );
log_destroy(); log_destroy();
} }

View File

@ -25,6 +25,7 @@ using namespace std;
#include "Track.H" #include "Track.H"
#include "Engine/Port.H" #include "Engine/Port.H"
#include "Engine/Engine.H" // for lock()
#include "Transport.H" // for transport->frame #include "Transport.H" // for transport->frame
bool Control_Sequence::draw_with_gradient = true; bool Control_Sequence::draw_with_gradient = true;
@ -50,9 +51,19 @@ Control_Sequence::~Control_Sequence ( )
{ {
log_destroy(); log_destroy();
engine->lock();
track()->remove( this );
engine->unlock();
_output->shutdown(); _output->shutdown();
delete _output; delete _output;
_output = NULL;
log_destroy();
} }
void void

View File

@ -75,10 +75,6 @@ Sequence::~Sequence ( )
} }
_widgets.clear(); _widgets.clear();
parent()->redraw();
parent()->remove( this );
// log_destroy();
} }
nframes_t nframes_t

View File

@ -354,13 +354,25 @@ Track::add ( Audio_Sequence * t )
void void
Track::remove ( Audio_Sequence *t ) Track::remove ( Audio_Sequence *t )
{ {
timeline->wrlock();
takes->remove( t ); takes->remove( t );
timeline->unlock();
resize(); resize();
// take_menu->remove( t->name() ); // take_menu->remove( t->name() );
} }
void
Track::remove ( Annotation_Sequence *t )
{
annotation->remove( t );
resize();
}
void void
Track::remove ( Control_Sequence *t ) Track::remove ( Control_Sequence *t )
{ {
@ -371,8 +383,6 @@ Track::remove ( Control_Sequence *t )
engine->unlock(); engine->unlock();
resize(); resize();
redraw();
} }
void void