|
1 | 1 | /*
|
2 |
| - * Copyright (C) 2020-2021 HERE Europe B.V. |
| 2 | + * Copyright (C) 2020-2024 HERE Europe B.V. |
3 | 3 | *
|
4 | 4 | * Licensed under the Apache License, Version 2.0 (the "License");
|
5 | 5 | * you may not use this file except in compliance with the License.
|
@@ -49,7 +49,14 @@ ReleaseDependencyResolver::ReleaseDependencyResolver(
|
49 | 49 | const cache::KeyValueCache::KeyListType&
|
50 | 50 | ReleaseDependencyResolver::GetKeysToRelease(const TileKeys& tiles) {
|
51 | 51 | keys_to_release_.clear();
|
52 |
| - for (const auto& tile : tiles) { |
| 52 | + |
| 53 | + requested_tiles_ = tiles; |
| 54 | + std::sort(requested_tiles_.begin(), requested_tiles_.end()); |
| 55 | + requested_tiles_.erase( |
| 56 | + std::unique(requested_tiles_.begin(), requested_tiles_.end()), |
| 57 | + requested_tiles_.end()); |
| 58 | + |
| 59 | + for (const auto& tile : requested_tiles_) { |
53 | 60 | ProcessTileKey(tile);
|
54 | 61 | }
|
55 | 62 | return keys_to_release_;
|
@@ -134,7 +141,15 @@ void ReleaseDependencyResolver::ProcessQuadTreeCache(
|
134 | 141 | cached_tree)) {
|
135 | 142 | TilesDataKeysType protected_keys =
|
136 | 143 | CheckProtectedTilesInQuad(cached_tree, tile, add_data_handle_key);
|
137 |
| - if (protected_keys.empty()) { |
| 144 | + |
| 145 | + const bool all_keys_requested = std::all_of( |
| 146 | + protected_keys.begin(), protected_keys.end(), |
| 147 | + [&](const TilesDataKeysType::value_type& key) { |
| 148 | + return std::binary_search(requested_tiles_.begin(), |
| 149 | + requested_tiles_.end(), key.first); |
| 150 | + }); |
| 151 | + |
| 152 | + if (protected_keys.empty() || all_keys_requested) { |
138 | 153 | // no other tiles are protected, can add quad tree to release list
|
139 | 154 | keys_to_release_.emplace_back(cache::KeyGenerator::CreateQuadTreeKey(
|
140 | 155 | catalog_, layer_id_, root_quad_key, version_, kQuadTreeDepth));
|
|
0 commit comments