summaryrefslogtreecommitdiff
path: root/src/mbgl/renderer/buckets/raster_bucket.cpp
diff options
context:
space:
mode:
authorAsheem Mamoowala <asheem.mamoowala@mapbox.com>2017-06-20 11:09:19 -0700
committerAsheem Mamoowala <asheem.mamoowala@mapbox.com>2017-07-17 12:20:03 -0700
commit1d15ed64dcf78daa9459247127857513608c18ad (patch)
tree9ea07cfab134972c6b7f169b4153a881e9279fe6 /src/mbgl/renderer/buckets/raster_bucket.cpp
parentb69f8338bbd18573b2a2a4282c4736f257526d03 (diff)
downloadqtlocation-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.cpp19
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