diff --git a/indra/newview/llagentcamera.cpp b/indra/newview/llagentcamera.cpp index fd8797481d0780bf59e4199e7b5444af10dcedc1..c9074d1a952b40011120002ccaadb6787237b33e 100644 --- a/indra/newview/llagentcamera.cpp +++ b/indra/newview/llagentcamera.cpp @@ -282,6 +282,11 @@ LLAgentCamera::~LLAgentCamera() //----------------------------------------------------------------------------- void LLAgentCamera::resetView(BOOL reset_camera, BOOL change_camera) { + if (gDisconnected) + { + return; + } + if (gAgent.getAutoPilot()) { gAgent.stopAutoPilot(TRUE); diff --git a/indra/newview/llappviewer.cpp b/indra/newview/llappviewer.cpp index b704bf84a1a33a898ab8012008041bc66031e86c..228dd36e536a0e5c92713dda434185969c3cedb0 100644 --- a/indra/newview/llappviewer.cpp +++ b/indra/newview/llappviewer.cpp @@ -1719,6 +1719,11 @@ bool LLAppViewer::cleanup() disconnectViewer(); LL_INFOS() << "Viewer disconnected" << LL_ENDL; + + if (gKeyboard) + { + gKeyboard->resetKeys(); + } display_cleanup(); diff --git a/indra/newview/llviewerkeyboard.cpp b/indra/newview/llviewerkeyboard.cpp index e930eb20d3cf185affae53bb182d622dc0a0b2d3..a14041717f26a52528cb46539751cd7f06da966f 100644 --- a/indra/newview/llviewerkeyboard.cpp +++ b/indra/newview/llviewerkeyboard.cpp @@ -986,6 +986,11 @@ EKeyboardMode LLViewerKeyboard::getMode() // Called from scanKeyboard. void LLViewerKeyboard::scanKey(KEY key, BOOL key_down, BOOL key_up, BOOL key_level) { + if (LLApp::isExiting()) + { + return; + } + S32 mode = getMode(); // Consider keyboard scanning as NOT mouse event. JC MASK mask = gKeyboard->currentMask(FALSE);