summaryrefslogtreecommitdiff
path: root/indra/newview
diff options
context:
space:
mode:
Diffstat (limited to 'indra/newview')
-rw-r--r--indra/newview/llappviewermacosx-delegate.mm18
-rw-r--r--indra/newview/llappviewermacosx-objc.h2
-rw-r--r--indra/newview/llappviewermacosx.cpp32
-rw-r--r--indra/newview/llviewerkeyboard.cpp2
4 files changed, 31 insertions, 23 deletions
diff --git a/indra/newview/llappviewermacosx-delegate.mm b/indra/newview/llappviewermacosx-delegate.mm
index 80cc1010e9..2e25997d32 100644
--- a/indra/newview/llappviewermacosx-delegate.mm
+++ b/indra/newview/llappviewermacosx-delegate.mm
@@ -23,17 +23,26 @@
frameTimer = nil;
setLLNSWindowRef([self window]);
- setLLOpenGLViewRef([self glview]);
+ //setLLOpenGLViewRef([self glview]);
if (initViewer())
{
- frameTimer = [NSTimer scheduledTimerWithTimeInterval:1.0/60 target:self selector:@selector(mainLoop) userInfo:nil repeats:YES];
+ frameTimer = [NSTimer scheduledTimerWithTimeInterval:0.0 target:self selector:@selector(mainLoop) userInfo:nil repeats:YES];
} else {
handleQuit();
}
}
-- (void) applicationWillTerminate:(NSNotification *)notification
+- (NSApplicationDelegateReply) applicationShouldTerminate:(NSApplication *)sender
{
+ if (!runMainLoop())
+ {
+ handleQuit();
+ return NSTerminateCancel;
+ } else {
+ [frameTimer release];
+ cleanupViewer();
+ return NSTerminateNow;
+ }
}
- (void) mainLoop
@@ -42,7 +51,8 @@
if (appExiting)
{
[frameTimer release];
- handleQuit();
+ cleanupViewer();
+ [[NSApplication sharedApplication] terminate:self];
}
}
diff --git a/indra/newview/llappviewermacosx-objc.h b/indra/newview/llappviewermacosx-objc.h
index 9ece6a1a6a..ed9017ca5d 100644
--- a/indra/newview/llappviewermacosx-objc.h
+++ b/indra/newview/llappviewermacosx-objc.h
@@ -16,4 +16,4 @@ bool initViewer();
void handleQuit();
bool runMainLoop();
void initMainLoop();
-void destroyMainLoop(); \ No newline at end of file
+void cleanupViewer(); \ No newline at end of file
diff --git a/indra/newview/llappviewermacosx.cpp b/indra/newview/llappviewermacosx.cpp
index a1c8b7699d..6e7b91347b 100644
--- a/indra/newview/llappviewermacosx.cpp
+++ b/indra/newview/llappviewermacosx.cpp
@@ -55,15 +55,6 @@ namespace
char** gArgV;
LLAppViewerMacOSX* gViewerAppPtr;
-
- OSErr AEQuitHandler(const AppleEvent *messagein, AppleEvent *reply, long refIn)
- {
- OSErr result = noErr;
-
- LLAppViewer::instance()->userQuit();
-
- return(result);
- }
}
bool initViewer()
@@ -95,26 +86,33 @@ bool initViewer()
void handleQuit()
{
- if(!LLApp::isError())
- {
- gViewerAppPtr->cleanup();
- }
-
- delete gViewerAppPtr;
- gViewerAppPtr = NULL;
+ LLAppViewer::instance()->userQuit();
}
bool runMainLoop()
{
bool ret = LLApp::isQuitting();
- if (!ret)
+ if (!ret && gViewerAppPtr != NULL)
{
ret = gViewerAppPtr->mainLoop();
+ } else {
+ ret = true;
}
return ret;
}
+void cleanupViewer()
+{
+ if(!LLApp::isError())
+ {
+ gViewerAppPtr->cleanup();
+ }
+
+ delete gViewerAppPtr;
+ gViewerAppPtr = NULL;
+}
+
int main( int argc, char **argv )
{
// Store off the command line args for use later.
diff --git a/indra/newview/llviewerkeyboard.cpp b/indra/newview/llviewerkeyboard.cpp
index 6d91dad70e..92d8f2937e 100644
--- a/indra/newview/llviewerkeyboard.cpp
+++ b/indra/newview/llviewerkeyboard.cpp
@@ -654,7 +654,6 @@ BOOL LLViewerKeyboard::modeFromString(const std::string& string, S32 *mode)
BOOL LLViewerKeyboard::handleKey(KEY translated_key, MASK translated_mask, BOOL repeated)
{
LL_INFOS("Keyboard Handling") << "Handling key " << translated_key << LL_ENDL;
- LL_INFOS("Keyboard Handling") << "Keyboard has focus? " << gFocusMgr.getKeyboardFocus() << LL_ENDL;
// check for re-map
EKeyboardMode mode = gViewerKeyboard.getMode();
U32 keyidx = (translated_mask<<16) | translated_key;
@@ -677,6 +676,7 @@ BOOL LLViewerKeyboard::handleKey(KEY translated_key, MASK translated_mask, BOOL
if(mKeysSkippedByUI.find(translated_key) != mKeysSkippedByUI.end())
{
mKeyHandledByUI[translated_key] = FALSE;
+ LL_INFOS("Keyboard Handling") << "Key wasn't handled by UI!" << LL_ENDL;
}
else
{