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" />
-
+
-
+
-
+
-
+
-
+