Mercurial > hg > svcore
diff transform/ModelTransformer.h @ 1211:5a1198083d9a piper
Pull out model creation into the transformer thread run(), so that all communications with the plugin server happen on a single thread. Then make the model accessor wait for them to be created (which still happens right at the start of processing) before returning.
author | Chris Cannam |
---|---|
date | Mon, 17 Oct 2016 14:18:23 +0100 |
parents | 6ea7761a418b |
children | 1b888a85983b |
line wrap: on
line diff
--- a/transform/ModelTransformer.h Fri Oct 14 16:23:04 2016 +0100 +++ b/transform/ModelTransformer.h Mon Oct 17 14:18:23 2016 +0100 @@ -89,16 +89,20 @@ * be initialised; an error message may be available via * getMessage() in this situation. */ - Models getOutputModels() { return m_outputs; } + Models getOutputModels() { + awaitOutputModels(); + return m_outputs; + } /** * Return the set of output models, also detaching them from the * transformer so that they will not be deleted when the * transformer is. The caller takes ownership of the models. */ - Models detachOutputModels() { + Models detachOutputModels() { + awaitOutputModels(); m_detached = true; - return getOutputModels(); + return m_outputs; } /** @@ -138,6 +142,8 @@ ModelTransformer(Input input, const Transform &transform); ModelTransformer(Input input, const Transforms &transforms); + virtual void awaitOutputModels() = 0; + Transforms m_transforms; Input m_input; // I don't own the model in this Models m_outputs; // I own this, unless...