summaryrefslogtreecommitdiff
path: root/indra/newview
diff options
context:
space:
mode:
authorTodd Stinson <stinson@lindenlab.com>2012-07-09 13:29:50 -0700
committerTodd Stinson <stinson@lindenlab.com>2012-07-09 13:29:50 -0700
commitd7f372d6bee42f405e0e3772ff8c30f4c1bf6612 (patch)
tree663d0f8bc3d725fd5d799aae250fa933d0523e40 /indra/newview
parent7a61717d879bd01931ded339a46c3ca31c6a28f5 (diff)
BUGFIX: Correcting a crash issue that was caused by the rebake navmesh callback handler unexpectedly changing the navmesh state.
Diffstat (limited to 'indra/newview')
-rw-r--r--indra/newview/llpanelpathfindingrebakenavmesh.cpp15
-rw-r--r--indra/newview/llpanelpathfindingrebakenavmesh.h3
2 files changed, 11 insertions, 7 deletions
diff --git a/indra/newview/llpanelpathfindingrebakenavmesh.cpp b/indra/newview/llpanelpathfindingrebakenavmesh.cpp
index 2c8c46c7bc..8df041f578 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 5fe581ec2f..48764f2aa7 100644
--- a/indra/newview/llpanelpathfindingrebakenavmesh.h
+++ b/indra/newview/llpanelpathfindingrebakenavmesh.h
@@ -66,7 +66,8 @@ private:
static LLPanelPathfindingRebakeNavmesh* getPanel();
- void setMode(ERebakeNavMeshMode pRebakeNavMeshMode);
+ void setMode(ERebakeNavMeshMode pRebakeNavMeshMode);
+ ERebakeNavMeshMode getMode() const;
void onNavMeshRebakeClick();