summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohn Firebaugh <john.firebaugh@gmail.com>2017-06-13 11:28:41 -0700
committerJohn Firebaugh <john.firebaugh@gmail.com>2017-06-13 14:35:13 -0700
commit8902e28e9b252d53079635e28151199feaf2ea84 (patch)
treeef92b743bdb00b27a52575204060a1eb6ac86ceb
parent9d276f3b0f0e5f1b5089a6cd727927361e6634ac (diff)
downloadqtlocation-mapboxgl-8902e28e9b252d53079635e28151199feaf2ea84.tar.gz
[core] Don't upload the FrameHistory texture in frames where it's not changing
-rw-r--r--src/mbgl/renderer/frame_history.cpp12
1 files changed, 6 insertions, 6 deletions
diff --git a/src/mbgl/renderer/frame_history.cpp b/src/mbgl/renderer/frame_history.cpp
index a933a9004a..35e246f488 100644
--- a/src/mbgl/renderer/frame_history.cpp
+++ b/src/mbgl/renderer/frame_history.cpp
@@ -39,15 +39,15 @@ void FrameHistory::record(const TimePoint& now, float zoom, const Duration& dura
for (int16_t z = 0; z <= 255; z++) {
std::chrono::duration<float> timeDiff = now - changeTimes[z];
int32_t opacityChange = (duration == Milliseconds(0) ? 1 : (timeDiff / duration)) * 255;
- if (z <= zoomIndex) {
- opacities.data[z] = util::min(255, changeOpacities[z] + opacityChange);
- } else {
- opacities.data[z] = util::max(0, changeOpacities[z] - opacityChange);
+ uint8_t opacity = z <= zoomIndex
+ ? util::min(255, changeOpacities[z] + opacityChange)
+ : util::max(0, changeOpacities[z] - opacityChange);
+ if (opacities.data[z] != opacity) {
+ opacities.data[z] = opacity;
+ dirty = true;
}
}
- dirty = true;
-
if (zoomIndex != previousZoomIndex) {
previousZoomIndex = zoomIndex;
previousTime = now;