Timeline: Fix segfault in control sequence playback

Closes #173
This commit is contained in:
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

@ -86,7 +86,11 @@ Control_Sequence::play ( sample_t *buf, nframes_t frame, nframes_t nframes )
float v = y1 + start * incr;
for ( nframes_t i = start; i < len && n--; ++i, v += incr )
if ( ! n )
/* buffer's full, no point in continuing */
break;
for ( nframes_t i = start; i < len && n && n--; ++i, v += incr )
*(buf++) = v;
}

View File

@ -2208,9 +2208,8 @@ 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 );
@ -2218,6 +2217,6 @@ Timeline::process_osc ( void )
t->process_osc();
}
/* unlock(); */
sequence_lock.unlock();
}