summaryrefslogtreecommitdiff
path: root/indra/newview/llspeakers.cpp
diff options
context:
space:
mode:
authorBrad Payne (Vir Linden) <vir@lindenlab.com>2010-02-04 10:22:28 -0500
committerBrad Payne (Vir Linden) <vir@lindenlab.com>2010-02-04 10:22:28 -0500
commit76cf7ebf7037c2e579861c64c38fc24bde165669 (patch)
tree72152ff4ae4cb5f6422cd8c4c9830b4f76c3aa21 /indra/newview/llspeakers.cpp
parentd2d192060993d938a2fd131f8872a60b678e4a04 (diff)
parent9a15ee8a91a12020b22625873c280837739f946c (diff)
merge
Diffstat (limited to 'indra/newview/llspeakers.cpp')
-rw-r--r--indra/newview/llspeakers.cpp17
1 files changed, 10 insertions, 7 deletions
diff --git a/indra/newview/llspeakers.cpp b/indra/newview/llspeakers.cpp
index 6f9a1ccdbe..786fa24e65 100644
--- a/indra/newview/llspeakers.cpp
+++ b/indra/newview/llspeakers.cpp
@@ -205,7 +205,7 @@ void LLSpeakersDelayActionsStorage::setActionTimer(const LLUUID& speaker_id)
}
}
-void LLSpeakersDelayActionsStorage::unsetActionTimer(const LLUUID& speaker_id)
+void LLSpeakersDelayActionsStorage::unsetActionTimer(const LLUUID& speaker_id, bool delete_it)
{
if (mActionTimersMap.size() == 0) return;
@@ -213,7 +213,10 @@ void LLSpeakersDelayActionsStorage::unsetActionTimer(const LLUUID& speaker_id)
if (it_speaker != mActionTimersMap.end())
{
- delete it_speaker->second;
+ if (delete_it)
+ {
+ delete it_speaker->second;
+ }
mActionTimersMap.erase(it_speaker);
}
}
@@ -230,16 +233,15 @@ void LLSpeakersDelayActionsStorage::removeAllTimers()
bool LLSpeakersDelayActionsStorage::onTimerActionCallback(const LLUUID& speaker_id)
{
- unsetActionTimer(speaker_id);
+ bool delete_it = false; // we're *in* this timer, return true to delete it, don't manually delete it
+ unsetActionTimer(speaker_id, delete_it);
if (mActionCallback)
{
mActionCallback(speaker_id);
}
- // do not return true to avoid deleting of an timer twice:
- // in LLSpeakersDelayActionsStorage::unsetActionTimer() & LLEventTimer::updateClass()
- return false;
+ return true;
}
@@ -291,7 +293,8 @@ LLPointer<LLSpeaker> LLSpeakerMgr::setSpeaker(const LLUUID& id, const std::strin
}
}
- mSpeakerDelayRemover->unsetActionTimer(speakerp->mID);
+ bool delete_it = true;
+ mSpeakerDelayRemover->unsetActionTimer(speakerp->mID, delete_it);
return speakerp;
}