Cleanup locking for OSC playback.

This commit is contained in:
Jonathan Moore Liles 2012-03-29 22:08:45 -07:00
parent 95175c3e2b
commit 338e66c759
3 changed files with 16 additions and 16 deletions

View File

@ -51,11 +51,7 @@ OSC_Thread::process ( void )
{
usleep( 100 * 1000 );
lock();
timeline->process_osc();
unlock();
}
}

View File

@ -1479,16 +1479,16 @@ Timeline::add_track ( Track *track )
{
DMESSAGE( "added new track to the timeline" );
engine->lock();
wrlock();
osc_thread->lock();
engine->lock();
tracks->add( track );
osc_thread->unlock();
engine->unlock();
unlock();
/* FIXME: why is this necessary? doesn't the above add do DAMAGE_CHILD? */
redraw();
@ -1500,17 +1500,17 @@ Timeline::remove_track ( Track *track )
{
DMESSAGE( "removed track from the timeline" );
engine->lock();
wrlock();
osc_thread->lock();
engine->lock();
/* FIXME: what to do about track contents? */
tracks->remove( track );
osc_thread->unlock();
engine->unlock();
unlock();
/* FIXME: why is this necessary? doesn't the above add do DAMAGE_CHILD? */
redraw();
}
@ -1708,6 +1708,8 @@ Timeline::process_osc ( void )
{
THREAD_ASSERT( OSC );
rdlock();
/* reconnect OSC signals */
for ( int i = tracks->children(); i-- ; )
{
@ -1719,5 +1721,7 @@ Timeline::process_osc ( void )
c->process_osc();
}
}
unlock();
}

View File

@ -582,16 +582,16 @@ Track::remove ( Control_Sequence *t )
if ( ! control )
return;
engine->lock();
timeline->wrlock();
timeline->osc_thread->lock();
engine->lock();
control->remove( t );
timeline->osc_thread->unlock();
engine->unlock();
timeline->unlock();
resize();
}