diff --git a/include/FluidSCWrapper.hpp b/include/FluidSCWrapper.hpp index 932ffb7..6838dce 100644 --- a/include/FluidSCWrapper.hpp +++ b/include/FluidSCWrapper.hpp @@ -151,7 +151,7 @@ class RealTime : public SCUnit Result countScan; Client::getParameterDescriptors().template iterate( - std::forward(mControlsIterator), + std::forward(mWrapper->mControlsIterator), std::forward(countScan)); return countScan; } @@ -191,7 +191,7 @@ public: "Client can't have both audio and control outputs"); Result r; - if(!(r = expectedSize(mControlsIterator)).ok()) + if(!(r = expectedSize(mWrapper->mControlsIterator)).ok()) { mCalcFunc = Wrapper::getInterfaceTable()->fClearUnitOutputs; std::cout @@ -202,7 +202,7 @@ public: return; } - mControlsIterator.reset(mInBuf + mSpecialIndex + 1); + mWrapper->mControlsIterator.reset(mInBuf + mSpecialIndex + 1); client.sampleRate(fullSampleRate()); mInputConnections.reserve(asUnsigned(client.audioChannelsIn())); @@ -267,6 +267,7 @@ private: std::vector mAudioInputs; std::vector mOutputs; FluidContext mContext; + Wrapper* mWrapper{static_cast(this)}; }; //////////////////////////////////////////////////////////////////////////////// @@ -353,7 +354,7 @@ public: { out0(0) = mDone ? 1.0f : static_cast(client().progress()); - index triggerInput = mInBuf[mNumInputs - mSpecialIndex - 2][0]; + index triggerInput = static_cast(mInBuf[static_cast(mNumInputs) - mSpecialIndex - 2][0]); bool trigger = (mPreviousTrigger <= 0) && triggerInput > 0; mPreviousTrigger = triggerInput; @@ -445,9 +446,8 @@ public: return static_cast(data)->tidyUp(world); } - /// Now we're actually properly done, call the UGen's done action (possibly - /// destroying this instance) - static void destroy(World* world, void* data) + /// if we're properly done set the Unit done flag + static void destroy(World*, void* data) { auto w = static_cast(data); w->mDone = w->mJobDone; @@ -517,7 +517,7 @@ private: index checkThreadInterval; index pollCounter{0}; index mPreviousTrigger{0}; -protected: + bool mSynchronous{true}; bool mQueueEnabled{false}; bool mCheckingForDone{false}; // only write to this from RT thread kthx