Revert "Revert "split renderSync and transition nudging to allow client view syncing""

This reverts commit 263f9fad30.
This commit is contained in:
Bruno de Oliveira Abinader
2015-07-20 21:19:36 +03:00
parent fad241f8cf
commit 784eb35512
3 changed files with 13 additions and 4 deletions

View File

@@ -67,7 +67,10 @@ public:
void renderStill(StillImageCallback callback);
// Triggers a synchronous or asynchronous render.
void renderSync();
bool renderSync();
// Nudges transitions one step, possibly notifying of the need for a rerender.
void nudgeTransitions(bool forceRerender);
// Notifies the Map thread that the state has changed and an update might be necessary.
void update(Update update = Update::Nothing);

View File

@@ -703,9 +703,11 @@ std::chrono::steady_clock::duration secondsAsDuration(float duration)
_mbglMap->setSourceTileCacheSize(cacheSize);
_mbglMap->renderSync();
bool needsRerender = _mbglMap->renderSync();
[self updateUserLocationAnnotationView];
_mbglMap->nudgeTransitions(needsRerender);
}
}

View File

@@ -48,7 +48,7 @@ void Map::renderStill(StillImageCallback callback) {
FrameData{ view.getFramebufferSize() }, callback);
}
void Map::renderSync() {
bool Map::renderSync() {
if (renderState == RenderState::never) {
view.notifyMapChange(MapChangeWillStartRenderingMap);
}
@@ -69,9 +69,13 @@ void Map::renderSync() {
view.notifyMapChange(MapChangeDidFinishRenderingMapFullyRendered);
}
return result.needsRerender;
}
void Map::nudgeTransitions(bool forceRerender) {
if (transform->needsTransition()) {
update(Update(transform->updateTransitions(Clock::now())));
} else if (result.needsRerender) {
} else if (forceRerender) {
update();
}
}