41 if ( processingType ==
"AudioSource" || processingType ==
"AudioBufferSource" )
43 mSources.push_back( &added );
48 mSources.push_back( &added);
53 mGenerators.push_back( &added);
56 if ( processingType ==
"AudioSink" || processingType ==
"AudioBufferSink" )
58 mSinks.push_back( &added );
61 mNormalProcessings.push_back ( &added );
68 if ( processingType ==
"AudioSource" || processingType ==
"AudioBufferSource" )
70 mSources.remove( &removed );
75 mSources.remove( &removed );
80 mGenerators.remove( &removed);
83 if ( processingType ==
"AudioSink" || processingType ==
"AudioBufferSink" )
85 mSinks.remove( &removed );
88 mNormalProcessings.remove ( &removed );
95 ProcessingList pendingSinks(mSinks);
96 for (ProcessingList::iterator it=mSources.begin(); it!=mSources.end(); it++ )
106 std::cerr <<
"Warning: some AudioSource was not able to consume incoming audio from the call-back.";
111 bool noProcessingRun =
true;
112 for (ProcessingList::iterator it=mNormalProcessings.begin(); it!=mNormalProcessings.end(); it++)
121 noProcessingRun =
false;
124 for (ProcessingList::iterator it=pendingSinks.begin(); it!=pendingSinks.end(); )
134 it = pendingSinks.erase(it);
135 noProcessingRun =
false;
137 if (noProcessingRun && !pendingSinks.empty())
139 for (ProcessingList::iterator it=mGenerators.begin(); it!=mGenerators.end(); it++)
148 noProcessingRun =
false;
152 if (noProcessingRun)
break;
154 if (!pendingSinks.empty())
155 std::cerr <<
"Warning: " << pendingSinks.size() <<
" sinks were not fed, so could not send audio to the callback." << std::endl;