From ca0f1644063f3e6c3cb708d385c7ead2567e7166 Mon Sep 17 00:00:00 2001 From: Jochen Topf Date: Tue, 25 Oct 2022 09:31:25 +0200 Subject: [PATCH 1/2] Use box_t::min/max() functions in expire code Also uses std::clamp() --- src/expire-tiles.cpp | 30 +++++++++++------------------- 1 file changed, 11 insertions(+), 19 deletions(-) diff --git a/src/expire-tiles.cpp b/src/expire-tiles.cpp index 259182d2a..7fb44a551 100644 --- a/src/expire-tiles.cpp +++ b/src/expire-tiles.cpp @@ -200,26 +200,18 @@ int expire_tiles::from_bbox(geom::box_t const &box) } /* Convert the box's Mercator coordinates into tile coordinates */ - auto const tmp_min = coords_to_tile({box.min_x(), box.max_y()}); - int min_tile_x = tmp_min.x() - tile_expiry_leeway; - int min_tile_y = tmp_min.y() - tile_expiry_leeway; + auto const tmp_min = coords_to_tile(box.min()); + int const min_tile_x = + std::clamp(int(tmp_min.x() - tile_expiry_leeway), 0, m_map_width); + int const min_tile_y = + std::clamp(int(tmp_min.y() - tile_expiry_leeway), 0, m_map_width); + + auto const tmp_max = coords_to_tile(box.max()); + int const max_tile_x = + std::clamp(int(tmp_max.x() + tile_expiry_leeway), 0, m_map_width); + int const max_tile_y = + std::clamp(int(tmp_max.y() + tile_expiry_leeway), 0, m_map_width); - auto const tmp_max = coords_to_tile({box.max_x(), box.min_y()}); - int max_tile_x = tmp_max.x() + tile_expiry_leeway; - int max_tile_y = tmp_max.y() + tile_expiry_leeway; - - if (min_tile_x < 0) { - min_tile_x = 0; - } - if (min_tile_y < 0) { - min_tile_y = 0; - } - if (max_tile_x > m_map_width) { - max_tile_x = m_map_width; - } - if (max_tile_y > m_map_width) { - max_tile_y = m_map_width; - } for (int iterator_x = min_tile_x; iterator_x <= max_tile_x; ++iterator_x) { uint32_t const norm_x = normalise_tile_x_coord(iterator_x); for (int iterator_y = min_tile_y; iterator_y <= max_tile_y; From 1b5c378a3288c2020749ddab97c7bc745cc4b496 Mon Sep 17 00:00:00 2001 From: Jochen Topf Date: Tue, 25 Oct 2022 09:58:12 +0200 Subject: [PATCH 2/2] Remove superflous check The code in expire_from_result() will also do nothing if called with empty results. --- src/output-flex.cpp | 5 ----- 1 file changed, 5 deletions(-) diff --git a/src/output-flex.cpp b/src/output-flex.cpp index 6b60f4f85..3a680f0b2 100644 --- a/src/output-flex.cpp +++ b/src/output-flex.cpp @@ -1910,11 +1910,6 @@ void output_flex_t::delete_from_table(table_connection_t *table_connection, if (m_expire.enabled() && table_connection->table().has_geom_column()) { auto const result = table_connection->get_geom_by_id(type, id); - - if (result.num_tuples() == 0) { - return; - } - expire_from_result(&m_expire, result); }