summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSeth ProductEngine <slitovchuk@productengine.com>2012-06-13 19:26:17 +0300
committerSeth ProductEngine <slitovchuk@productengine.com>2012-06-13 19:26:17 +0300
commitb50349ab8490c9b48e9cf89b8de186b528d90e60 (patch)
tree692fe78ab1379332539698710bb2852b19d58eba
parent9993fa550ab3716e583a6d5699f27974c3a95eb9 (diff)
CHUI-120 WIP Fix for crash after closing the chat floater.
-rw-r--r--indra/newview/llimconversation.cpp4
-rw-r--r--indra/newview/llimfloater.cpp4
-rw-r--r--indra/newview/llnearbychat.cpp4
3 files changed, 12 insertions, 0 deletions
diff --git a/indra/newview/llimconversation.cpp b/indra/newview/llimconversation.cpp
index 99b28255cd..b45fc63825 100644
--- a/indra/newview/llimconversation.cpp
+++ b/indra/newview/llimconversation.cpp
@@ -114,6 +114,10 @@ BOOL LLIMConversation::postBuild()
BOOL LLIMConversation::tick()
{
+ // This check is needed until LLFloaterReg::removeInstance() is synchronized with deleting the floater
+ // via LLMortician::updateClass(), to avoid calling dead instances. See LLFloater::destroy().
+ if (isDead()) return false;
+
// Need to resort the participant list if it's in sort by recent speaker order.
if (mParticipantList)
{
diff --git a/indra/newview/llimfloater.cpp b/indra/newview/llimfloater.cpp
index dcd19b5856..3458e740e7 100644
--- a/indra/newview/llimfloater.cpp
+++ b/indra/newview/llimfloater.cpp
@@ -487,6 +487,10 @@ void LLIMFloater::onAvatarNameCache(const LLUUID& agent_id,
// virtual
BOOL LLIMFloater::tick()
{
+ // This check is needed until LLFloaterReg::removeInstance() is synchronized with deleting the floater
+ // via LLMortician::updateClass(), to avoid calling dead instances. See LLFloater::destroy().
+ if (isDead()) return false;
+
BOOL parents_retcode = LLIMConversation::tick();
if ( mMeTyping )
diff --git a/indra/newview/llnearbychat.cpp b/indra/newview/llnearbychat.cpp
index 2f5a3a8767..cd181ce865 100644
--- a/indra/newview/llnearbychat.cpp
+++ b/indra/newview/llnearbychat.cpp
@@ -404,6 +404,10 @@ void LLNearbyChat::showTranslationCheckbox(BOOL show)
BOOL LLNearbyChat::tick()
{
+ // This check is needed until LLFloaterReg::removeInstance() is synchronized with deleting the floater
+ // via LLMortician::updateClass(), to avoid calling dead instances. See LLFloater::destroy().
+ if (isDead()) return false;
+
BOOL parents_retcode = LLIMConversation::tick();
displaySpeakingIndicator();