diff --git a/include/SampleTrack.h b/include/SampleTrack.h index 25841486c..6d39ed355 100644 --- a/include/SampleTrack.h +++ b/include/SampleTrack.h @@ -153,6 +153,7 @@ public: public slots: void updateTcos(); + void setPlayingTcos( bool isPlaying ); private: FloatModel m_volumeModel; diff --git a/src/tracks/SampleTrack.cpp b/src/tracks/SampleTrack.cpp index 8624497d4..45f587607 100644 --- a/src/tracks/SampleTrack.cpp +++ b/src/tracks/SampleTrack.cpp @@ -166,7 +166,8 @@ void SampleTCO::toggleRecord() void SampleTCO::playbackPositionChanged() { Engine::mixer()->removePlayHandlesOfTypes( getTrack(), PlayHandle::TypeSamplePlayHandle ); - m_isPlaying = false; + SampleTrack * st = dynamic_cast( getTrack() ); + st->setPlayingTcos( false ); } @@ -707,12 +708,21 @@ void SampleTrack::loadTrackSpecificSettings( const QDomElement & _this ) void SampleTrack::updateTcos() +{ + Engine::mixer()->removePlayHandlesOfTypes( this, PlayHandle::TypeSamplePlayHandle ); + setPlayingTcos( false ); +} + + + + +void SampleTrack::setPlayingTcos( bool isPlaying ) { for( int i = 0; i < numOfTCOs(); ++i ) { TrackContentObject * tco = getTCO( i ); SampleTCO * sTco = dynamic_cast( tco ); - sTco->playbackPositionChanged(); + sTco->setIsPlaying( isPlaying ); } }