diff options
author | Richard Linden <none@none> | 2012-02-10 20:09:48 -0800 |
---|---|---|
committer | Richard Linden <none@none> | 2012-02-10 20:09:48 -0800 |
commit | 51a8134f62ff0705ede2534945e808ccbd9d6b7e (patch) | |
tree | 6a6679ebe20229dada9ce6dbf6f219dd1c2d0753 /indra/newview | |
parent | 5cfedfe4db3639863cf0cd0ae90e8b6a58a221dd (diff) |
EXP-1885 FIX Viewer crashes when receiving multiple inventory offer notifications
Diffstat (limited to 'indra/newview')
-rw-r--r-- | indra/newview/llscreenchannel.cpp | 10 | ||||
-rw-r--r-- | indra/newview/lltoast.cpp | 13 |
2 files changed, 17 insertions, 6 deletions
diff --git a/indra/newview/llscreenchannel.cpp b/indra/newview/llscreenchannel.cpp index a0f146e506..d340b304ca 100644 --- a/indra/newview/llscreenchannel.cpp +++ b/indra/newview/llscreenchannel.cpp @@ -798,6 +798,7 @@ void LLScreenChannel::showToastsTop() } // Dismiss toasts we don't have space for (STORM-391). + std::vector<LLToast*> toasts_to_hide; if(it != mToastList.rend()) { mHiddenToastsNum = 0; @@ -806,10 +807,17 @@ void LLScreenChannel::showToastsTop() LLToast* toast = it->getToast(); if (toast) { - toast->hide(); + toasts_to_hide.push_back(toast); } } } + + for (std::vector<LLToast*>::iterator it = toasts_to_hide.begin(), end_it = toasts_to_hide.end(); + it != end_it; + ++it) + { + (*it)->hide(); + } } //-------------------------------------------------------------------------- diff --git a/indra/newview/lltoast.cpp b/indra/newview/lltoast.cpp index cdc611f7af..0eec7f0afd 100644 --- a/indra/newview/lltoast.cpp +++ b/indra/newview/lltoast.cpp @@ -180,11 +180,14 @@ LLToast::~LLToast() //-------------------------------------------------------------------------- void LLToast::hide() { - setVisible(FALSE); - setFading(false); - mTimer->stop(); - mIsHidden = true; - mOnFadeSignal(this); + if (!mIsHidden) + { + setVisible(FALSE); + setFading(false); + mTimer->stop(); + mIsHidden = true; + mOnFadeSignal(this); + } } void LLToast::onFocusLost() |