diff options
Diffstat (limited to 'indra')
| -rwxr-xr-x | indra/llwindow/llwindowmacosx-objc.h | 1 | ||||
| -rwxr-xr-x | indra/newview/llappviewermacosx.cpp | 50 | 
2 files changed, 33 insertions, 18 deletions
| diff --git a/indra/llwindow/llwindowmacosx-objc.h b/indra/llwindow/llwindowmacosx-objc.h index f02052ca6a..e6e8f27f53 100755 --- a/indra/llwindow/llwindowmacosx-objc.h +++ b/indra/llwindow/llwindowmacosx-objc.h @@ -53,6 +53,7 @@ bool runMainLoop();  void initMainLoop();  void cleanupViewer();  void handleUrl(const char* url); +void dispatchUrl(std::string url);  /* Defined in llwindowmacosx-objc.mm: */  int createNSApp(int argc, const char **argv); diff --git a/indra/newview/llappviewermacosx.cpp b/indra/newview/llappviewermacosx.cpp index 56154a2de3..09227806fd 100755 --- a/indra/newview/llappviewermacosx.cpp +++ b/indra/newview/llappviewermacosx.cpp @@ -62,9 +62,10 @@ namespace  	// They are not used immediately by the app.  	int gArgC;  	char** gArgV; -	LLAppViewerMacOSX* gViewerAppPtr; +	LLAppViewerMacOSX* gViewerAppPtr = NULL;      void (*gOldTerminateHandler)() = NULL; +    std::string gHandleSLURL;  }  static void exceptionTerminateHandler() @@ -107,7 +108,11 @@ bool initViewer()  	{  		LL_WARNS() << "Application init failed." << LL_ENDL;  	} - +    else if (!gHandleSLURL.empty()) +    { +        dispatchUrl(gHandleSLURL); +        gHandleSLURL = ""; +    }  	return ok;  } @@ -393,22 +398,31 @@ bool LLAppViewerMacOSX::getMasterSystemAudioMute()  void handleUrl(const char* url_utf8)  { -    if (url_utf8) +    if (url_utf8 && gViewerAppPtr)      { -        std::string url = url_utf8; -	    // Safari 3.2 silently mangles secondlife:///app/ URLs into -	    // secondlife:/app/ (only one leading slash). -	    // Fix them up to meet the URL specification. JC -	    const std::string prefix = "secondlife:/app/"; -	    std::string test_prefix = url.substr(0, prefix.length()); -	    LLStringUtil::toLower(test_prefix); -	    if (test_prefix == prefix) -	    { -		    url.replace(0, prefix.length(), "secondlife:///app/"); -	    } -		 -	    LLMediaCtrl* web = NULL; -    	const bool trusted_browser = false; -	    LLURLDispatcher::dispatch(url, "", web, trusted_browser); +        gHandleSLURL = ""; +        dispatchUrl(url_utf8);      } +    else if (url_utf8) +    { +        gHandleSLURL = url_utf8; +    } +} + +void dispatchUrl(std::string url) +{ +    // Safari 3.2 silently mangles secondlife:///app/ URLs into +    // secondlife:/app/ (only one leading slash). +    // Fix them up to meet the URL specification. JC +    const std::string prefix = "secondlife:/app/"; +    std::string test_prefix = url.substr(0, prefix.length()); +    LLStringUtil::toLower(test_prefix); +    if (test_prefix == prefix) +    { +        url.replace(0, prefix.length(), "secondlife:///app/"); +    } +     +    LLMediaCtrl* web = NULL; +    const bool trusted_browser = false; +    LLURLDispatcher::dispatch(url, "", web, trusted_browser);  } | 
