further fixes for monophonic instruments

git-svn-id: https://lmms.svn.sf.net/svnroot/lmms/trunk/lmms@510 0778d3d1-df1d-0410-868b-ea421aaaa00d
This commit is contained in:
Tobias Doerffel
2007-08-04 13:30:37 +00:00
parent 20f66eb8e3
commit be3a1e589d
2 changed files with 14 additions and 8 deletions

View File

@@ -1,5 +1,8 @@
2007-08-04 Tobias Doerffel <tobydox/at/users/dot/sourceforge/dot/net>
* src/widget/visualization_widget.cpp:
proper visualization even with period-sizes < 128
* plugins/audio_file_processor/audio_file_processor.cpp:
* plugins/bit_invader/bit_invader.cpp:
* plugins/kicker/kicker.cpp:
@@ -14,10 +17,13 @@
patch below
* src/tracks/instrument_track.cpp:
acquire play-handle-lock of mixer while calling noteOff() in
instrumentTrack::processInEvent( ... ) - fixes asynchronously
modifications of variables in notePlayHandle which led to segfaults in
some cases
- acquire mixer-lock while calling noteOff() in
instrumentTrack::processInEvent( ... ) - fixes asynchronously
modifications of variables in notePlayHandle which led to segfaults in
some cases
- when encountering old running notes on monophonic instruments only
clear the part of the audio-port-buffer where the new note will be
mixed in
2007-08-03 Tobias Doerffel <tobydox/at/users/dot/sourceforge/dot/net>

View File

@@ -794,12 +794,12 @@ void instrumentTrack::playNote( notePlayHandle * _n, bool _try_parallelizing )
// then the current note we
// already played everything
// in last period and have
// to clear it
// to clear parts of it
_n->noteOff();
engine::getMixer()->clearAudioBuffer( m_audioPort->firstBuffer(),
engine::getMixer()->framesPerPeriod() );
engine::getMixer()->clearAudioBuffer( m_audioPort->secondBuffer(),
engine::getMixer()->framesPerPeriod() );
engine::getMixer()->framesPerPeriod() -
( *youngest_note )->offset(),
( *youngest_note )->offset() );
return;
}
}