From 4de615d1ae2e63dffd36c1be9f5aa0681b34dc28 Mon Sep 17 00:00:00 2001
From: smix8 <52464204+smix8@users.noreply.github.com>
Date: Fri, 6 Dec 2024 16:20:59 +0100
Subject: [PATCH] Fix avoidance dirty flag regression

The dirty flag can also still be set by some legacy functions triggered by the agents and obstacles.
---
 modules/navigation/nav_map.cpp | 8 ++++++--
 1 file changed, 6 insertions(+), 2 deletions(-)

diff --git a/modules/navigation/nav_map.cpp b/modules/navigation/nav_map.cpp
index 1bd703238c9..739b031d061 100644
--- a/modules/navigation/nav_map.cpp
+++ b/modules/navigation/nav_map.cpp
@@ -948,14 +948,18 @@ void NavMap::_sync_dirty_map_update_requests() {
 
 void NavMap::_sync_dirty_avoidance_update_requests() {
 	// Sync NavAgents.
-	agents_dirty = sync_dirty_requests.agents.first();
+	if (!agents_dirty) {
+		agents_dirty = sync_dirty_requests.agents.first();
+	}
 	for (SelfList<NavAgent> *element = sync_dirty_requests.agents.first(); element; element = element->next()) {
 		element->self()->sync();
 	}
 	sync_dirty_requests.agents.clear();
 
 	// Sync NavObstacles.
-	obstacles_dirty = sync_dirty_requests.obstacles.first();
+	if (!obstacles_dirty) {
+		obstacles_dirty = sync_dirty_requests.obstacles.first();
+	}
 	for (SelfList<NavObstacle> *element = sync_dirty_requests.obstacles.first(); element; element = element->next()) {
 		element->self()->sync();
 	}