made controls have a track to allow automation of LADSPA-controls, compare out_sum against getGate()+0.0001f as getGate() might be 0 while out_sum in many cases never will reach 0,0...0 again - fixes high CPU-usage even after stop playing

git-svn-id: https://lmms.svn.sf.net/svnroot/lmms/trunk/lmms@817 0778d3d1-df1d-0410-868b-ea421aaaa00d
This commit is contained in:
Tobias Doerffel
2008-03-30 20:20:32 +00:00
parent 476983d986
commit ef5362909f
3 changed files with 39 additions and 7 deletions

View File

@@ -1,4 +1,28 @@
2008-03-24 Paul Giblock <drfaygo/at/gmail/dot/com>
2008-03-30 Tobias Doerffel <tobydox/at/users/dot/sourceforge/dot/net>
* include/effect_chain.h:
* plugins/ladspa_effect/ladspa_effect.cpp:
- made controls have a track to allow automation of LADSPA-controls
- compare out_sum against getGate()+0.0001f as getGate() might be 0
while out_sum in many cases never will reach 0,0...0 again - fixes
high CPU-usage even after stop playing
* include/automatable_button.h:
* src/widgets/automatable_button.cpp:
on model-change, ensure QPushButton's state is correct
* src/widgets/effect_rack_view.cpp:
properly handle changed models
* src/tracks/instrument_track.cpp:
when model has changed, also set new model for effect-view
* src/core/effect_chain.cpp:
- use track as parent
- correct initialization of m_enabledModel which fixes crashes on
model-updates
2008-03-30 Paul Giblock <drfaygo/at/gmail/dot/com>
* plugins/sf2_player/sf2_player.cpp:
* plugins/sf2_player/sf2_player.h:

View File

@@ -54,6 +54,11 @@ public:
void clear( void );
track * getTrack( void )
{
return( m_track );
}
private:
typedef QVector<effect *> effectList;

View File

@@ -33,6 +33,7 @@
#include "ladspa_control.h"
#include "ladspa_subplugin_features.h"
#include "mixer.h"
#include "effect_chain.h"
#undef SINGLE_SOURCE_COMPILE
@@ -292,8 +293,10 @@ ladspaEffect::ladspaEffect( model * _parent,
{
manager->activate( m_key, m_handles[proc] );
}
m_controls = new ladspaControls( this, NULL /* TODO!! */ );
track * t = dynamic_cast<effectChain *>( _parent ) ?
dynamic_cast<effectChain *>( _parent )->getTrack() :
NULL;
m_controls = new ladspaControls( this, t );
}
@@ -332,7 +335,7 @@ bool FASTCALL ladspaEffect::processAudioBuffer( surroundSampleFrame * _buf,
{
return( FALSE );
}
// Copy the LMMS audio buffer to the LADSPA input buffer and initialize
// the control ports. Need to change this to handle non-in-place-broken
// plugins--would speed things up to use the same buffer for both
@@ -433,10 +436,10 @@ bool FASTCALL ladspaEffect::processAudioBuffer( surroundSampleFrame * _buf,
}
}
}
// Check whether we need to continue processing input. Restart the
// counter if the threshold has been exceeded.
if( out_sum <= getGate() )
if( out_sum <= getGate()+0.0001f )
{
incrementBufferCount();
if( getBufferCount() > getTimeout() )
@@ -449,7 +452,7 @@ bool FASTCALL ladspaEffect::processAudioBuffer( surroundSampleFrame * _buf,
{
resetBufferCount();
}
return( isRunning() );
}