Fix stuck transition due to removing sub render items before parent

This commit is contained in:
sabrina-shanman 2019-06-07 11:14:07 -07:00
parent 9a75feecde
commit 21966fe345

View file

@ -558,14 +558,20 @@ void Scene::removeItemTransition(ItemID itemId) {
auto& item = _items[itemId]; auto& item = _items[itemId];
TransitionStage::Index transitionId = item.getTransitionId(); TransitionStage::Index transitionId = item.getTransitionId();
if (!render::TransitionStage::isIndexInvalid(transitionId)) { if (!render::TransitionStage::isIndexInvalid(transitionId)) {
auto finishedOperators = _transitionFinishedOperatorMap[transitionId]; const auto& transition = transitionStage->getTransition(transitionId);
for (auto finishedOperator : finishedOperators) { const auto transitionOwner = transition.itemId;
if (finishedOperator) { if (transitionOwner == itemId) {
finishedOperator(); // 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); setItemTransition(itemId, render::TransitionStage::INVALID_INDEX);
} }
} }