diff --git a/src/OpenStreetMap-esp32.cpp b/src/OpenStreetMap-esp32.cpp index 5f1c575..de007cc 100644 --- a/src/OpenStreetMap-esp32.cpp +++ b/src/OpenStreetMap-esp32.cpp @@ -225,6 +225,15 @@ void OpenStreetMap::makeJobList(const tileList &requiredTiles, std::vector(y) && job.z == zoom; }); + if (existing != jobs.end()) + { + tilePointers.push_back(existing->tile->buffer); // reuse buffer from already queued job + continue; + } + CachedTile *tileToReplace = findUnusedTile(requiredTiles, zoom); if (!tileToReplace) { @@ -232,8 +241,8 @@ void OpenStreetMap::makeJobList(const tileList &requiredTiles, std::vectorbuffer); // push_back the still-to-download tile ptr - jobs.push_back({x, static_cast(y), zoom, tileToReplace}); // push_back tile ptr to the job list + tilePointers.push_back(tileToReplace->buffer); // store buffer for rendering + jobs.push_back({x, static_cast(y), zoom, tileToReplace}); // queue job } }