summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/mbgl/map/transform.cpp12
1 files changed, 8 insertions, 4 deletions
diff --git a/src/mbgl/map/transform.cpp b/src/mbgl/map/transform.cpp
index 41fc36ce27..55fdb37732 100644
--- a/src/mbgl/map/transform.cpp
+++ b/src/mbgl/map/transform.cpp
@@ -559,7 +559,9 @@ void Transform::startTransition(const CameraOptions& camera,
std::function<Update(double)> frame,
const Duration& duration) {
if (transitionFinishFn) {
- transitionFinishFn();
+ std::function<void()> tmpFunction = transitionFinishFn;
+ transitionFinishFn = nullptr;
+ tmpFunction();
}
bool isAnimated = duration != Duration::zero();
@@ -599,8 +601,9 @@ void Transform::startTransition(const CameraOptions& camera,
callback(MapChangeRegionIsChanging);
}
} else {
- transitionFinishFn();
+ std::function<void()> tmpFunction = transitionFinishFn;
transitionFinishFn = nullptr;
+ tmpFunction();
// This callback gets destroyed here,
// we can only return after this point.
@@ -636,11 +639,12 @@ Update Transform::updateTransitions(const TimePoint& now) {
void Transform::cancelTransitions() {
if (transitionFinishFn) {
- transitionFinishFn();
+ std::function<void()> tmpFunction = transitionFinishFn;
+ transitionFinishFn = nullptr;
+ tmpFunction();
}
transitionFrameFn = nullptr;
- transitionFinishFn = nullptr;
}
void Transform::setGestureInProgress(bool inProgress) {