diff --git a/src/proc/engine/job-ticket.cpp b/src/proc/engine/job-ticket.cpp index 317bccc18..e5bec3783 100644 --- a/src/proc/engine/job-ticket.cpp +++ b/src/proc/engine/job-ticket.cpp @@ -45,7 +45,6 @@ namespace engine { // using mobject::session::Effect; - JobClosure::~JobClosure() { } diff --git a/src/proc/engine/job-ticket.hpp b/src/proc/engine/job-ticket.hpp index edd7c4bd2..8909c87e5 100644 --- a/src/proc/engine/job-ticket.hpp +++ b/src/proc/engine/job-ticket.hpp @@ -52,28 +52,6 @@ using util::isnil; // //class ExitNode; - /** - * a job closure represents the execution context of a job. - * This allows us to enqueue simple job-"functions" with the scheduler. - * By virtue of the JobClosure-pointer, embedded into #lumiera_jobDefinition, - * the invocation of such a job may re-gain the full context, including the - * actual ProcNode to pull and further specifics, like the media channel. - */ - class JobClosure - : public lumiera_jobClosure - { - public: - virtual ~JobClosure(); ///< this is an interface - - - virtual void invokeJobOperation (JobParameter parameter) =0; - virtual void signalFailure (JobParameter parameter) =0; - - virtual JobKind getJobKind() const =0; - virtual bool verify (Time nominalJobTime) const =0; - }; - - /** * execution plan for pulling a specific exit node. diff --git a/src/proc/engine/job.cpp b/src/proc/engine/job.cpp index 8db0a5c77..f92001d8f 100644 --- a/src/proc/engine/job.cpp +++ b/src/proc/engine/job.cpp @@ -57,6 +57,18 @@ namespace engine { // using mobject::session::Effect; + + /** + * emit the VTable for JobClosure within this compilation unit, + * which is still part of the backend. The actual job implementation + * classes are defined in the Proc-Layer + */ + JobClosure::~JobClosure() { } + + + + + /** @todo WIP-WIP 2/12 */ void diff --git a/src/proc/engine/job.hpp b/src/proc/engine/job.hpp index 461fa95c8..d100003ec 100644 --- a/src/proc/engine/job.hpp +++ b/src/proc/engine/job.hpp @@ -133,7 +133,7 @@ namespace engine { /** - * Frame rendering task, represented as closure. + * Individual frame rendering task, forwarding to a closure. * This functor encodes all information necessary to trigger * and invoke the actual rendering operation. It will be embedded * by value into a job descriptor and then enqueued with the scheduler @@ -182,6 +182,35 @@ namespace engine { }; + /** + * Interface of the closure for frame rendering jobs. + * Hidden behind this interface resides all of the context re-building + * and invocation mechanics to get the actual calculations going. While + * the job descriptor, as handled by the scheduler, contains the variable + * "moving parts", the corresponding job closure represents the execution + * context of a job and is shared between several jobs within the same + * segment of the timeline. + * + * This allows us to enqueue simple job-"functions" with the scheduler. + * By virtue of the JobClosure-pointer, embedded into #lumiera_jobDefinition, + * the invocation of such a job may re-gain the full context, including the + * actual ProcNode to pull and further specifics, like the media channel. + */ + class JobClosure + : public lumiera_jobClosure + { + public: + virtual ~JobClosure(); ///< this is an interface + + + virtual void invokeJobOperation (JobParameter parameter) =0; + virtual void signalFailure (JobParameter parameter) =0; + + virtual JobKind getJobKind() const =0; + virtual bool verify (Time nominalJobTime) const =0; + }; + + }} // namespace proc::engine