From 8b044f823ff13ceccfbff21e96e0832c14132a4c Mon Sep 17 00:00:00 2001 From: Adam Rohdin Date: Mon, 29 May 2023 16:24:11 +0200 Subject: [PATCH] Tile with only "noDataValue" no longer reports as status Failure Due to this change Tiles with only "noDataValue" won't get re-added into the job queue forever. Solves issue where height data did not display for underlaying heightmaps. --- modules/globebrowsing/src/basictypes.h | 1 + modules/globebrowsing/src/rawtiledatareader.cpp | 4 +--- .../src/tileprovider/defaulttileprovider.cpp | 9 ++++++++- 3 files changed, 10 insertions(+), 4 deletions(-) diff --git a/modules/globebrowsing/src/basictypes.h b/modules/globebrowsing/src/basictypes.h index 6655d2611a..4e7bd94e3f 100644 --- a/modules/globebrowsing/src/basictypes.h +++ b/modules/globebrowsing/src/basictypes.h @@ -104,6 +104,7 @@ struct TileMetaData { std::array maxValues; std::array minValues; std::array hasMissingData; + bool allMissingData = false; uint8_t nValues = 0; }; diff --git a/modules/globebrowsing/src/rawtiledatareader.cpp b/modules/globebrowsing/src/rawtiledatareader.cpp index d3f00fe0ea..01ccd67694 100644 --- a/modules/globebrowsing/src/rawtiledatareader.cpp +++ b/modules/globebrowsing/src/rawtiledatareader.cpp @@ -977,9 +977,7 @@ TileMetaData RawTileDataReader::tileMetaData(RawTile& rawTile, } } - if (allIsMissing) { - rawTile.error = RawTile::ReadError::Failure; - } + ppData.allMissingData = allIsMissing; return ppData; } diff --git a/modules/globebrowsing/src/tileprovider/defaulttileprovider.cpp b/modules/globebrowsing/src/tileprovider/defaulttileprovider.cpp index 60bb918b4e..0ed4601d23 100644 --- a/modules/globebrowsing/src/tileprovider/defaulttileprovider.cpp +++ b/modules/globebrowsing/src/tileprovider/defaulttileprovider.cpp @@ -251,9 +251,16 @@ Tile::Status DefaultTileProvider::tileStatus(const TileIndex& index) { .tileIndex = index, .providerID = uniqueIdentifier }; + cache::MemoryAwareTileCache* tileCache = global::moduleEngine->module()->tileCache(); - return tileCache->get(key).status; + + Tile t = tileCache->get(key); + if (t.metaData.has_value() && t.metaData->allMissingData) { + return Tile::Status::OutOfRange; + } + + return t.status; } TileDepthTransform DefaultTileProvider::depthTransform() {