diff --git a/src/steam/engine/buffer-provider.cpp b/src/steam/engine/buffer-provider.cpp index 7eef08c0e..8ebe9c9d3 100644 --- a/src/steam/engine/buffer-provider.cpp +++ b/src/steam/engine/buffer-provider.cpp @@ -251,6 +251,7 @@ namespace engine { bool BufferDescriptor::verifyValidity() const { + ENSURE (provider_); return provider_->verifyValidity(*this); } @@ -258,10 +259,27 @@ namespace engine { size_t BufferDescriptor::determineBufferSize() const { + ENSURE (provider_); return provider_->getBufferSize (*this); } + uint + BufferDescriptor::announce (uint count) + { + ENSURE (provider_); + return provider_->announce(count, *this); + } + + + BuffHandle + BufferDescriptor::lockBuffer() + { + ENSURE (provider_); + return provider_->lockBuffer(*this); + } + + void BuffHandle::emit() { diff --git a/src/steam/engine/buffhandle.hpp b/src/steam/engine/buffhandle.hpp index 27b1f467b..06a374615 100644 --- a/src/steam/engine/buffhandle.hpp +++ b/src/steam/engine/buffhandle.hpp @@ -103,6 +103,10 @@ namespace engine { size_t determineBufferSize() const; operator HashVal() const { return subClassification_; } + + /** convenience shortcut to start a buffer handling cycle */ + uint announce (uint count); + BuffHandle lockBuffer(); }; diff --git a/src/steam/engine/turnout.hpp b/src/steam/engine/turnout.hpp index c9dabde8f..9a8a5dbaa 100644 --- a/src/steam/engine/turnout.hpp +++ b/src/steam/engine/turnout.hpp @@ -76,7 +76,7 @@ //#include "lib/itertools.hpp" //#include "lib/util.hpp" -//#include +#include #include //#include @@ -84,7 +84,7 @@ namespace steam { namespace engine { - + using std::forward; /////////////////////////////////////////////////////////////////////////////////////////////////////////////TICKET #1367 : Rebuild the Node Invocation /** @@ -288,6 +288,7 @@ namespace engine { using lib::meta::_Fun; using lib::meta::is_BinaryFun; + using std::remove_reference_t; /** Helper to pick up the parameter dimensions from the processing function * @remark this is the rather simple yet common case that media processing @@ -303,8 +304,8 @@ namespace engine { static_assert(_Fun() , "something funktion-like required"); static_assert(is_BinaryFun() , "function with two arguments expected"); - using ArgI = typename _Fun::Args::List::Head; - using ArgO = typename _Fun::Args::List::Tail::Head; + using ArgI = remove_reference_t::Args::List::Head>; + using ArgO = remove_reference_t::Args::List::Tail::Head>; template struct MatchBuffArray @@ -361,18 +362,26 @@ namespace engine { ArrayI inParam; ArrayO outParam; + template + SimpleFunctionInvocationAdapter (INIT&& ...funSetup) + : FUN{forward (funSetup)...} + { } + void connect (uint fanIn, uint fanOut) { - REQUIRE (fanIn <= N and fanOut <= N); - UNIMPLEMENTED ("wire up all input/output buffers"); + REQUIRE (fanIn >= FAN_I and fanOut >= FAN_O); + for (uint i=0; i(); + for (uint i=0; i(); } void invoke() { - process(); + process (inParam, outParam); } }; @@ -430,19 +439,24 @@ namespace engine { } void - shed (Feed&) + shed (Feed& feed) + { + for (uint i=0; i - - - +

Argument-Storage @@ -1394,9 +1392,7 @@ - - - +

brauche dedizierten Dispatcher @@ -1430,9 +1426,7 @@ - - - +

kann mich so vague erinnern @@ -1528,9 +1522,7 @@ - - - +

wenn die Queue voll ist @@ -1613,9 +1605,7 @@ - - - +

das ist schon die endgültige Lösung @@ -2312,9 +2302,7 @@ - - - +

ca 2014 finde ich einige Blog-Einträge, daß jetzt keine Theming-Engine mehr notwendig ist, @@ -3254,9 +3242,7 @@ - - - +

das System ist ohnehin schon angetötet @@ -4623,9 +4609,7 @@ - - - +

grundlegende Design-Enscheidung @@ -6050,9 +6034,7 @@ - - - +

#1168 : find a way to manage style of @@ -7800,9 +7782,7 @@ - - - +

oder den Spot verschieben @@ -86693,8 +86673,9 @@ Date:   Thu Apr 20 18:53:17 2023 +0200
- + + @@ -86804,6 +86785,17 @@ Date:   Thu Apr 20 18:53:17 2023 +0200
+ + + + +

+ diese Infos müssen bereitstehen ⟶ jeweils zum Aufbau  einer neuen Invocation +

+ +
+ +
@@ -86954,7 +86946,12 @@ Date:   Thu Apr 20 18:53:17 2023 +0200
- + + + + + + @@ -87773,8 +87770,9 @@ Date:   Thu Apr 20 18:53:17 2023 +0200
- + + @@ -87813,7 +87811,16 @@ Date:   Thu Apr 20 18:53:17 2023 +0200
- + + + + +

+ fange also nur mit einem BufferDescriptor-Array an +

+ +
+ @@ -88016,6 +88023,98 @@ Date:   Thu Apr 20 18:53:17 2023 +0200
+ + + + + + + + +
+ + + + + + + + + + + + + + + + + +

+ der zentrale Test verifyStandardCase() ist auskommentiert,  da er sich auf die BufferTable abstützt — und mit deren Implementierung bin ich seinerzeit irgendwo in genau dem gleichen Wald versumpft, in dem ich jetzt auch wieder stecke ... +

+

+   +

+ + +
+ +
+ + + + + + + + +

+ der Turnout ist ein Level-1-Builder.... +

+ + +
+
+
+ + + + +

+ ...da ja ohnehin im Zusammenhang mit dem BufferProvider überall diverse »conveninence shortcuts« implementiert sind — ehrlich gesagt, es war und ist noch nicht klar wohin die Reise geht... +

+ +
+ + + + + + + + + + + +

+ mit der offensichtlichen forwarding-Impl +

+ + +
+ +
+
+
+ + + + +
+ + + +