@@ -187,6 +187,9 @@ void ofxVisualProgramming::update(){
187187
188188 // update patch objects
189189 if (!bLoadingNewPatch && !patchObjects.empty ()){
190+
191+ std::lock_guard<std::mutex> lck (vp_mutex);
192+
190193 // left to right computing order
191194 leftToRightIndexOrder.clear ();
192195 for (map<int ,shared_ptr<PatchObject>>::iterator it = patchObjects.begin (); it != patchObjects.end (); it++ ){
@@ -202,7 +205,9 @@ void ofxVisualProgramming::update(){
202205 pt[i].color = profiler.cpuGraph .colors [static_cast <unsigned int >(i%16 )];
203206 pt[i].startTime = ofGetElapsedTimef ();
204207 pt[i].name = patchObjects[leftToRightIndexOrder[i].second ]->getName ()+ofToString (patchObjects[leftToRightIndexOrder[i].second ]->getId ())+" _update" ;
208+
205209 patchObjects[leftToRightIndexOrder[i].second ]->update (patchObjects,*engine);
210+
206211 pt[i].endTime = ofGetElapsedTimef ();
207212
208213 // update scripts objects files map
@@ -546,33 +551,27 @@ void ofxVisualProgramming::keyReleased(ofKeyEventArgs &e){
546551void ofxVisualProgramming::audioProcess (float *input, int bufferSize, int nChannels){
547552
548553 if (bLoadingNewPatch) return ;
554+ if (bLoadingNewObject) return ;
549555
550556 if (audioSampleRate != 0 && dspON){
551557
552- if (!bLoadingNewObject){
553- if (audioDevices[audioINDev].inputChannels > 0 ){
554- inputBuffer.copyFrom (input, bufferSize, nChannels, audioSampleRate);
555-
556- // compute audio input
557- if (!bLoadingNewPatch){
558- for (map<int ,shared_ptr<PatchObject>>::iterator it = patchObjects.begin (); it != patchObjects.end (); it++ ){
559- it->second ->audioIn (inputBuffer);
560- }
561- }
558+ std::lock_guard<std::mutex> lck (vp_mutex);
562559
560+ if (audioDevices[audioINDev].inputChannels > 0 ){
561+ inputBuffer.copyFrom (input, bufferSize, nChannels, audioSampleRate);
563562
564- unique_lock<std::mutex> lock (inputAudioMutex);
565- lastInputBuffer = inputBuffer;
566- }
567- if (audioDevices[audioOUTDev].outputChannels > 0 ){
568- // compute audio output
569- if (!bLoadingNewPatch){
570- for (map<int ,shared_ptr<PatchObject>>::iterator it = patchObjects.begin (); it != patchObjects.end (); it++ ){
571- it->second ->audioOut (emptyBuffer);
572- }
573- }
563+ // compute audio input
564+ for (map<int ,shared_ptr<PatchObject>>::iterator it = patchObjects.begin (); it != patchObjects.end (); it++ ){
565+ it->second ->audioIn (inputBuffer);
574566 }
575567
568+ lastInputBuffer = inputBuffer;
569+ }
570+ if (audioDevices[audioOUTDev].outputChannels > 0 ){
571+ // compute audio output
572+ for (map<int ,shared_ptr<PatchObject>>::iterator it = patchObjects.begin (); it != patchObjects.end (); it++ ){
573+ it->second ->audioOut (emptyBuffer);
574+ }
576575 }
577576
578577 }
0 commit comments