fixed some bugs
git-svn-id: https://lmms.svn.sf.net/svnroot/lmms/trunk/lmms@523 0778d3d1-df1d-0410-868b-ea421aaaa00d
This commit is contained in:
@@ -1,3 +1,11 @@
|
||||
2007-08-18 Tobias Doerffel <tobydox/at/users/dot/sourceforge/dot/net>
|
||||
|
||||
* src/core/mixer.cpp:
|
||||
remove play-handles *after* we played all play-handles
|
||||
|
||||
* src/tracks/instrument_track.cpp:
|
||||
fixed a bug in monophonic behaviour
|
||||
|
||||
2007-08-16 Tobias Doerffel <tobydox/at/users/dot/sourceforge/dot/net>
|
||||
|
||||
* include/instrument.h:
|
||||
|
||||
@@ -288,7 +288,7 @@ const surroundSampleFrame * mixer::renderNextBuffer( void )
|
||||
|
||||
// clear last audio-buffer
|
||||
clearAudioBuffer( m_writeBuf, m_framesPerPeriod );
|
||||
|
||||
printf("---------------------------next period\n");
|
||||
// if( criticalXRuns() == FALSE )
|
||||
{
|
||||
engine::getSongEditor()->processNextBuffer();
|
||||
@@ -320,24 +320,14 @@ const surroundSampleFrame * mixer::renderNextBuffer( void )
|
||||
}
|
||||
++idx;
|
||||
}
|
||||
idx = 0;
|
||||
while( idx < m_playHandles.size() )
|
||||
for( playHandleVector::iterator it =
|
||||
m_playHandles.begin();
|
||||
it != m_playHandles.end(); ++it )
|
||||
{
|
||||
playHandle * n = m_playHandles[idx];
|
||||
if( n->done() )
|
||||
if( !( *it )->done() &&
|
||||
!( *it )->supportsParallelizing() )
|
||||
{
|
||||
delete n;
|
||||
m_playHandles.erase(
|
||||
m_playHandles.begin() + idx );
|
||||
}
|
||||
else if( !n->supportsParallelizing() )
|
||||
{
|
||||
n->play();
|
||||
++idx;
|
||||
}
|
||||
else
|
||||
{
|
||||
++idx;
|
||||
( *it )->play();
|
||||
}
|
||||
}
|
||||
for( playHandleVector::iterator it = par_hndls.begin();
|
||||
@@ -348,23 +338,31 @@ const surroundSampleFrame * mixer::renderNextBuffer( void )
|
||||
}
|
||||
else
|
||||
{
|
||||
while( idx < m_playHandles.size() )
|
||||
for( playHandleVector::iterator it =
|
||||
m_playHandles.begin();
|
||||
it != m_playHandles.end(); ++it )
|
||||
{
|
||||
playHandle * n = m_playHandles[idx];
|
||||
// delete play-handle if it played completely
|
||||
if( n->done() )
|
||||
if( !( *it )->done() )
|
||||
{
|
||||
delete n;
|
||||
m_playHandles.erase(
|
||||
m_playHandles.begin() + idx );
|
||||
}
|
||||
else
|
||||
{
|
||||
n->play();
|
||||
++idx;
|
||||
( *it )->play();
|
||||
}
|
||||
}
|
||||
}
|
||||
idx = 0;
|
||||
while( idx < m_playHandles.size() )
|
||||
{
|
||||
playHandle * n = m_playHandles[idx];
|
||||
if( n->done() )
|
||||
{
|
||||
delete n;
|
||||
m_playHandles.erase(
|
||||
m_playHandles.begin() + idx );
|
||||
}
|
||||
else
|
||||
{
|
||||
++idx;
|
||||
}
|
||||
}
|
||||
unlockPlayHandles();
|
||||
|
||||
bool more_effects = FALSE;
|
||||
|
||||
@@ -799,10 +799,10 @@ void instrumentTrack::playNote( notePlayHandle * _n, bool _try_parallelizing )
|
||||
// in last period and have
|
||||
// to clear parts of it
|
||||
_n->noteOff();
|
||||
engine::getMixer()->clearAudioBuffer( m_audioPort->firstBuffer(),
|
||||
/* engine::getMixer()->clearAudioBuffer( m_audioPort->firstBuffer(),
|
||||
engine::getMixer()->framesPerPeriod() -
|
||||
( *youngest_note )->offset(),
|
||||
( *youngest_note )->offset() );
|
||||
( *youngest_note )->offset() );*/
|
||||
return;
|
||||
}
|
||||
}
|
||||
@@ -811,7 +811,7 @@ void instrumentTrack::playNote( notePlayHandle * _n, bool _try_parallelizing )
|
||||
else if( *youngest_note != _n &&
|
||||
_n->released() )
|
||||
{
|
||||
return;
|
||||
//return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user