summaryrefslogtreecommitdiff
path: root/src/mbgl/renderer/buckets/raster_bucket.cpp
diff options
context:
space:
mode:
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