diff --git a/src/mbgl/tile/raster_tile.cpp b/src/mbgl/tile/raster_tile.cpp index c7a051f8413..2347f8c8815 100644 --- a/src/mbgl/tile/raster_tile.cpp +++ b/src/mbgl/tile/raster_tile.cpp @@ -41,13 +41,13 @@ void RasterTile::setData(std::shared_ptr data, void RasterTile::onParsed(std::unique_ptr result) { bucket = std::move(result); - availableData = DataAvailability::All; + availableData = bucket ? DataAvailability::All : DataAvailability::None; observer->onTileChanged(*this); } void RasterTile::onError(std::exception_ptr err) { bucket.reset(); - availableData = DataAvailability::All; + availableData = DataAvailability::None; observer->onTileError(*this, err); } diff --git a/src/mbgl/tile/raster_tile_worker.cpp b/src/mbgl/tile/raster_tile_worker.cpp index 219e9a2e41e..8c1fc2f6734 100644 --- a/src/mbgl/tile/raster_tile_worker.cpp +++ b/src/mbgl/tile/raster_tile_worker.cpp @@ -1,6 +1,6 @@ #include #include -#include +#include #include #include diff --git a/test/tile/raster_tile.test.cpp b/test/tile/raster_tile.test.cpp index 0d599ceae09..5cfc274be06 100644 --- a/test/tile/raster_tile.test.cpp +++ b/test/tile/raster_tile.test.cpp @@ -9,6 +9,7 @@ #include #include #include +#include using namespace mbgl; @@ -45,5 +46,19 @@ TEST(RasterTile, onError) { RasterTileTest test; RasterTile tile(OverscaledTileID(0, 0, 0), test.updateParameters, test.tileset); tile.onError(std::make_exception_ptr(std::runtime_error("test"))); + EXPECT_FALSE(tile.isRenderable()); +} + +TEST(RasterTile, onParsed) { + RasterTileTest test; + RasterTile tile(OverscaledTileID(0, 0, 0), test.updateParameters, test.tileset); + tile.onParsed(std::make_unique(UnassociatedImage{})); EXPECT_TRUE(tile.isRenderable()); } + +TEST(RasterTile, onParsedEmpty) { + RasterTileTest test; + RasterTile tile(OverscaledTileID(0, 0, 0), test.updateParameters, test.tileset); + tile.onParsed(nullptr); + EXPECT_FALSE(tile.isRenderable()); +}