diff options
author | Asheem Mamoowala <asheem.mamoowala@mapbox.com> | 2017-05-25 14:36:05 -0700 |
---|---|---|
committer | Asheem Mamoowala <asheem.mamoowala@mapbox.com> | 2017-06-19 09:50:08 -0700 |
commit | ab5b310a9eb7c88935cc457da1af81349fbe8d41 (patch) | |
tree | e1485c8aa2f00e2b50daa0aa7f997ddda59c2562 /src | |
parent | 7b05606464ac4d57b59b64015629e9578cbebac2 (diff) | |
download | qtlocation-mapboxgl-ab5b310a9eb7c88935cc457da1af81349fbe8d41.tar.gz |
[iOS][macOS] Add ImageSource bindings
Diffstat (limited to 'src')
-rw-r--r-- | src/mbgl/renderer/buckets/raster_bucket.cpp | 6 | ||||
-rw-r--r-- | src/mbgl/renderer/sources/render_image_source.cpp | 13 |
2 files changed, 11 insertions, 8 deletions
diff --git a/src/mbgl/renderer/buckets/raster_bucket.cpp b/src/mbgl/renderer/buckets/raster_bucket.cpp index 8c9c1658a1..49ec0065c3 100644 --- a/src/mbgl/renderer/buckets/raster_bucket.cpp +++ b/src/mbgl/renderer/buckets/raster_bucket.cpp @@ -13,7 +13,9 @@ RasterBucket::RasterBucket(UnassociatedImage&& image_) : image(std::move(image_) } void RasterBucket::upload(gl::Context& context) { - texture = context.createTexture(image); + if (!texture) { + texture = context.createTexture(image); + } if (!vertices.empty()) { vertexBuffer = context.createVertexBuffer(std::move(vertices)); indexBuffer = context.createIndexBuffer(std::move(indices)); @@ -27,7 +29,7 @@ void RasterBucket::clear() { segments.clear(); vertices.clear(); indices.clear(); - + uploaded = false; } void RasterBucket::render(Painter& painter, diff --git a/src/mbgl/renderer/sources/render_image_source.cpp b/src/mbgl/renderer/sources/render_image_source.cpp index 7fb7caa580..f5068b9d7f 100644 --- a/src/mbgl/renderer/sources/render_image_source.cpp +++ b/src/mbgl/renderer/sources/render_image_source.cpp @@ -135,12 +135,13 @@ void RenderImageSource::update(Immutable<style::Source::Impl> baseImpl_, geomCoords.push_back(gc); } - if (!bucket) { - UnassociatedImage img = impl().getImage().clone(); - if (!img.valid()) { - return; - } - bucket = std::make_unique<RasterBucket>(std::move(img)); + const UnassociatedImage& image = impl().getImage(); + if (!image.valid()) { + return; + } + + if (!bucket || image != bucket->image) { + bucket = std::make_unique<RasterBucket>(image.clone()); } else { bucket->clear(); } |