From kde-commits Thu Jul 31 22:20:00 2003 From: George Staikos Date: Thu, 31 Jul 2003 22:20:00 +0000 To: kde-commits Subject: ARTS_1_1_BRANCH: arts/flow X-MARC-Message: https://marc.info/?l=kde-commits&m=105969040626386 CVS commit by staikos: backport cpu usage fix M +26 -1 stereovolumecontrol_impl.cc 1.7.6.2 --- arts/flow/stereovolumecontrol_impl.cc #1.7.6.1:1.7.6.2 @@ -24,4 +24,6 @@ #include "artsflow.h" #include "stdsynthmodule.h" +#include "flowsystem.h" +#include using namespace Arts; @@ -35,7 +37,8 @@ class StereoVolumeControl_impl : virtual float _currentVolumeLeft; float _currentVolumeRight; + bool _virtualized; public: StereoVolumeControl_impl() :_scaleFactor(1.0), _currentVolumeLeft(0.0), - _currentVolumeRight(0.0) + _currentVolumeRight(0.0), _virtualized( false ) { // @@ -59,4 +62,18 @@ public: float currentVolumeRight() { return _currentVolumeRight; } + void virtualize() + { + arts_debug( "virtualize StereoVolumeControl" ); + _virtualized = true; + _node()->virtualize( "inleft", _node(), "outleft" ); + _node()->virtualize( "inright", _node(), "outright" ); + } + void devirtualize() + { + arts_debug( "devirtualize StereoVolumeControl" ); + _virtualized = false; + _node()->devirtualize( "inleft", _node(), "outleft" ); + _node()->devirtualize( "inright", _node(), "outright" ); + } /* in audio stream inleft, inright; @@ -65,4 +82,12 @@ public: void calculateBlock(unsigned long samples) { + if( _refCnt == 1 && _scaleFactor == 1.0 ) + { + if( !_virtualized ) + virtualize(); + return; + } + else if( _virtualized ) + devirtualize(); unsigned long i;