diff --git a/include/controller.h b/include/controller.h index d022c88be..7b13f25b2 100644 --- a/include/controller.h +++ b/include/controller.h @@ -74,11 +74,24 @@ public: m_sampleExact = _exact; } - ControllerTypes type( void ) const + inline ControllerTypes type( void ) const { return( m_type ); } + // return whether this controller updates models frequently - used for + // determining when to update GUI + inline bool frequentUpdates( void ) const + { + switch( m_type ) + { + case LfoController: return( TRUE ); + case PeakController: return( TRUE ); + default: + break; + } + return( FALSE ); + } virtual const QString & name( void ) const { diff --git a/src/gui/widgets/knob.cpp b/src/gui/widgets/knob.cpp index da9307838..653742e92 100644 --- a/src/gui/widgets/knob.cpp +++ b/src/gui/widgets/knob.cpp @@ -603,6 +603,8 @@ void knob::enterValue( void ) void knob::friendlyUpdate( void ) { if( model()->getControllerConnection() == NULL || + model()->getControllerConnection()->getController()-> + frequentUpdates() == FALSE || controller::runningFrames() % (256*4) == 0 ) { update();