From 6532438fe47bca1af690779ffa7292d6f1080d0c Mon Sep 17 00:00:00 2001 From: John Firebaugh Date: Fri, 26 Jun 2015 15:10:15 -0700 Subject: Rationalize *RenderingMap notifications --- src/mbgl/map/map.cpp | 22 ++++++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) (limited to 'src/mbgl') diff --git a/src/mbgl/map/map.cpp b/src/mbgl/map/map.cpp index c0f7e953a8..91017d89c8 100644 --- a/src/mbgl/map/map.cpp +++ b/src/mbgl/map/map.cpp @@ -12,8 +12,9 @@ namespace mbgl { -Map::Map(View& view, FileSource& fileSource, MapMode mode) - : transform(std::make_unique(view)), +Map::Map(View& view_, FileSource& fileSource, MapMode mode) + : view(view_), + transform(std::make_unique(view)), data(std::make_unique(mode)), context(std::make_unique>(util::ThreadContext{"Map", util::ThreadType::Map, util::ThreadPriority::Regular}, view, fileSource, *data)) { @@ -46,9 +47,26 @@ void Map::renderStill(StillImageCallback callback) { } void Map::renderSync() { + if (renderState == RenderState::never) { + view.notifyMapChange(MapChangeWillStartRenderingMap); + } + + view.notifyMapChange(MapChangeWillStartRenderingFrame); + MapContext::RenderResult result = context->invokeSync(&MapContext::renderSync, transform->getState()); + view.notifyMapChange(result.fullyLoaded ? + MapChangeDidFinishRenderingFrameFullyRendered : + MapChangeDidFinishRenderingFrame); + + if (!result.fullyLoaded) { + renderState = RenderState::partial; + } else if (renderState != RenderState::fully) { + renderState = RenderState::fully; + view.notifyMapChange(MapChangeDidFinishRenderingMapFullyRendered); + } + if (transform->needsTransition()) { update(Update(transform->updateTransitions(Clock::now()))); } else if (result.needsRerender) { -- cgit v1.2.1