diff --git a/CHANGES b/CHANGES index 8f8274fa..59ebb0c1 100644 --- a/CHANGES +++ b/CHANGES @@ -1,3 +1,8 @@ +v.11.2.0 (05 April 2024) + - Updated fast_any submodule (incl. README update). + - Renamed _ReleaseNextThread() to _ReleaseNextBuffer(). + - Post-fixed all non-series entities with "Parallel". + v.11.1.3 (30 March 2024) - Added componentsMap reserve() in Circuit::_Optimize(). - Slightly optimized Component::ConnectInput(). diff --git a/docs/Doxyfile b/docs/Doxyfile index 09c59fe4..5acb5819 100644 --- a/docs/Doxyfile +++ b/docs/Doxyfile @@ -32,7 +32,7 @@ PROJECT_NAME = DSPatch # This could be handy for archiving the generated documentation or # if some version control system is used. -PROJECT_NUMBER = v.11.1.3 +PROJECT_NUMBER = v.11.2.0 # Using the PROJECT_BRIEF tag one can provide an optional one line description # for a project that appears at the top of each page and should give viewer diff --git a/docs/html/_circuit_8h_source.html b/docs/html/_circuit_8h_source.html index 301d0f79..3e56450b 100644 --- a/docs/html/_circuit_8h_source.html +++ b/docs/html/_circuit_8h_source.html @@ -22,7 +22,7 @@ Logo -
DSPatch v.11.1.3 +
DSPatch v.11.2.0
@@ -346,152 +346,152 @@
291 {
292 // You might be thinking: Can't we have each thread start on a different component?
293
-
294 // Well no. Because bufferNo == bufferNo, in order to maintain synchronisation
-
295 // within the circuit, when a component wants to process its buffers in-order, it
-
296 // requires that every other in-order component in the system has not only
-
297 // processed its buffers in the same order, but has processed the same number of
-
298 // buffers too.
-
299
-
300 // E.g. 1,2,3 and 1,2,3. Not 1,2,3 and 2,3,1,2,3.
-
301
-
302 for ( auto component : *_components )
-
303 {
-
304 component->TickSeries( _bufferNo );
-
305 }
-
306 }
-
307 }
-
308 }
-
309 }
-
310
-
311 std::thread _thread;
-
312 std::vector<DSPatch::Component*>* _components = nullptr;
-
313 int _bufferNo = 0;
-
314 bool _stop = false;
-
315 bool _gotSync = false;
-
316 std::mutex _syncMutex;
-
317 std::condition_variable _resumeCondt, _syncCondt;
-
318 };
-
319
-
320 class ParallelCircuitThread final
-
321 {
-
322 public:
-
323 ParallelCircuitThread( const ParallelCircuitThread& ) = delete;
-
324 ParallelCircuitThread& operator=( const ParallelCircuitThread& ) = delete;
-
325
-
326 inline ParallelCircuitThread() = default;
-
327
-
328 // cppcheck-suppress missingMemberCopy
-
329 inline ParallelCircuitThread( ParallelCircuitThread&& )
-
330 {
-
331 }
-
332
-
333 inline ~ParallelCircuitThread()
-
334 {
-
335 Stop();
-
336 }
-
337
-
338 inline void Start( std::vector<DSPatch::Component*>* components, int bufferNo, int threadNo, int threadCount )
-
339 {
-
340 _components = components;
-
341 _bufferNo = bufferNo;
-
342 _threadNo = threadNo;
-
343 _threadCount = threadCount;
-
344
-
345 _stop = false;
-
346 _gotSync = false;
-
347
-
348 _thread = std::thread( &ParallelCircuitThread::_Run, this );
-
349 }
-
350
-
351 inline void Stop()
-
352 {
-
353 _stop = true;
-
354
-
355 Resume();
-
356
-
357 if ( _thread.joinable() )
-
358 {
-
359 _thread.join();
-
360 }
-
361 }
-
362
-
363 inline void Sync()
-
364 {
-
365 std::unique_lock<std::mutex> lock( _syncMutex );
-
366
-
367 if ( !_gotSync ) // if haven't already got sync
-
368 {
-
369 _syncCondt.wait( lock ); // wait for sync
-
370 }
-
371 }
-
372
-
373 inline void Resume()
-
374 {
-
375 _gotSync = false; // reset the sync flag
-
376 _resumeCondt.notify_all();
-
377 std::this_thread::yield();
-
378 }
-
379
-
380 private:
-
381 inline void _Run()
-
382 {
-
383#ifdef _WIN32
-
384 SetThreadPriority( GetCurrentThread(), THREAD_PRIORITY_HIGHEST );
-
385#else
-
386 sched_param sch_params;
-
387 sch_params.sched_priority = sched_get_priority_max( SCHED_RR );
-
388 pthread_setschedparam( pthread_self(), SCHED_RR, &sch_params );
-
389#endif
-
390
-
391 if ( _components )
-
392 {
-
393 while ( !_stop )
-
394 {
-
395 {
-
396 std::unique_lock<std::mutex> lock( _syncMutex );
-
397
-
398 _gotSync = true; // set the sync flag
-
399 _syncCondt.notify_all();
-
400 _resumeCondt.wait( lock ); // wait for resume
-
401 }
-
402
-
403 // cppcheck-suppress knownConditionTrueFalse
-
404 if ( !_stop )
-
405 {
-
406 for ( auto it = _components->begin() + _threadNo; it < _components->end(); it += _threadCount )
-
407 {
-
408 ( *it )->TickParallel( _bufferNo );
-
409 }
-
410 }
-
411 }
-
412 }
-
413 }
-
414
-
415 std::thread _thread;
-
416 std::vector<DSPatch::Component*>* _components = nullptr;
-
417 int _bufferNo = 0;
-
418 int _threadNo = 0;
-
419 int _threadCount = 0;
-
420 bool _stop = false;
-
421 bool _gotSync = false;
-
422 std::mutex _syncMutex;
-
423 std::condition_variable _resumeCondt, _syncCondt;
-
424 };
-
425
-
426 void _Optimize();
-
427
-
428 int _bufferCount = 0;
-
429 int _threadCount = 0;
-
430 int _currentBuffer = 0;
-
431
-
432 AutoTickThread _autoTickThread;
-
433
-
434 std::vector<DSPatch::Component*> _components;
-
435 std::set<DSPatch::Component::SPtr> _componentsSet;
+
294 // Well no. In order to maintain synchronisation within the circuit, when a component
+
295 // wants to process its buffers in-order, it requires that every other in-order
+
296 // component in the system has not only processed its buffers in the same order, but
+
297 // has processed the same number of buffers too.
+
298
+
299 // E.g. 1,2,3 and 1,2,3. Not 1,2,3 and 2,3,1,2,3.
+
300
+
301 for ( auto component : *_components )
+
302 {
+
303 component->Tick( _bufferNo );
+
304 }
+
305 }
+
306 }
+
307 }
+
308 }
+
309
+
310 std::thread _thread;
+
311 std::vector<DSPatch::Component*>* _components = nullptr;
+
312 int _bufferNo = 0;
+
313 bool _stop = false;
+
314 bool _gotSync = false;
+
315 std::mutex _syncMutex;
+
316 std::condition_variable _resumeCondt, _syncCondt;
+
317 };
+
318
+
319 class CircuitThreadParallel final
+
320 {
+
321 public:
+
322 CircuitThreadParallel( const CircuitThreadParallel& ) = delete;
+
323 CircuitThreadParallel& operator=( const CircuitThreadParallel& ) = delete;
+
324
+
325 inline CircuitThreadParallel() = default;
+
326
+
327 // cppcheck-suppress missingMemberCopy
+
328 inline CircuitThreadParallel( CircuitThreadParallel&& )
+
329 {
+
330 }
+
331
+
332 inline ~CircuitThreadParallel()
+
333 {
+
334 Stop();
+
335 }
+
336
+
337 inline void Start( std::vector<DSPatch::Component*>* components, int bufferNo, int threadNo, int threadCount )
+
338 {
+
339 _components = components;
+
340 _bufferNo = bufferNo;
+
341 _threadNo = threadNo;
+
342 _threadCount = threadCount;
+
343
+
344 _stop = false;
+
345 _gotSync = false;
+
346
+
347 _thread = std::thread( &CircuitThreadParallel::_Run, this );
+
348 }
+
349
+
350 inline void Stop()
+
351 {
+
352 _stop = true;
+
353
+
354 Resume();
+
355
+
356 if ( _thread.joinable() )
+
357 {
+
358 _thread.join();
+
359 }
+
360 }
+
361
+
362 inline void Sync()
+
363 {
+
364 std::unique_lock<std::mutex> lock( _syncMutex );
+
365
+
366 if ( !_gotSync ) // if haven't already got sync
+
367 {
+
368 _syncCondt.wait( lock ); // wait for sync
+
369 }
+
370 }
+
371
+
372 inline void Resume()
+
373 {
+
374 _gotSync = false; // reset the sync flag
+
375 _resumeCondt.notify_all();
+
376 std::this_thread::yield();
+
377 }
+
378
+
379 private:
+
380 inline void _Run()
+
381 {
+
382#ifdef _WIN32
+
383 SetThreadPriority( GetCurrentThread(), THREAD_PRIORITY_HIGHEST );
+
384#else
+
385 sched_param sch_params;
+
386 sch_params.sched_priority = sched_get_priority_max( SCHED_RR );
+
387 pthread_setschedparam( pthread_self(), SCHED_RR, &sch_params );
+
388#endif
+
389
+
390 if ( _components )
+
391 {
+
392 while ( !_stop )
+
393 {
+
394 {
+
395 std::unique_lock<std::mutex> lock( _syncMutex );
+
396
+
397 _gotSync = true; // set the sync flag
+
398 _syncCondt.notify_all();
+
399 _resumeCondt.wait( lock ); // wait for resume
+
400 }
+
401
+
402 // cppcheck-suppress knownConditionTrueFalse
+
403 if ( !_stop )
+
404 {
+
405 for ( auto it = _components->begin() + _threadNo; it < _components->end(); it += _threadCount )
+
406 {
+
407 ( *it )->TickParallel( _bufferNo );
+
408 }
+
409 }
+
410 }
+
411 }
+
412 }
+
413
+
414 std::thread _thread;
+
415 std::vector<DSPatch::Component*>* _components = nullptr;
+
416 int _bufferNo = 0;
+
417 int _threadNo = 0;
+
418 int _threadCount = 0;
+
419 bool _stop = false;
+
420 bool _gotSync = false;
+
421 std::mutex _syncMutex;
+
422 std::condition_variable _resumeCondt, _syncCondt;
+
423 };
+
424
+
425 void _Optimize();
+
426
+
427 int _bufferCount = 0;
+
428 int _threadCount = 0;
+
429 int _currentBuffer = 0;
+
430
+
431 AutoTickThread _autoTickThread;
+
432
+
433 std::set<DSPatch::Component::SPtr> _componentsSet;
+
434
+
435 std::vector<DSPatch::Component*> _components;
436 std::vector<DSPatch::Component*> _componentsParallel;
437
438 std::vector<CircuitThread> _circuitThreads;
-
439 std::vector<std::vector<ParallelCircuitThread>> _parallelCircuitThreads;
+
439 std::vector<std::vector<CircuitThreadParallel>> _circuitThreadsParallel;
440
441 bool _circuitDirty = false;
442};
@@ -689,7 +689,7 @@
634 _threadCount = threadCount;
635
636 // stop all threads
-
637 for ( auto& circuitThreads : _parallelCircuitThreads )
+
637 for ( auto& circuitThreads : _circuitThreadsParallel )
638 {
639 for ( auto& circuitThread : circuitThreads )
640 {
@@ -700,20 +700,20 @@
645 // resize thread array
646 if ( _threadCount == 0 )
647 {
-
648 _parallelCircuitThreads.resize( 0 );
+
648 _circuitThreadsParallel.resize( 0 );
649 SetBufferCount( _bufferCount );
650 }
651 else
652 {
-
653 _parallelCircuitThreads.resize( _bufferCount == 0 ? 1 : _bufferCount );
-
654 for ( auto& circuitThread : _parallelCircuitThreads )
+
653 _circuitThreadsParallel.resize( _bufferCount == 0 ? 1 : _bufferCount );
+
654 for ( auto& circuitThread : _circuitThreadsParallel )
655 {
656 circuitThread.resize( _threadCount );
657 }
658
659 // initialise and start all threads
660 int i = 0;
-
661 for ( auto& circuitThreads : _parallelCircuitThreads )
+
661 for ( auto& circuitThreads : _circuitThreadsParallel )
662 {
663 int j = 0;
664 for ( auto& circuitThread : circuitThreads )
@@ -747,7 +747,7 @@
692 // tick all internal components
693 for ( auto component : _components )
694 {
-
695 component->TickSeries( 0 );
+
695 component->Tick( 0 );
696 }
697
698 return;
@@ -756,7 +756,7 @@
701 // =======================================================
702 else if ( _threadCount != 0 )
703 {
-
704 auto& circuitThreads = _parallelCircuitThreads[_currentBuffer];
+
704 auto& circuitThreads = _circuitThreadsParallel[_currentBuffer];
705
706 for ( auto& circuitThread : circuitThreads )
707 {
@@ -785,7 +785,7 @@
730 {
731 circuitThread.Sync();
732 }
-
733 for ( auto& circuitThreads : _parallelCircuitThreads )
+
733 for ( auto& circuitThreads : _circuitThreadsParallel )
734 {
735 for ( auto& circuitThread : circuitThreads )
736 {
@@ -835,7 +835,7 @@
780
781 for ( auto component : _components )
782 {
-
783 component->ScanSeries( orderedComponents );
+
783 component->Scan( orderedComponents );
784 }
785 for ( auto component : _components )
786 {
diff --git a/docs/html/_component_8h_source.html b/docs/html/_component_8h_source.html index f3b394a4..5f50df9e 100644 --- a/docs/html/_component_8h_source.html +++ b/docs/html/_component_8h_source.html @@ -22,7 +22,7 @@ Logo -
DSPatch v.11.1.3 +
DSPatch v.11.2.0
@@ -151,10 +151,10 @@
93 void SetBufferCount( int bufferCount, int startBuffer );
94 int GetBufferCount() const;
95
-
96 void TickSeries( int bufferNo );
+
96 void Tick( int bufferNo );
97 void TickParallel( int bufferNo );
98
-
99 void ScanSeries( std::vector<Component*>& components );
+
99 void Scan( std::vector<Component*>& components );
100 void ScanParallel( std::vector<std::vector<DSPatch::Component*>>& componentsMap, int& scanPosition );
101 void EndScan();
102
@@ -213,8 +213,8 @@
155 int toInput;
156 };
157
-
158 void _WaitForRelease( int threadNo );
-
159 void _ReleaseNextThread( int threadNo );
+
158 void _WaitForRelease( int bufferNo );
+
159 void _ReleaseNextBuffer( int bufferNo );
160
161 void _GetOutput( int bufferNo, int fromOutput, int toInput, DSPatch::SignalBus& toBus );
162 void _GetOutputParallel( int bufferNo, int fromOutput, int toInput, DSPatch::SignalBus& toBus );
@@ -414,7 +414,7 @@
356 return (int)_inputBuses.size();
357}
358
-
359inline void Component::TickSeries( int bufferNo )
+
359inline void Component::Tick( int bufferNo )
360{
361 auto& inputBus = _inputBuses[bufferNo];
362 auto& outputBus = _outputBuses[bufferNo];
@@ -440,7 +440,7 @@
382 Process_( inputBus, outputBus );
383
384 // signal that we're done processing
-
385 _ReleaseNextThread( bufferNo );
+
385 _ReleaseNextBuffer( bufferNo );
386 }
387 else
388 {
@@ -473,7 +473,7 @@
415 Process_( inputBus, outputBus );
416
417 // signal that we're done processing
-
418 _ReleaseNextThread( bufferNo );
+
418 _ReleaseNextBuffer( bufferNo );
419 }
420 else
421 {
@@ -492,7 +492,7 @@
434 }
435}
436
-
437inline void Component::ScanSeries( std::vector<Component*>& components )
+
437inline void Component::Scan( std::vector<Component*>& components )
438{
439 // continue only if this component has not already been scanned
440 if ( _scanPosition != -1 )
@@ -506,7 +506,7 @@
448 for ( const auto& wire : _inputWires )
449 {
450 // scan incoming components
-
451 wire.fromComponent->ScanSeries( components );
+
451 wire.fromComponent->Scan( components );
452 }
453
454 components.emplace_back( this );
@@ -577,20 +577,20 @@
519 }
520}
521
-
522inline void Component::_WaitForRelease( int threadNo )
+
522inline void Component::_WaitForRelease( int bufferNo )
523{
-
524 _releaseFlags[threadNo].WaitAndClear();
+
524 _releaseFlags[bufferNo].WaitAndClear();
525}
526
-
527inline void Component::_ReleaseNextThread( int threadNo )
+
527inline void Component::_ReleaseNextBuffer( int bufferNo )
528{
-
529 if ( ++threadNo == _bufferCount ) // we're actually releasing the next available thread
+
529 if ( ++bufferNo == _bufferCount ) // release the next available buffer
530 {
531 _releaseFlags[0].Set();
532 }
533 else
534 {
-
535 _releaseFlags[threadNo].Set();
+
535 _releaseFlags[bufferNo].Set();
536 }
537}
538
diff --git a/docs/html/_d_s_patch_8h_source.html b/docs/html/_d_s_patch_8h_source.html index 3a3b8091..61e5d7cc 100644 --- a/docs/html/_d_s_patch_8h_source.html +++ b/docs/html/_d_s_patch_8h_source.html @@ -22,7 +22,7 @@ Logo -
DSPatch v.11.1.3 +
DSPatch v.11.2.0
diff --git a/docs/html/_plugin_8h_source.html b/docs/html/_plugin_8h_source.html index acf75e42..4d8fa459 100644 --- a/docs/html/_plugin_8h_source.html +++ b/docs/html/_plugin_8h_source.html @@ -22,7 +22,7 @@ Logo -
DSPatch v.11.1.3 +
DSPatch v.11.2.0
diff --git a/docs/html/_signal_bus_8h_source.html b/docs/html/_signal_bus_8h_source.html index 344ed75c..b92570e6 100644 --- a/docs/html/_signal_bus_8h_source.html +++ b/docs/html/_signal_bus_8h_source.html @@ -22,7 +22,7 @@ Logo -
DSPatch v.11.1.3 +
DSPatch v.11.2.0
diff --git a/docs/html/annotated.html b/docs/html/annotated.html index 147d98ee..6637c2f1 100644 --- a/docs/html/annotated.html +++ b/docs/html/annotated.html @@ -22,7 +22,7 @@ Logo -
DSPatch v.11.1.3 +
DSPatch v.11.2.0
diff --git a/docs/html/class_d_s_patch_1_1_circuit-members.html b/docs/html/class_d_s_patch_1_1_circuit-members.html index 7625caa7..4062d8f1 100644 --- a/docs/html/class_d_s_patch_1_1_circuit-members.html +++ b/docs/html/class_d_s_patch_1_1_circuit-members.html @@ -22,7 +22,7 @@ Logo -
DSPatch v.11.1.3 +
DSPatch v.11.2.0
diff --git a/docs/html/class_d_s_patch_1_1_circuit.html b/docs/html/class_d_s_patch_1_1_circuit.html index b3c77b7e..2645e665 100644 --- a/docs/html/class_d_s_patch_1_1_circuit.html +++ b/docs/html/class_d_s_patch_1_1_circuit.html @@ -22,7 +22,7 @@ Logo -
DSPatch v.11.1.3 +
DSPatch v.11.2.0
diff --git a/docs/html/class_d_s_patch_1_1_component-members.html b/docs/html/class_d_s_patch_1_1_component-members.html index 35b87969..2867d0bc 100644 --- a/docs/html/class_d_s_patch_1_1_component-members.html +++ b/docs/html/class_d_s_patch_1_1_component-members.html @@ -22,7 +22,7 @@ Logo -
DSPatch v.11.1.3 +
DSPatch v.11.2.0
@@ -95,14 +95,14 @@ operator=(const Component &)=delete (defined in DSPatch::Component)DSPatch::Component Process_(SignalBus &, SignalBus &)=0 (defined in DSPatch::Component)DSPatch::Componentinlineprotectedpure virtual ProcessOrder enum name (defined in DSPatch::Component)DSPatch::Component - ScanParallel(std::vector< std::vector< DSPatch::Component * > > &componentsMap, int &scanPosition) (defined in DSPatch::Component)DSPatch::Componentinline - ScanSeries(std::vector< Component * > &components) (defined in DSPatch::Component)DSPatch::Componentinline + Scan(std::vector< Component * > &components) (defined in DSPatch::Component)DSPatch::Componentinline + ScanParallel(std::vector< std::vector< DSPatch::Component * > > &componentsMap, int &scanPosition) (defined in DSPatch::Component)DSPatch::Componentinline SetBufferCount(int bufferCount, int startBuffer) (defined in DSPatch::Component)DSPatch::Componentinline SetInputCount_(int inputCount, const std::vector< std::string > &inputNames={}) (defined in DSPatch::Component)DSPatch::Componentinlineprotected SetOutputCount_(int outputCount, const std::vector< std::string > &outputNames={}) (defined in DSPatch::Component)DSPatch::Componentinlineprotected SPtr typedef (defined in DSPatch::Component)DSPatch::Component - TickParallel(int bufferNo) (defined in DSPatch::Component)DSPatch::Componentinline - TickSeries(int bufferNo) (defined in DSPatch::Component)DSPatch::Componentinline + Tick(int bufferNo) (defined in DSPatch::Component)DSPatch::Componentinline + TickParallel(int bufferNo) (defined in DSPatch::Component)DSPatch::Componentinline ~Component() (defined in DSPatch::Component)DSPatch::Componentinlinevirtual
diff --git a/docs/html/class_d_s_patch_1_1_component.html b/docs/html/class_d_s_patch_1_1_component.html index 6d686b38..e7aaff88 100644 --- a/docs/html/class_d_s_patch_1_1_component.html +++ b/docs/html/class_d_s_patch_1_1_component.html @@ -22,7 +22,7 @@ Logo -
DSPatch v.11.1.3 +
DSPatch v.11.2.0
@@ -128,12 +128,12 @@   int GetBufferCount () const   -void TickSeries (int bufferNo) -  +void Tick (int bufferNo) +  void TickParallel (int bufferNo)   -void ScanSeries (std::vector< Component * > &components) -  +void Scan (std::vector< Component * > &components) +  void ScanParallel (std::vector< std::vector< DSPatch::Component * > > &componentsMap, int &scanPosition)   void EndScan () @@ -521,8 +521,8 @@

-

◆ ScanParallel()

+ +

◆ Scan()

- -

◆ ScanSeries()

+ +

◆ ScanParallel()

@@ -701,8 +701,8 @@

-

◆ TickParallel()

+ +

◆ Tick()

@@ -711,7 +711,7 @@

- + @@ -725,12 +725,12 @@

-

Definition at line 394 of file Component.h.

+

Definition at line 359 of file Component.h.

- -

◆ TickSeries()

+ +

◆ TickParallel()

@@ -739,7 +739,7 @@

void DSPatch::Component::TickParallel void DSPatch::Component::Tick ( int  bufferNo)
- + @@ -753,7 +753,7 @@

-

Definition at line 359 of file Component.h.

+

Definition at line 394 of file Component.h.

diff --git a/docs/html/class_d_s_patch_1_1_plugin-members.html b/docs/html/class_d_s_patch_1_1_plugin-members.html index 93de3e66..00fe85e1 100644 --- a/docs/html/class_d_s_patch_1_1_plugin-members.html +++ b/docs/html/class_d_s_patch_1_1_plugin-members.html @@ -22,7 +22,7 @@

diff --git a/docs/html/class_d_s_patch_1_1_plugin.html b/docs/html/class_d_s_patch_1_1_plugin.html index 26554272..86d3ce67 100644 --- a/docs/html/class_d_s_patch_1_1_plugin.html +++ b/docs/html/class_d_s_patch_1_1_plugin.html @@ -22,7 +22,7 @@ diff --git a/docs/html/class_d_s_patch_1_1_signal_bus-members.html b/docs/html/class_d_s_patch_1_1_signal_bus-members.html index 2b03e9fd..9e578694 100644 --- a/docs/html/class_d_s_patch_1_1_signal_bus-members.html +++ b/docs/html/class_d_s_patch_1_1_signal_bus-members.html @@ -22,7 +22,7 @@ diff --git a/docs/html/class_d_s_patch_1_1_signal_bus.html b/docs/html/class_d_s_patch_1_1_signal_bus.html index 21f5c02e..dc1a8f90 100644 --- a/docs/html/class_d_s_patch_1_1_signal_bus.html +++ b/docs/html/class_d_s_patch_1_1_signal_bus.html @@ -22,7 +22,7 @@ diff --git a/docs/html/classes.html b/docs/html/classes.html index a6cf3073..4858a542 100644 --- a/docs/html/classes.html +++ b/docs/html/classes.html @@ -22,7 +22,7 @@ diff --git a/docs/html/dir_96ae4afe4ae1b3c2e5b248f6fc6b60cd.html b/docs/html/dir_96ae4afe4ae1b3c2e5b248f6fc6b60cd.html index 9116d05b..9e96bcc7 100644 --- a/docs/html/dir_96ae4afe4ae1b3c2e5b248f6fc6b60cd.html +++ b/docs/html/dir_96ae4afe4ae1b3c2e5b248f6fc6b60cd.html @@ -22,7 +22,7 @@ diff --git a/docs/html/dir_d44c64559bbebec7f509842c48db8b23.html b/docs/html/dir_d44c64559bbebec7f509842c48db8b23.html index 817ca901..e2efed75 100644 --- a/docs/html/dir_d44c64559bbebec7f509842c48db8b23.html +++ b/docs/html/dir_d44c64559bbebec7f509842c48db8b23.html @@ -22,7 +22,7 @@ diff --git a/docs/html/files.html b/docs/html/files.html index c570474d..a7e41a6d 100644 --- a/docs/html/files.html +++ b/docs/html/files.html @@ -22,7 +22,7 @@ diff --git a/docs/html/index.html b/docs/html/index.html index cdfd1665..4883d050 100644 --- a/docs/html/index.html +++ b/docs/html/index.html @@ -22,7 +22,7 @@ diff --git a/include/fast_any b/include/fast_any index 252529d3..c518f94c 160000 --- a/include/fast_any +++ b/include/fast_any @@ -1 +1 @@ -Subproject commit 252529d39cd3b2694cc684144dde93511052dd7c +Subproject commit c518f94c82115f47b11ff34d00cf39ffbdc1a082
void DSPatch::Component::TickSeries void DSPatch::Component::TickParallel ( int  bufferNo)
-
DSPatch v.11.1.3 +
DSPatch v.11.2.0
-
DSPatch v.11.1.3 +
DSPatch v.11.2.0
-
DSPatch v.11.1.3 +
DSPatch v.11.2.0
-
DSPatch v.11.1.3 +
DSPatch v.11.2.0
-
DSPatch v.11.1.3 +
DSPatch v.11.2.0
-
DSPatch v.11.1.3 +
DSPatch v.11.2.0
-
DSPatch v.11.1.3 +
DSPatch v.11.2.0
-
DSPatch v.11.1.3 +
DSPatch v.11.2.0
-
DSPatch v.11.1.3 +
DSPatch v.11.2.0