diff options
author | Asheem Mamoowala <asheem.mamoowala@mapbox.com> | 2017-06-20 11:09:19 -0700 |
---|---|---|
committer | Asheem Mamoowala <asheem.mamoowala@mapbox.com> | 2017-07-17 12:20:03 -0700 |
commit | 1d15ed64dcf78daa9459247127857513608c18ad (patch) | |
tree | 9ea07cfab134972c6b7f169b4153a881e9279fe6 /src/mbgl/renderer/buckets/raster_bucket.cpp | |
parent | b69f8338bbd18573b2a2a4282c4736f257526d03 (diff) | |
download | qtlocation-mapboxgl-1d15ed64dcf78daa9459247127857513608c18ad.tar.gz |
[core] Use shared pointer to manage Image source raster data and speed up change detection
Diffstat (limited to 'src/mbgl/renderer/buckets/raster_bucket.cpp')
-rw-r--r-- | src/mbgl/renderer/buckets/raster_bucket.cpp | 19 |
1 files changed, 16 insertions, 3 deletions
diff --git a/src/mbgl/renderer/buckets/raster_bucket.cpp b/src/mbgl/renderer/buckets/raster_bucket.cpp index 49ec0065c3..61548ee333 100644 --- a/src/mbgl/renderer/buckets/raster_bucket.cpp +++ b/src/mbgl/renderer/buckets/raster_bucket.cpp @@ -9,12 +9,19 @@ namespace mbgl { using namespace style; -RasterBucket::RasterBucket(UnassociatedImage&& image_) : image(std::move(image_)) { +RasterBucket::RasterBucket(UnassociatedImage&& image_) { + image = std::make_shared<UnassociatedImage>(std::move(image_)); } +RasterBucket::RasterBucket(std::shared_ptr<UnassociatedImage> image_): image(image_) { + +} void RasterBucket::upload(gl::Context& context) { + if (!hasData()) { + return; + } if (!texture) { - texture = context.createTexture(image); + texture = context.createTexture(*image); } if (!vertices.empty()) { vertexBuffer = context.createVertexBuffer(std::move(vertices)); @@ -32,6 +39,12 @@ void RasterBucket::clear() { uploaded = false; } + +void RasterBucket::setImage(std::shared_ptr<UnassociatedImage> image_) { + image = std::move(image_); + texture = {}; + uploaded = false; +} void RasterBucket::render(Painter& painter, PaintParameters& parameters, const RenderLayer& layer, @@ -47,7 +60,7 @@ void RasterBucket::render(Painter& painter, } bool RasterBucket::hasData() const { - return true; + return !!image; } } // namespace mbgl |