summaryrefslogtreecommitdiff
path: root/indra/llui/llview.cpp
diff options
context:
space:
mode:
authorNat Goodspeed <nat@lindenlab.com>2009-10-17 12:21:22 -0400
committerNat Goodspeed <nat@lindenlab.com>2009-10-17 12:21:22 -0400
commit27cadfbe951abb2cf350d5a1c91876ac958d50cf (patch)
tree117ebf82fcd26552e0437189bec2d063dd59e1de /indra/llui/llview.cpp
parent2849175a302f26be03b5da404ef93363d42ed313 (diff)
DEV-40930: Introduce LLAppViewerListener "forceQuit" operation.
The bug was driven by the following sequence in llstartup.cpp: if(reason_response == "update" || reason_response == "optional") { // used to resend status event still containing "update", // erroneously instantiating a second forced-update // LLAlertDialog LLLoginInstance::getInstance()->disconnect(); // quit with an LLAlertDialog still on sModalStack used // to result in LL_ERRS LLAppViewer::instance()->forceQuit(); } I hope to be able to introduce a test script to verify the fix. That script would need to be able to call LLAppViewer::forceQuit() rather than requestQuit(), which is already available via LLAppViewerListener. At the same time, changed LLAppViewerListener to bind a functor to retrieve an LLAppViewer instance (namely LLAppViewer::instance) rather than an LLAppViewer*. Apparently the static instantiation of LLAppViewerListener was calling LLAppViewer::instance() too early, before things were ready, so the declaration was changed to pass NULL -- then in each method, call LLAppViewer::instance() if the bound pointer is NULL. Binding the LLAppViewer* is a Feathers tactic intended to avoid the need to reference the singleton. Binding a functor still leaves it up to the instantiating code to reference LLAppViewer::instance, while deferring the actual call to that method.
Diffstat (limited to 'indra/llui/llview.cpp')
0 files changed, 0 insertions, 0 deletions