comparison transform/ModelTransformer.cpp @ 877:b109b88bfa85 tonioni

Callback handler for additional models at end of processing
author Chris Cannam
date Wed, 29 Jan 2014 15:58:15 +0000
parents 47aa3aeb687b
children fe3f7f8df3a3
comparison
equal deleted inserted replaced
876:47aa3aeb687b 877:b109b88bfa85
16 #include "ModelTransformer.h" 16 #include "ModelTransformer.h"
17 17
18 ModelTransformer::ModelTransformer(Input input, const Transform &transform) : 18 ModelTransformer::ModelTransformer(Input input, const Transform &transform) :
19 m_input(input), 19 m_input(input),
20 m_detached(false), 20 m_detached(false),
21 m_detachedAdd(false),
21 m_abandoned(false) 22 m_abandoned(false)
22 { 23 {
23 m_transforms.push_back(transform); 24 m_transforms.push_back(transform);
24 } 25 }
25 26
26 ModelTransformer::ModelTransformer(Input input, const Transforms &transforms) : 27 ModelTransformer::ModelTransformer(Input input, const Transforms &transforms) :
27 m_transforms(transforms), 28 m_transforms(transforms),
28 m_input(input), 29 m_input(input),
29 m_detached(false), 30 m_detached(false),
31 m_detachedAdd(false),
30 m_abandoned(false) 32 m_abandoned(false)
31 { 33 {
32 } 34 }
33 35
34 ModelTransformer::~ModelTransformer() 36 ModelTransformer::~ModelTransformer()
35 { 37 {
36 m_abandoned = true; 38 m_abandoned = true;
37 wait(); 39 wait();
38 if (!m_detached) { 40 if (!m_detached) {
39 Models mine = getOutputModels(); // including any additional ones 41 Models mine = getOutputModels();
40 foreach (Model *m, mine) { 42 foreach (Model *m, mine) delete m;
41 delete m; 43 }
42 } 44 if (!m_detachedAdd) {
45 Models mine = getAdditionalOutputModels();
46 foreach (Model *m, mine) delete m;
43 } 47 }
44 } 48 }
45 49
46 ModelTransformer::Models
47 ModelTransformer::getOutputModels()
48 {
49 Models out(m_outputs);
50 Models add(getAdditionalOutputModels());
51 foreach (Model *m, add) out.push_back(m);
52 return out;
53 }
54