diff --git a/src/looperclip.cxx b/src/looperclip.cxx index f0cc4b3..f72825e 100644 --- a/src/looperclip.cxx +++ b/src/looperclip.cxx @@ -314,26 +314,34 @@ bool LooperClip::somethingQueued() return false; } -void LooperClip::queuePlay(bool qP) +void LooperClip::queuePlay() { - _queuePlay = true; - _queueStop = false; - _queueRecord = false; + if (_loaded && !somethingQueued()) + { + _queuePlay = true; + _queueStop = false; + _queueRecord = false; + } } void LooperClip::queueStop() { - if ( _loaded ) { - _queueStop = true; - _queuePlay = false; + if (_loaded && _playing && !somethingQueued()) + { + _queuePlay = false; + _queueStop = true; + _queueRecord = false; } } void LooperClip::queueRecord() { - _queueRecord = true; - _queuePlay = false; - _queueStop = false; + if (!_loaded && !somethingQueued()) + { + _queuePlay = false; + _queueStop = false; + _queueRecord = true; + } } void LooperClip::setRecording() diff --git a/src/looperclip.hxx b/src/looperclip.hxx index 3e486bb..97fd5f4 100644 --- a/src/looperclip.hxx +++ b/src/looperclip.hxx @@ -84,14 +84,10 @@ public: size_t audioBufferSize(); /// set clip state - void queuePlay(bool=true); + void queuePlay(); void queueStop(); void queueRecord(); - void setPlaying(); - void setRecording(); - void setStopped(); - void resetQueues(); // removes all queued States bool somethingQueued(); // returns true if any state is queued @@ -142,6 +138,11 @@ private: void newBufferInTransit(bool n); bool newBufferInTransit(); unsigned long recordSpaceAvailable(); + + void setPlaying(); + void setRecording(); + void setStopped(); + void setEmpty(); }; #endif // LUPPP_LOOPER_CLIP_H