[core] Render parent raster tiles when ideal tile can't be loaded
This commit is contained in:
@@ -34,8 +34,13 @@ struct MockTileData {
|
||||
return renderable;
|
||||
}
|
||||
|
||||
bool isLoaded() const {
|
||||
return loaded;
|
||||
}
|
||||
|
||||
bool renderable = false;
|
||||
bool triedOptional = false;
|
||||
bool loaded = false;
|
||||
const mbgl::OverscaledTileID tileID;
|
||||
};
|
||||
|
||||
|
||||
@@ -1226,3 +1226,36 @@ TEST(UpdateRenderables, RepeatedRenderWithMissingOptionals) {
|
||||
}),
|
||||
log);
|
||||
}
|
||||
|
||||
TEST(UpdateRenderables, LoadRequiredIfIdealTileCantBeFound) {
|
||||
ActionLog log;
|
||||
MockSource source;
|
||||
auto getTileData = getTileDataFn(log, source.dataTiles);
|
||||
auto createTileData = createTileDataFn(log, source.dataTiles);
|
||||
auto retainTileData = retainTileDataFn(log);
|
||||
auto renderTile = renderTileFn(log);
|
||||
|
||||
source.zoomRange.max = 6;
|
||||
source.idealTiles.emplace(UnwrappedTileID{ 6, 0, 0 });
|
||||
|
||||
auto tile_6_6_0_0 = source.createTileData(OverscaledTileID{ 6, { 6, 0, 0 } });
|
||||
tile_6_6_0_0->triedOptional = true;
|
||||
tile_6_6_0_0->loaded = true;
|
||||
|
||||
algorithm::updateRenderables(getTileData, createTileData, retainTileData, renderTile,
|
||||
source.idealTiles, source.zoomRange, 6);
|
||||
EXPECT_EQ(ActionLog({
|
||||
GetTileDataAction{ { 6, { 6, 0, 0 } }, Found }, // ideal tile, not found
|
||||
RetainTileDataAction{ { 6, { 6, 0, 0 } }, Resource::Necessity::Required }, //
|
||||
GetTileDataAction{ { 7, { 6, 0, 0 } }, NotFound }, // overzoomed child
|
||||
GetTileDataAction{ { 5, { 5, 0, 0 } }, NotFound }, // ascent
|
||||
CreateTileDataAction{ { 5, { 5, 0, 0 } } },
|
||||
RetainTileDataAction{ { 5, { 5, 0, 0 } }, Resource::Necessity::Required },
|
||||
GetTileDataAction{ { 4, { 4, 0, 0 } }, NotFound }, // ...
|
||||
GetTileDataAction{ { 3, { 3, 0, 0 } }, NotFound }, // ...
|
||||
GetTileDataAction{ { 2, { 2, 0, 0 } }, NotFound }, // ...
|
||||
GetTileDataAction{ { 1, { 1, 0, 0 } }, NotFound }, // ...
|
||||
GetTileDataAction{ { 0, { 0, 0, 0 } }, NotFound }, // ...
|
||||
}),
|
||||
log);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user