88 compositionInfosMutex.lock();
90 map<VuoEditorComposition *, CompositionInfo> *cis[] = { &compositionInfos, &unlinkedCompositionInfos };
91 for (
int i = 0; i < 2; ++i)
94 if (curr != (*cis[i]).end())
95 (*cis[i]).erase(curr);
97 for (
auto &c : *cis[i])
102 compositionInfosMutex.unlock();
113 compositionInfosMutex.lock();
115 auto sub = compositionInfos.find(subcompositionInstance);
116 if (sub != compositionInfos.end())
118 auto super = compositionInfos.find(supercomposition);
119 if (super != compositionInfos.end())
121 sub->second.topLevelComposition = super->second.topLevelComposition;
122 sub->second.supercomposition = supercomposition;
129 compositionInfosMutex.unlock();
138 compositionInfosMutex.lock();
140 auto sub = compositionInfos.find(subcompositionInstance);
141 if (sub != compositionInfos.end())
142 compositionInfos[sub->first].reset();
144 sub = unlinkedCompositionInfos.find(subcompositionInstance);
145 if (sub != unlinkedCompositionInfos.end())
146 unlinkedCompositionInfos.erase(sub);
148 compositionInfosMutex.unlock();
178 const string &nodeIdentifier)
180 compositionInfosMutex.lock();
182 for (map<VuoEditorComposition *, CompositionInfo>::iterator i = unlinkedCompositionInfos.begin(); i != unlinkedCompositionInfos.end(); ++i)
184 if (i->second.supercomposition == supercomposition && i->second.nodeIdentifierInSupercomposition == nodeIdentifier)
186 compositionInfos[i->first] = i->second;
187 unlinkedCompositionInfos.erase(i);
192 compositionInfosMutex.unlock();
221 CompositionCallbackWithIdentifier doForComposition)
223 compositionInfosMutex.lock_shared();
225 auto curr = compositionInfos.find(currComposition);
226 if (curr != compositionInfos.end())
227 doForComposition(curr->second.topLevelComposition, curr->second.compositionIdentifier);
229 compositionInfosMutex.unlock_shared();
239 string compositionIdentifier,
240 CompositionCallback doForComposition)
242 compositionInfosMutex.lock_shared();
244 auto curr = compositionInfos.find(currComposition);
245 if (curr != compositionInfos.end())
246 for (
auto c : compositionInfos)
247 if (c.second.topLevelComposition == curr->second.topLevelComposition && c.second.compositionIdentifier == compositionIdentifier)
248 doForComposition(c.first);
250 compositionInfosMutex.unlock_shared();
260 CompositionCallbackWithIdentifier doForComposition)
262 compositionInfosMutex.lock_shared();
264 auto curr = compositionInfos.find(currComposition);
265 if (curr != compositionInfos.end())
266 for (
auto c : compositionInfos)
267 if (c.second.topLevelComposition == curr->second.topLevelComposition)
268 doForComposition(c.first, c.second.compositionIdentifier);
270 compositionInfosMutex.unlock_shared();
297 CompositionCallbackWithPath doForComposition)
299 compositionInfosMutex.lock_shared();
301 auto curr = compositionInfos.find(currComposition);
302 if (curr != compositionInfos.end())
304 string compositionPath = curr->second.window->windowFilePath().toStdString();
306 doForComposition(currComposition, compositionPath);
309 compositionInfosMutex.unlock_shared();