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/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
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
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 9aedf26a6..5899fea1e 100644
--- a/src/mbgl/map/source.cpp
+++ b/src/mbgl/map/source.cpp
@@ -530,14 +530,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/bucket.hpp b/src/mbgl/renderer/bucket.hpp
index c6a7b788d..eb02f32eb 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 {
@@ -16,6 +18,8 @@ class CollisionTile;
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;
@@ -34,7 +38,7 @@ public:
virtual void swapRenderData() {}
protected:
- bool uploaded = false;
+ std::atomic uploaded;
};
diff --git a/src/mbgl/renderer/painter.cpp b/src/mbgl/renderer/painter.cpp
index 9ea75efb8..e757d682a 100644
--- a/src/mbgl/renderer/painter.cpp
+++ b/src/mbgl/renderer/painter.cpp
@@ -178,6 +178,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.
{
@@ -196,6 +199,7 @@ void Painter::render(const Style& style, TransformState state_, const FrameData&
}
}
+
// - CLIPPING MASKS ----------------------------------------------------------------------------
// Draws the clipping masks to the stencil buffer.
{
@@ -265,8 +269,6 @@ void Painter::renderPass(RenderPass pass_,
std::size_t i, int8_t increment) {
pass = pass_;
- const double zoom = state.getZoom();
-
MBGL_DEBUG_GROUP(pass == RenderPass::Opaque ? "opaque" : "translucent");
if (debug::renderTree) {
@@ -280,13 +282,6 @@ void Painter::renderPass(RenderPass pass_,
currentLayer = i;
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));
prepareTile(*item.tile);
@@ -303,8 +298,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;
@@ -341,6 +336,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);
@@ -354,6 +358,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 dfe13fa2d..9c0f5db8c 100644
--- a/src/mbgl/renderer/painter.hpp
+++ b/src/mbgl/renderer/painter.hpp
@@ -134,12 +134,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,
@@ -200,8 +200,6 @@ private:
RenderPass pass = RenderPass::Opaque;
Color background = {{ 0, 0, 0, 0 }};
- std::vector order;
-
int numSublayers = 3;
size_t currentLayer;
float depthRangeSize;