summaryrefslogtreecommitdiff
path: root/indra/newview
diff options
context:
space:
mode:
authorGeenz <geenz@geenzo.com>2013-01-01 11:32:53 -0500
committerGeenz <geenz@geenzo.com>2013-01-01 11:32:53 -0500
commitddb48d51d996b18063b111faa3b7e709160074d9 (patch)
treef64cab16299cec07756dea34823ab3749b4d1ec3 /indra/newview
parent7a1593c083a7ed6e3d6589d5dd656354d748b8ce (diff)
More things in this commit:
- Removed the callback system in favor of simply defining functions in a header to later be implemented in whichever file is most convenient for what we want to do (i.e., calling LLWindow callbacks within LLWindowMacOSX, setting cursors in llwindowmacosx-objc.mm, etc.) - Viewer shutdown now works appropriately - Added a bit of debugging code to test if a key has been handled by the UI or not (useful for tracking down the mystery of the enter key not being handled) - Setup a cocoa quit handler within the application delegate that intercepts any termination requests
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
{