diff options
author | Nat Goodspeed <nat@lindenlab.com> | 2009-10-08 22:48:02 -0400 |
---|---|---|
committer | Nat Goodspeed <nat@lindenlab.com> | 2009-10-08 22:48:02 -0400 |
commit | a162496da9044e695bc306321da1fb278259b9c6 (patch) | |
tree | 2ee9a34e8d39c613be3684855bd90fe11a26cf06 /indra/llui | |
parent | de7c11d2917c0789faf5c8792100c082a401190a (diff) |
DEV-40930: At app shutdown, clear LLModalDialog::sModalStack. Otherwise, any
modal dialog still left open will crump on destruction with LL_ERRS. If we
don't want the user to shut down the app with a modal dialog open, we should
deal with it better than a popup that simply makes us look buggy.
Diffstat (limited to 'indra/llui')
-rw-r--r-- | indra/llui/llmodaldialog.cpp | 15 | ||||
-rw-r--r-- | indra/llui/llmodaldialog.h | 3 |
2 files changed, 15 insertions, 3 deletions
diff --git a/indra/llui/llmodaldialog.cpp b/indra/llui/llmodaldialog.cpp index f77ec5f4c7..387af05935 100644 --- a/indra/llui/llmodaldialog.cpp +++ b/indra/llui/llmodaldialog.cpp @@ -297,5 +297,16 @@ void LLModalDialog::onAppFocusGained() } } - - +void LLModalDialog::shutdownModals() +{ + // This method is only for use during app shutdown. ~LLModalDialog() + // checks sModalStack, and if the dialog instance is still there, it + // crumps with "Attempt to delete dialog while still in sModalStack!" But + // at app shutdown, all bets are off. If the user asks to shut down the + // app, we shouldn't have to care WHAT's open. Put differently, if a modal + // dialog is so crucial that we can't let the user terminate until s/he + // addresses it, we should reject a termination request. The current state + // of affairs is that we accept it, but then produce an llerrs popup that + // simply makes our software look unreliable. + sModalStack.clear(); +} diff --git a/indra/llui/llmodaldialog.h b/indra/llui/llmodaldialog.h index 9d716a1880..863572fb5a 100644 --- a/indra/llui/llmodaldialog.h +++ b/indra/llui/llmodaldialog.h @@ -73,7 +73,8 @@ public: static void onAppFocusGained(); static S32 activeCount() { return sModalStack.size(); } - + static void shutdownModals(); + protected: void centerOnScreen(); |