@@ -85,8 +85,12 @@ Control_Sequence::play ( sample_t *buf, nframes_t frame, nframes_t nframes ) | |||||
incr = 0.0f; | incr = 0.0f; | ||||
float v = y1 + start * incr; | float v = y1 + start * incr; | ||||
if ( ! n ) | |||||
/* buffer's full, no point in continuing */ | |||||
break; | |||||
for ( nframes_t i = start; i < len && n--; ++i, v += incr ) | |||||
for ( nframes_t i = start; i < len && n && n--; ++i, v += incr ) | |||||
*(buf++) = v; | *(buf++) = v; | ||||
} | } | ||||
@@ -2208,16 +2208,15 @@ Timeline::process_osc ( void ) | |||||
{ | { | ||||
THREAD_ASSERT( OSC ); | THREAD_ASSERT( OSC ); | ||||
/* rdlock(); */ | |||||
sequence_lock.rdlock(); | |||||
/* reconnect OSC signals */ | |||||
for ( int i = tracks->children(); i-- ; ) | for ( int i = tracks->children(); i-- ; ) | ||||
{ | { | ||||
Track *t = (Track*)tracks->child( i ); | Track *t = (Track*)tracks->child( i ); | ||||
t->process_osc(); | t->process_osc(); | ||||
} | } | ||||
/* unlock(); */ | |||||
sequence_lock.unlock(); | |||||
} | } | ||||