diff options
author | John Firebaugh <john.firebaugh@gmail.com> | 2017-05-03 14:53:03 -0700 |
---|---|---|
committer | John Firebaugh <john.firebaugh@gmail.com> | 2017-05-05 08:56:36 -0700 |
commit | 66da7594263b657b78aff54a16905184505e275e (patch) | |
tree | 3f940c3852ff7a7d4f2b885c742e4fac06c84abc /src/mbgl/map/map.cpp | |
parent | fd104dd3c229ce42d149a143260407cd259b716c (diff) | |
download | qtlocation-mapboxgl-66da7594263b657b78aff54a16905184505e275e.tar.gz |
[core] Reduce use of RecalculateStyle
* Don't use it to track zoom changes. Instead, Style::update can use the zoom history to check for a change in zoom from the previous frame.
* Don't use it to track active property transitions. Style already knows which layers/light have an active transition, and can re-evaluate only those that do.
This leaves layer property changes as the only use of RecalculateStyle.
Diffstat (limited to 'src/mbgl/map/map.cpp')
-rw-r--r-- | src/mbgl/map/map.cpp | 32 |
1 files changed, 12 insertions, 20 deletions
diff --git a/src/mbgl/map/map.cpp b/src/mbgl/map/map.cpp index 5d52fc130b..bba6d50a98 100644 --- a/src/mbgl/map/map.cpp +++ b/src/mbgl/map/map.cpp @@ -231,9 +231,7 @@ void Map::Impl::render(View& view) { ? Clock::now() : Clock::time_point::max(); - auto flags = transform.updateTransitions(timePoint); - - updateFlags |= flags; + transform.updateTransitions(timePoint); if (style->loaded && updateFlags & Update::AnnotationStyle) { annotationManager->updateStyle(*style); @@ -297,16 +295,10 @@ void Map::Impl::render(View& view) { } } - if (style->hasTransitions()) { - flags |= Update::RecalculateStyle; - } else if (painter->needsAnimation()) { - flags |= Update::Repaint; - } - - // Only schedule an update if we need to paint another frame due to transitions or + // Schedule an update if we need to paint another frame due to transitions or // animations that are still in progress - if (flags != Update::Nothing) { - onUpdate(flags); + if (style->hasTransitions() || painter->needsAnimation() || transform.inTransition()) { + onUpdate(Update::Repaint); } } else if (stillImageRequest && style->isLoaded()) { FrameData frameData { timePoint, @@ -409,7 +401,7 @@ void Map::Impl::loadStyleJSON(const std::string& json) { map.setPitch(map.getDefaultPitch()); } - onUpdate(Update::Classes | Update::RecalculateStyle | Update::AnnotationStyle); + onUpdate(Update::Classes | Update::AnnotationStyle); } std::string Map::getStyleURL() const { @@ -457,19 +449,19 @@ CameraOptions Map::getCameraOptions(const EdgeInsets& padding) const { void Map::jumpTo(const CameraOptions& camera) { impl->cameraMutated = true; impl->transform.jumpTo(camera); - impl->onUpdate(camera.zoom ? Update::RecalculateStyle : Update::Repaint); + impl->onUpdate(Update::Repaint); } void Map::easeTo(const CameraOptions& camera, const AnimationOptions& animation) { impl->cameraMutated = true; impl->transform.easeTo(camera, animation); - impl->onUpdate(camera.zoom ? Update::RecalculateStyle : Update::Repaint); + impl->onUpdate(Update::Repaint); } void Map::flyTo(const CameraOptions& camera, const AnimationOptions& animation) { impl->cameraMutated = true; impl->transform.flyTo(camera, animation); - impl->onUpdate(Update::RecalculateStyle); + impl->onUpdate(Update::Repaint); } #pragma mark - Position @@ -510,7 +502,7 @@ void Map::resetPosition(const EdgeInsets& padding) { camera.padding = padding; camera.zoom = 0; impl->transform.jumpTo(camera); - impl->onUpdate(Update::RecalculateStyle); + impl->onUpdate(Update::Repaint); } @@ -524,13 +516,13 @@ void Map::setZoom(double zoom, const AnimationOptions& animation) { void Map::setZoom(double zoom, optional<ScreenCoordinate> anchor, const AnimationOptions& animation) { impl->cameraMutated = true; impl->transform.setZoom(zoom, anchor, animation); - impl->onUpdate(Update::RecalculateStyle); + impl->onUpdate(Update::Repaint); } void Map::setZoom(double zoom, const EdgeInsets& padding, const AnimationOptions& animation) { impl->cameraMutated = true; impl->transform.setZoom(zoom, padding, animation); - impl->onUpdate(Update::RecalculateStyle); + impl->onUpdate(Update::Repaint); } double Map::getZoom() const { @@ -545,7 +537,7 @@ void Map::setLatLngZoom(const LatLng& latLng, double zoom, const AnimationOption void Map::setLatLngZoom(const LatLng& latLng, double zoom, const EdgeInsets& padding, const AnimationOptions& animation) { impl->cameraMutated = true; impl->transform.setLatLngZoom(latLng, zoom, padding, animation); - impl->onUpdate(Update::RecalculateStyle); + impl->onUpdate(Update::Repaint); } CameraOptions Map::cameraForLatLngBounds(const LatLngBounds& bounds, const EdgeInsets& padding) const { |