mirror of
https://github.com/JulianGro/overte.git
synced 2025-04-10 20:47:02 +02:00
Fix stuck transition due to removing sub render items before parent
This commit is contained in:
parent
9a75feecde
commit
21966fe345
1 changed files with 12 additions and 6 deletions
|
@ -558,14 +558,20 @@ void Scene::removeItemTransition(ItemID itemId) {
|
|||
auto& item = _items[itemId];
|
||||
TransitionStage::Index transitionId = item.getTransitionId();
|
||||
if (!render::TransitionStage::isIndexInvalid(transitionId)) {
|
||||
auto finishedOperators = _transitionFinishedOperatorMap[transitionId];
|
||||
for (auto finishedOperator : finishedOperators) {
|
||||
if (finishedOperator) {
|
||||
finishedOperator();
|
||||
const auto& transition = transitionStage->getTransition(transitionId);
|
||||
const auto transitionOwner = transition.itemId;
|
||||
if (transitionOwner == itemId) {
|
||||
// No more items will be using this transition. Clean it up.
|
||||
auto finishedOperators = _transitionFinishedOperatorMap[transitionId];
|
||||
for (auto finishedOperator : finishedOperators) {
|
||||
if (finishedOperator) {
|
||||
finishedOperator();
|
||||
}
|
||||
}
|
||||
_transitionFinishedOperatorMap.erase(transitionId);
|
||||
transitionStage->removeTransition(transitionId);
|
||||
}
|
||||
_transitionFinishedOperatorMap.erase(transitionId);
|
||||
transitionStage->removeTransition(transitionId);
|
||||
|
||||
setItemTransition(itemId, render::TransitionStage::INVALID_INDEX);
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue