diff --git a/indra/llcommon/llapp.cpp b/indra/llcommon/llapp.cpp index bc3e7196d..69f26a253 100644 --- a/indra/llcommon/llapp.cpp +++ b/indra/llcommon/llapp.cpp @@ -311,18 +311,43 @@ LLSD LLApp::getOptionData(OptionPriority level) return mOptions[level]; } +#if LL_WINDOWS +//The following code is needed for 32-bit apps on 64-bit windows to keep it from eating +//crashes. It is a lovely undocumented 'feature' in SP1 of Windows 7. An excellent +//in-depth article on the issue may be found here: http://randomascii.wordpress.com/2012/07/05/when-even-crashing-doesn-work/ +void EnableCrashingOnCrashes() +{ + typedef BOOL (WINAPI *tGetPolicy)(LPDWORD lpFlags); + typedef BOOL (WINAPI *tSetPolicy)(DWORD dwFlags); + const DWORD EXCEPTION_SWALLOWING = 0x1; + + HMODULE kernel32 = LoadLibraryA("kernel32.dll"); + tGetPolicy pGetPolicy = (tGetPolicy)GetProcAddress(kernel32, + "GetProcessUserModeExceptionPolicy"); + tSetPolicy pSetPolicy = (tSetPolicy)GetProcAddress(kernel32, + "SetProcessUserModeExceptionPolicy"); + if (pGetPolicy && pSetPolicy) + { + DWORD dwFlags; + if (pGetPolicy(&dwFlags)) + { + // Turn off the filter + pSetPolicy(dwFlags & ~EXCEPTION_SWALLOWING); + } + } +} +#endif + void LLApp::setupErrorHandling() { // Error handling is done by starting up an error handling thread, which just sleeps and // occasionally checks to see if the app is in an error state, and sees if it needs to be run. #if LL_WINDOWS - // Windows doesn't have the same signal handling mechanisms as UNIX, thus APR doesn't provide - // a signal handling thread implementation. - // What we do is install an unhandled exception handler, which will try to do the right thing - // in the case of an error (generate a minidump) #if LL_SEND_CRASH_REPORTS + EnableCrashingOnCrashes(); + // This sets a callback to handle w32 signals to the console window. // The viewer shouldn't be affected, sicne its a windowed app. SetConsoleCtrlHandler( (PHANDLER_ROUTINE) ConsoleCtrlHandler, TRUE); diff --git a/indra/llrender/llgl.cpp b/indra/llrender/llgl.cpp index 5a0668ef3..012630f22 100644 --- a/indra/llrender/llgl.cpp +++ b/indra/llrender/llgl.cpp @@ -451,6 +451,7 @@ LLGLManager::LLGLManager() : mIsATI(FALSE), mIsNVIDIA(FALSE), mIsIntel(FALSE), + mIsHD3K(FALSE), mIsGF2or4MX(FALSE), mIsGF3(FALSE), mIsGFFX(FALSE), @@ -606,20 +607,18 @@ bool LLGLManager::initGL() LLImageGL::sCompressTextures = false; } -#if LL_WINDOWS - bool mIsHD3K(false); -#endif // Trailing space necessary to keep "nVidia Corpor_ati_on" cards // from being recognized as ATI. - if (mGLVendor.substr(0,4) == "ATI ") + if (mGLVendor.substr(0,4) == "ATI " +//#if LL_LINUX +// // The Mesa-based drivers put this in the Renderer string, +// // not the Vendor string. +// || mGLRenderer.find("AMD") != std::string::npos +//#endif //LL_LINUX + ) { mGLVendorShort = "ATI"; - // "mobile" appears to be unused, and this code was causing warnings. - //BOOL mobile = FALSE; - //if (mGLRenderer.find("MOBILITY") != std::string::npos) - //{ - // mobile = TRUE; - //} + // *TODO: Fix this? mIsATI = TRUE; #if LL_WINDOWS && !LL_MESA_HEADLESS @@ -734,12 +733,11 @@ bool LLGLManager::initGL() if (mHasVertexShader) { //According to the spec, the resulting value should never be less than 512. We need at least 1024 to use skinned shaders. -#if LL_WINDOWS - if (mIsHD3K) - mGLMaxVertexUniformComponents = 4096; - else -#endif glGetIntegerv(GL_MAX_VERTEX_UNIFORM_COMPONENTS_ARB, &mGLMaxVertexUniformComponents); + if (mIsHD3K) + { + mGLMaxVertexUniformComponents = llmax(mGLMaxVertexUniformComponents, 4096); + } } if (LLRender::sGLCoreProfile) diff --git a/indra/llrender/llgl.h b/indra/llrender/llgl.h index 36650b442..b3d7faa12 100644 --- a/indra/llrender/llgl.h +++ b/indra/llrender/llgl.h @@ -120,6 +120,7 @@ public: BOOL mIsATI; BOOL mIsNVIDIA; BOOL mIsIntel; + BOOL mIsHD3K; BOOL mIsGF2or4MX; BOOL mIsGF3; BOOL mIsGFFX; diff --git a/indra/llui/lltexteditor.cpp b/indra/llui/lltexteditor.cpp index 57ef25acc..208cb1ed4 100644 --- a/indra/llui/lltexteditor.cpp +++ b/indra/llui/lltexteditor.cpp @@ -362,6 +362,7 @@ LLTextEditor::LLTextEditor( menu->setCanTearOff(FALSE); menu->setVisible(FALSE); mPopupMenuHandle = menu->getHandle(); + setCommitCallback(boost::bind(&LLTextEditor::setControlValue, this, _2)); } @@ -4820,6 +4821,10 @@ LLView* LLTextEditor::fromXML(LLXMLNodePtr node, LLView *parent, LLUICtrlFactory node->getAttributeBOOL("hide_scrollbar",hide_scrollbar); text_editor->setHideScrollbarForShortDocs(hide_scrollbar); + BOOL commit_on_focus_lost = FALSE; + node->getAttributeBOOL("commit_on_focus_lost",commit_on_focus_lost); + text_editor->setCommitOnFocusLost(commit_on_focus_lost); + text_editor->initFromXML(node, parent); return text_editor; diff --git a/indra/newview/llstartup.cpp b/indra/newview/llstartup.cpp index b4a50373a..4a6463bfd 100644 --- a/indra/newview/llstartup.cpp +++ b/indra/newview/llstartup.cpp @@ -4174,13 +4174,14 @@ bool process_login_success_response(std::string& password, U32& first_sim_size_x gCloudTextureID = id; } #endif - // set the location of the Agent Appearance service, from which we can request - // avatar baked textures if they are supported by the current region - std::string agent_appearance_url = response["agent_appearance_service"]; - if (!agent_appearance_url.empty()) - { - gSavedSettings.setString("AgentAppearanceServiceURL", agent_appearance_url); - } + } + + // set the location of the Agent Appearance service, from which we can request + // avatar baked textures if they are supported by the current region + std::string agent_appearance_url = response["agent_appearance_service"]; + if (!agent_appearance_url.empty()) + { + gSavedSettings.setString("AgentAppearanceServiceURL", agent_appearance_url); } // Override grid info with anything sent in the login response diff --git a/indra/newview/skins/default/textures/textures.xml b/indra/newview/skins/default/textures/textures.xml index 5917069bc..ddaf14ca9 100644 --- a/indra/newview/skins/default/textures/textures.xml +++ b/indra/newview/skins/default/textures/textures.xml @@ -358,7 +358,6 @@ with the same filename but different name - @@ -401,44 +400,4 @@ with the same filename but different name - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/indra/newview/skins/default/textures/world/BeaconArrow.png b/indra/newview/skins/default/textures/world/BeaconArrow.png new file mode 100644 index 000000000..54934f738 Binary files /dev/null and b/indra/newview/skins/default/textures/world/BeaconArrow.png differ diff --git a/indra/newview/skins/default/textures/world/CameraDragDot.png b/indra/newview/skins/default/textures/world/CameraDragDot.png new file mode 100644 index 000000000..2ccf098e0 Binary files /dev/null and b/indra/newview/skins/default/textures/world/CameraDragDot.png differ diff --git a/indra/newview/skins/default/textures/world/NoEntryLines.png b/indra/newview/skins/default/textures/world/NoEntryLines.png new file mode 100644 index 000000000..d7496b8bd Binary files /dev/null and b/indra/newview/skins/default/textures/world/NoEntryLines.png differ diff --git a/indra/newview/skins/default/textures/world/NoEntryPassLines.png b/indra/newview/skins/default/textures/world/NoEntryPassLines.png new file mode 100644 index 000000000..e4b8fc6ae Binary files /dev/null and b/indra/newview/skins/default/textures/world/NoEntryPassLines.png differ diff --git a/indra/newview/skins/default/xui/en-us/menu_viewer.xml b/indra/newview/skins/default/xui/en-us/menu_viewer.xml index 88b9bc942..9d9f16814 100644 --- a/indra/newview/skins/default/xui/en-us/menu_viewer.xml +++ b/indra/newview/skins/default/xui/en-us/menu_viewer.xml @@ -1038,10 +1038,10 @@ + userdata="WebLaunchSinguIssue,https://singularityviewer.atlassian.net/secure/CreateIssue!default.jspa?issuetype=1" /> - + - + - + - + - +