Timeline: Fix segfault in control sequence playback

Closes #173
pull/186/head
Jonathan Moore Liles 2015-10-02 17:38:45 -07:00
parent fe51e322f3
commit cfe4aec158
2 changed files with 8 additions and 5 deletions

View File

@ -85,8 +85,12 @@ Control_Sequence::play ( sample_t *buf, nframes_t frame, nframes_t nframes )
incr = 0.0f;
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;
}

View File

@ -2208,16 +2208,15 @@ Timeline::process_osc ( void )
{
THREAD_ASSERT( OSC );
/* rdlock(); */
sequence_lock.rdlock();
/* reconnect OSC signals */
for ( int i = tracks->children(); i-- ; )
{
Track *t = (Track*)tracks->child( i );
t->process_osc();
}
/* unlock(); */
sequence_lock.unlock();
}