From d7f372d6bee42f405e0e3772ff8c30f4c1bf6612 Mon Sep 17 00:00:00 2001 From: Todd Stinson <stinson@lindenlab.com> Date: Mon, 9 Jul 2012 13:29:50 -0700 Subject: [PATCH] BUGFIX: Correcting a crash issue that was caused by the rebake navmesh callback handler unexpectedly changing the navmesh state. --- indra/cmake/LLPhysicsExtensions.cmake | 2 +- indra/newview/llpanelpathfindingrebakenavmesh.cpp | 15 +++++++++------ indra/newview/llpanelpathfindingrebakenavmesh.h | 3 ++- 3 files changed, 12 insertions(+), 8 deletions(-) diff --git a/indra/cmake/LLPhysicsExtensions.cmake b/indra/cmake/LLPhysicsExtensions.cmake index 2d26360d79e..c5aff4dadfb 100644 --- a/indra/cmake/LLPhysicsExtensions.cmake +++ b/indra/cmake/LLPhysicsExtensions.cmake @@ -22,7 +22,7 @@ find_library(LL_PHYSICS_RELWITHDEBINFO_LIB ${LLPHYSICS_EXTENSIONS_LIB_NAME} PATH set(LLPHYSICS_LIBRARIES debug ${LL_PHYSICS_DEBUG_LIB} - optimized ${LL_PHYSICS_RELEASE_LIB} + optimized ${LL_PHYSICS_RELWITHDEBINFO_LIB} ) if (LINUX) diff --git a/indra/newview/llpanelpathfindingrebakenavmesh.cpp b/indra/newview/llpanelpathfindingrebakenavmesh.cpp index 2c8c46c7bce..8df041f5781 100644 --- a/indra/newview/llpanelpathfindingrebakenavmesh.cpp +++ b/indra/newview/llpanelpathfindingrebakenavmesh.cpp @@ -159,6 +159,11 @@ void LLPanelPathfindingRebakeNavmesh::setMode(ERebakeNavMeshMode pRebakeNavMeshM mRebakeNavMeshMode = pRebakeNavMeshMode; } +LLPanelPathfindingRebakeNavmesh::ERebakeNavMeshMode LLPanelPathfindingRebakeNavmesh::getMode() const +{ + return mRebakeNavMeshMode; +} + void LLPanelPathfindingRebakeNavmesh::onNavMeshRebakeClick() { setMode(kRebakeNavMesh_RequestSent); @@ -172,16 +177,14 @@ void LLPanelPathfindingRebakeNavmesh::handleAgentState(BOOL pCanRebakeRegion) void LLPanelPathfindingRebakeNavmesh::handleRebakeNavMeshResponse(bool pResponseStatus) { - setMode(pResponseStatus ? kRebakeNavMesh_InProgress : kRebakeNavMesh_Default); - if (!pResponseStatus) + if (getMode() == kRebakeNavMesh_RequestSent) { - LLNotificationsUtil::add("PathfindingCannotRebakeNavmesh"); + setMode(pResponseStatus ? kRebakeNavMesh_InProgress : kRebakeNavMesh_Default); } - LLViewerRegion *currentRegion = gAgent.getRegion(); - if (currentRegion != NULL) + if (!pResponseStatus) { - LLPathfindingManager::getInstance()->requestGetNavMeshForRegion(currentRegion, true); + LLNotificationsUtil::add("PathfindingCannotRebakeNavmesh"); } } diff --git a/indra/newview/llpanelpathfindingrebakenavmesh.h b/indra/newview/llpanelpathfindingrebakenavmesh.h index 5fe581ec2f5..48764f2aa77 100644 --- a/indra/newview/llpanelpathfindingrebakenavmesh.h +++ b/indra/newview/llpanelpathfindingrebakenavmesh.h @@ -66,7 +66,8 @@ class LLPanelPathfindingRebakeNavmesh : public LLPanel static LLPanelPathfindingRebakeNavmesh* getPanel(); - void setMode(ERebakeNavMeshMode pRebakeNavMeshMode); + void setMode(ERebakeNavMeshMode pRebakeNavMeshMode); + ERebakeNavMeshMode getMode() const; void onNavMeshRebakeClick(); -- GitLab