From fef4404f6e57f2a70d0982eb1952f6e8bf3df16f Mon Sep 17 00:00:00 2001 From: tobrunvannuland Date: Sun, 23 Aug 2015 14:44:19 +0200 Subject: [PATCH 1/6] correction path to JAVA_HOME (Added /Contents/Home --- INSTALL.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/INSTALL.md b/INSTALL.md index ac5bb8667..72e23f097 100644 --- a/INSTALL.md +++ b/INSTALL.md @@ -274,8 +274,8 @@ By default, the SDK will be installed to `/usr/local/opt/android-sdk`. If you op echo "export ANDROID_HOME=`brew --prefix android-sdk`" >> .bash_profile echo "export ANDROID_NDK_PATH=`brew --cellar android-ndk`/r10e" >> .bash_profile - # Replace with something like /Library/Java/JavaVirtualMachines/jdk1.8.0_31.jdk - echo "export JAVA_HOME=" >> .bash_profile + # Replace with something like /Library/Java/JavaVirtualMachines/jdk1.8.0_31.jdk/Contents/Home + echo "export JAVA_HOME=" >> .bash_profile echo "export STUDIO_JDK=$JAVA_HOME" >> .bash_profile Run: From 0a63031819da871c3e96e24cc8826e9435558f83 Mon Sep 17 00:00:00 2001 From: tobrunvannuland Date: Sun, 23 Aug 2015 14:46:41 +0200 Subject: [PATCH 2/6] Replaced name outdated menu item of Android Studio --- INSTALL.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/INSTALL.md b/INSTALL.md index 72e23f097..669aba3f9 100644 --- a/INSTALL.md +++ b/INSTALL.md @@ -283,7 +283,7 @@ Run: make android open -a Android\ Studio -You can then open `android/java` in Android Studio via "Import Non-Android Studio Project". +You can then open `android/java` in Android Studio via "import project (Eclipse ADT, Gradle, etc.)". ### Setting up Android emulator From 6966addb8d0b850f10195408c0eef38836c97a1d Mon Sep 17 00:00:00 2001 From: Leith Bade Date: Tue, 25 Aug 2015 11:48:49 +1000 Subject: [PATCH 3/6] Use v8 styles on Android. Closes #2165 --- .../src/main/res/values/strings.xml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/android/java/MapboxGLAndroidSDKTestApp/src/main/res/values/strings.xml b/android/java/MapboxGLAndroidSDKTestApp/src/main/res/values/strings.xml index 81ba6e1cc..403da277c 100644 --- a/android/java/MapboxGLAndroidSDKTestApp/src/main/res/values/strings.xml +++ b/android/java/MapboxGLAndroidSDKTestApp/src/main/res/values/strings.xml @@ -19,11 +19,11 @@ Dark Satellite - asset://styles/mapbox-streets-v7.json - asset://styles/emerald-v7.json - asset://styles/light-v7.json - asset://styles/dark-v7.json - asset://styles/satellite-v7.json + asset://styles/streets-v8.json + asset://styles/emerald-v8.json + asset://styles/light-v8.json + asset://styles/dark-v8.json + asset://styles/satellite-v8.json Day From 15a5532d76c387142db60913c4ce0876d4450eb8 Mon Sep 17 00:00:00 2001 From: "Justin R. Miller" Date: Mon, 24 Aug 2015 17:51:54 -0700 Subject: [PATCH 4/6] updates for "iOS SDK" series releases --- CHANGELOG.md | 8 ++++++++ ios/Mapbox-iOS-SDK.podspec | 2 +- scripts/ios/package.sh | 2 +- 3 files changed, 10 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 45b1959a4..c1b3e3003 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,13 @@ # Changelog +## iOS 2.0.0 + +Repackaging 2.0.0-pre.1 as it contained no issues. + +## iOS 2.0.0-pre.1 + +Repackaging 0.5.1 as the Mapbox iOS SDK 2.0.0 series. + ## 0.5.1 ### iOS diff --git a/ios/Mapbox-iOS-SDK.podspec b/ios/Mapbox-iOS-SDK.podspec index f09486c82..099a84c8a 100644 --- a/ios/Mapbox-iOS-SDK.podspec +++ b/ios/Mapbox-iOS-SDK.podspec @@ -1,7 +1,7 @@ Pod::Spec.new do |m| m.name = 'Mapbox-iOS-SDK' - m.version = '2.0.0-pre.1-symbols' + m.version = '2.0.0-symbols' m.summary = 'Open source vector map solution for iOS with full styling capabilities.' m.description = 'Open source OpenGL-based vector map solution for iOS with full styling capabilities and Cocoa bindings.' diff --git a/scripts/ios/package.sh b/scripts/ios/package.sh index 26e0cc37f..2b1e97c30 100755 --- a/scripts/ios/package.sh +++ b/scripts/ios/package.sh @@ -111,7 +111,7 @@ if [ -z `which appledoc` ]; then fi DOCS_OUTPUT="${OUTPUT}/static/Docs" git fetch --tags -DOCS_VERSION=$( git tag --sort -v:refname | grep -v '\-rc.' | sed -n '1p' | sed 's/^v//' ) +DOCS_VERSION=$( git tag | sed 's/^ios-//' | sort -r | grep -v '\-rc.' | grep -v '\-pre.' | sed -n '1p' | sed 's/^v//' ) rm -rf /tmp/mbgl mkdir -p /tmp/mbgl/ README=/tmp/mbgl/README.md From c7dfbec96ec54fc6b99c03a6e4752bf7962e1f07 Mon Sep 17 00:00:00 2001 From: Bruno de Oliveira Abinader Date: Tue, 25 Aug 2015 11:18:27 -0700 Subject: [PATCH 5/6] Make Bucket::uploaded an atomic bool This class is called from multiple threads, so we better make this synchronization flag atomic. --- src/mbgl/renderer/bucket.hpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/mbgl/renderer/bucket.hpp b/src/mbgl/renderer/bucket.hpp index 4bdb766a7..6185a5c9b 100644 --- a/src/mbgl/renderer/bucket.hpp +++ b/src/mbgl/renderer/bucket.hpp @@ -5,6 +5,8 @@ #include #include +#include + #define BUFFER_OFFSET(i) ((char*)nullptr + (i)) namespace mbgl { @@ -15,6 +17,8 @@ class TileID; class Bucket : private util::noncopyable { public: + Bucket() : uploaded(false) {} + // As long as this bucket has a Prepare render pass, this function is getting called. Typically, // this only happens once when the bucket is being rendered for the first time. virtual void upload() = 0; @@ -33,7 +37,7 @@ public: virtual void swapRenderData() {} protected: - bool uploaded = false; + std::atomic uploaded; }; From 765c4695d85ca9114c419e2e49f121b41f80a85d Mon Sep 17 00:00:00 2001 From: Bruno de Oliveira Abinader Date: Tue, 25 Aug 2015 11:18:31 -0700 Subject: [PATCH 6/6] Revert "only update the render order array when there are changes to tiles" This reverts commit fd98607c5fcb14aaa29c046a0b7115f47aaf2ddc. Fixes #2163. --- src/mbgl/map/map_context.cpp | 5 ----- src/mbgl/map/source.cpp | 9 ++------- src/mbgl/renderer/painter.cpp | 28 +++++++++++++++++----------- src/mbgl/renderer/painter.hpp | 6 ++---- 4 files changed, 21 insertions(+), 27 deletions(-) diff --git a/src/mbgl/map/map_context.cpp b/src/mbgl/map/map_context.cpp index 19e8d02ec..a8dd86284 100644 --- a/src/mbgl/map/map_context.cpp +++ b/src/mbgl/map/map_context.cpp @@ -334,7 +334,6 @@ bool MapContext::renderSync(const TransformState& state, const FrameData& frame) if (!painter) { painter = std::make_unique(data); painter->setup(); - painter->updateRenderOrder(*style); } painter->setDebug(data.getDebug()); @@ -401,10 +400,6 @@ void MapContext::setSprite(const std::string& name, std::shared_ptrupdateRenderOrder(*style); - } - updateFlags |= Update::Repaint; asyncUpdate->send(); } diff --git a/src/mbgl/map/source.cpp b/src/mbgl/map/source.cpp index 4b2ae2cfb..518468af6 100644 --- a/src/mbgl/map/source.cpp +++ b/src/mbgl/map/source.cpp @@ -529,14 +529,9 @@ void Source::invalidateTiles(const std::unordered_set& ids } void Source::updateTilePtrs() { - std::vector newPtrs; + tilePtrs.clear(); for (const auto& pair : tiles) { - newPtrs.push_back(pair.second.get()); - } - - if (tilePtrs != newPtrs) { - tilePtrs = newPtrs; - emitTileLoaded(true); + tilePtrs.push_back(pair.second.get()); } } diff --git a/src/mbgl/renderer/painter.cpp b/src/mbgl/renderer/painter.cpp index b55b71dcb..9e5feaec7 100644 --- a/src/mbgl/renderer/painter.cpp +++ b/src/mbgl/renderer/painter.cpp @@ -184,6 +184,9 @@ void Painter::render(const Style& style, TransformState state_, const FrameData& resize(); changeMatrix(); + // Figure out what buckets we have to draw and what order we have to draw them in. + const auto order = determineRenderOrder(style); + // - UPLOAD PASS ------------------------------------------------------------------------------- // Uploads all required buffers and images before we do any actual rendering. { @@ -202,6 +205,7 @@ void Painter::render(const Style& style, TransformState state_, const FrameData& } } + // - CLIPPING MASKS ---------------------------------------------------------------------------- // Draws the clipping masks to the stencil buffer. { @@ -272,8 +276,6 @@ void Painter::renderPass(RenderPass pass_, const float strataThickness) { pass = pass_; - const double zoom = state.getZoom(); - MBGL_DEBUG_GROUP(pass == RenderPass::Opaque ? "opaque" : "translucent"); if (debug::renderTree) { @@ -286,13 +288,6 @@ void Painter::renderPass(RenderPass pass_, for (; it != end; ++it, i += increment) { const auto& item = *it; if (item.bucket && item.tile) { - // Skip this layer if it's outside the range of min/maxzoom. - // This may occur when there /is/ a bucket created for this layer, but the min/max-zoom - // is set to a fractional value, or value that is larger than the source maxzoom. - if (item.layer.bucket->min_zoom > zoom || - item.layer.bucket->max_zoom <= zoom) { - continue; - } if (item.layer.hasRenderPass(pass)) { MBGL_DEBUG_GROUP(item.layer.id + " - " + std::string(item.tile->id)); setStrata(i * strataThickness); @@ -311,8 +306,8 @@ void Painter::renderPass(RenderPass pass_, } } -void Painter::updateRenderOrder(const Style& style) { - order.clear(); +std::vector Painter::determineRenderOrder(const Style& style) { + std::vector order; for (const auto& layerPtr : style.layers) { const auto& layer = *layerPtr; @@ -349,6 +344,15 @@ void Painter::updateRenderOrder(const Style& style) { continue; } + // Skip this layer if it's outside the range of min/maxzoom. + // This may occur when there /is/ a bucket created for this layer, but the min/max-zoom + // is set to a fractional value, or value that is larger than the source maxzoom. + const double zoom = state.getZoom(); + if (layer.bucket->min_zoom > zoom || + layer.bucket->max_zoom <= zoom) { + continue; + } + const auto& tiles = source->getTiles(); for (auto tile : tiles) { assert(tile); @@ -362,6 +366,8 @@ void Painter::updateRenderOrder(const Style& style) { } } } + + return order; } void Painter::renderBackground(const StyleLayer &layer_desc) { diff --git a/src/mbgl/renderer/painter.hpp b/src/mbgl/renderer/painter.hpp index 78cf308b7..e4e1f8cff 100644 --- a/src/mbgl/renderer/painter.hpp +++ b/src/mbgl/renderer/painter.hpp @@ -137,12 +137,12 @@ public: bool needsAnimation() const; - void updateRenderOrder(const Style& style); - private: void setupShaders(); mat4 translatedMatrix(const mat4& matrix, const std::array &translation, const TileID &id, TranslateAnchorType anchor); + std::vector determineRenderOrder(const Style& style); + template void renderPass(RenderPass, Iterator it, Iterator end, @@ -204,8 +204,6 @@ private: const float strata_epsilon = 1.0f / (1 << 16); Color background = {{ 0, 0, 0, 0 }}; - std::vector order; - public: FrameHistory frameHistory;