aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/linden
diff options
context:
space:
mode:
Diffstat (limited to 'linden')
-rw-r--r--linden/indra/llaudio/audioengine.h3
-rw-r--r--linden/indra/llimage/llimage.cpp1
-rw-r--r--linden/indra/llrender/llimagegl.cpp4
-rw-r--r--linden/indra/llui/CMakeLists.txt2
-rw-r--r--linden/indra/llui/lltabcontainer.cpp1
-rw-r--r--linden/indra/llui/lltabcontainervertical.cpp33
-rw-r--r--linden/indra/llui/lltabcontainervertical.h33
-rw-r--r--linden/indra/llui/lluictrlfactory.cpp1
-rw-r--r--linden/indra/llui/lluifwd.h1
-rw-r--r--linden/indra/newview/app_settings/settings.xml22
-rw-r--r--linden/indra/newview/app_settings/settings_per_account.xml11
-rw-r--r--linden/indra/newview/floaterbusy.cpp2
-rw-r--r--linden/indra/newview/jcfloaterareasearch.cpp2
-rw-r--r--linden/indra/newview/jcfloaterareasearch.h2
-rw-r--r--linden/indra/newview/lightshare.cpp6
-rw-r--r--linden/indra/newview/llfloatercustomize.cpp1
-rw-r--r--linden/indra/newview/llfloatercustomize.h1
-rw-r--r--linden/indra/newview/llfloaterpreference.cpp12
-rw-r--r--linden/indra/newview/llfloaterpreference.h3
-rw-r--r--linden/indra/newview/llpanelavatar.cpp1
-rw-r--r--linden/indra/newview/llpanelclassified.cpp1
-rw-r--r--linden/indra/newview/llpanelpick.cpp1
-rw-r--r--linden/indra/newview/llprefsadvanced.cpp5
-rw-r--r--linden/indra/newview/lltexturecache.cpp7
-rw-r--r--linden/indra/newview/lltexturefetch.cpp160
-rw-r--r--linden/indra/newview/llvieweraudio.cpp2
-rw-r--r--linden/indra/newview/llviewercontrol.cpp2
-rw-r--r--linden/indra/newview/llviewermenu.cpp20
-rw-r--r--linden/indra/newview/llviewermessage.cpp370
-rw-r--r--linden/indra/newview/llvoavatar.cpp2
-rw-r--r--linden/indra/newview/skins/default/xui/en-us/floater_busy.xml21
-rw-r--r--linden/indra/newview/skins/default/xui/en-us/floater_preferences.xml5
-rw-r--r--linden/indra/newview/skins/default/xui/en-us/menu_viewer.xml5
-rw-r--r--linden/indra/newview/skins/default/xui/en-us/panel_audio.xml8
-rw-r--r--linden/indra/newview/skins/default/xui/en-us/panel_media_remote_expanded.xml4
-rw-r--r--linden/indra/newview/skins/default/xui/en-us/panel_preferences_advanced.xml31
-rw-r--r--linden/indra/newview/skins/default/xui/en-us/panel_preferences_audio.xml8
-rw-r--r--linden/indra/newview/skins/default/xui/en-us/panel_preferences_general.xml12
-rw-r--r--linden/indra/newview/skins/default/xui/en-us/panel_preferences_im.xml2
39 files changed, 465 insertions, 343 deletions
diff --git a/linden/indra/llaudio/audioengine.h b/linden/indra/llaudio/audioengine.h
index e990eb7..e46091c 100644
--- a/linden/indra/llaudio/audioengine.h
+++ b/linden/indra/llaudio/audioengine.h
@@ -93,7 +93,8 @@ public:
93 AUDIO_TYPE_SFX = 1, 93 AUDIO_TYPE_SFX = 1,
94 AUDIO_TYPE_UI = 2, 94 AUDIO_TYPE_UI = 2,
95 AUDIO_TYPE_AMBIENT = 3, 95 AUDIO_TYPE_AMBIENT = 3,
96 AUDIO_TYPE_COUNT = 4 // last 96 AUDIO_TYPE_GESTURE = 4,
97 AUDIO_TYPE_COUNT = 5 // last
97 }; 98 };
98 99
99 LLAudioEngine(); 100 LLAudioEngine();
diff --git a/linden/indra/llimage/llimage.cpp b/linden/indra/llimage/llimage.cpp
index 0baa005..776c481 100644
--- a/linden/indra/llimage/llimage.cpp
+++ b/linden/indra/llimage/llimage.cpp
@@ -1547,6 +1547,7 @@ void LLImageFormatted::appendData(U8 *data, S32 size)
1547 S32 newsize = cursize + size; 1547 S32 newsize = cursize + size;
1548 reallocateData(newsize); 1548 reallocateData(newsize);
1549 memcpy(getData() + cursize, data, size); 1549 memcpy(getData() + cursize, data, size);
1550 delete[] data;
1550 } 1551 }
1551 } 1552 }
1552} 1553}
diff --git a/linden/indra/llrender/llimagegl.cpp b/linden/indra/llrender/llimagegl.cpp
index d6474f7..7cd4dd7 100644
--- a/linden/indra/llrender/llimagegl.cpp
+++ b/linden/indra/llrender/llimagegl.cpp
@@ -1231,7 +1231,9 @@ BOOL LLImageGL::readBackRaw(S32 discard_level, LLImageRaw* imageraw, bool compre
1231 1231
1232 if (width <= 0 || width > 2048 || height <= 0 || height > 2048 || ncomponents < 1 || ncomponents > 4) 1232 if (width <= 0 || width > 2048 || height <= 0 || height > 2048 || ncomponents < 1 || ncomponents > 4)
1233 { 1233 {
1234 llerrs << llformat("LLImageGL::readBackRaw: bogus params: %d x %d x %d",width,height,ncomponents) << llendl; 1234 //llerrs << llformat("LLImageGL::readBackRaw: bogus params: %d x %d x %d",width,height,ncomponents) << llendl;
1235 llwarns << llformat("LLImageGL::readBackRaw: bogus params: %d x %d x %d",width,height,ncomponents) << llendl;
1236 return FALSE;
1235 } 1237 }
1236 1238
1237 LLGLint is_compressed = 0; 1239 LLGLint is_compressed = 0;
diff --git a/linden/indra/llui/CMakeLists.txt b/linden/indra/llui/CMakeLists.txt
index f646e63..a0f80b4 100644
--- a/linden/indra/llui/CMakeLists.txt
+++ b/linden/indra/llui/CMakeLists.txt
@@ -63,7 +63,6 @@ set(llui_SOURCE_FILES
63 llspinctrl.cpp 63 llspinctrl.cpp
64 llstyle.cpp 64 llstyle.cpp
65 lltabcontainer.cpp 65 lltabcontainer.cpp
66 lltabcontainervertical.cpp
67 lltextbox.cpp 66 lltextbox.cpp
68 lltexteditor.cpp 67 lltexteditor.cpp
69 lltextparser.cpp 68 lltextparser.cpp
@@ -119,7 +118,6 @@ set(llui_HEADER_FILES
119 llspinctrl.h 118 llspinctrl.h
120 llstyle.h 119 llstyle.h
121 lltabcontainer.h 120 lltabcontainer.h
122 lltabcontainervertical.h
123 lltextbox.h 121 lltextbox.h
124 lltexteditor.h 122 lltexteditor.h
125 lltextparser.h 123 lltextparser.h
diff --git a/linden/indra/llui/lltabcontainer.cpp b/linden/indra/llui/lltabcontainer.cpp
index 1f94191..4be779c 100644
--- a/linden/indra/llui/lltabcontainer.cpp
+++ b/linden/indra/llui/lltabcontainer.cpp
@@ -40,7 +40,6 @@
40#include "lltextbox.h" 40#include "lltextbox.h"
41#include "llcriticaldamp.h" 41#include "llcriticaldamp.h"
42#include "lluictrlfactory.h" 42#include "lluictrlfactory.h"
43#include "lltabcontainervertical.h"
44#include "llrender.h" 43#include "llrender.h"
45 44
46const F32 SCROLL_STEP_TIME = 0.4f; 45const F32 SCROLL_STEP_TIME = 0.4f;
diff --git a/linden/indra/llui/lltabcontainervertical.cpp b/linden/indra/llui/lltabcontainervertical.cpp
deleted file mode 100644
index a729c95..0000000
--- a/linden/indra/llui/lltabcontainervertical.cpp
+++ /dev/null
@@ -1,33 +0,0 @@
1/**
2 * @file lltabcontainervertical.cpp
3 * @brief LLTabContainerVertical base class
4 *
5 * $LicenseInfo:firstyear=2001&license=viewergpl$
6 *
7 * Copyright (c) 2001-2009, Linden Research, Inc.
8 *
9 * Second Life Viewer Source Code
10 * The source code in this file ("Source Code") is provided by Linden Lab
11 * to you under the terms of the GNU General Public License, version 2.0
12 * ("GPL"), unless you have obtained a separate licensing agreement
13 * ("Other License"), formally executed by you and Linden Lab. Terms of
14 * the GPL can be found in doc/GPL-license.txt in this distribution, or
15 * online at http://secondlifegrid.net/programs/open_source/licensing/gplv2
16 *
17 * There are special exceptions to the terms and conditions of the GPL as
18 * it is applied to this Source Code. View the full text of the exception
19 * in the file doc/FLOSS-exception.txt in this software distribution, or
20 * online at
21 * http://secondlifegrid.net/programs/open_source/licensing/flossexception
22 *
23 * By copying, modifying or distributing this software, you acknowledge
24 * that you have read and understood your obligations described above,
25 * and agree to abide by those obligations.
26 *
27 * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO
28 * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY,
29 * COMPLETENESS OR PERFORMANCE.
30 * $/LicenseInfo$
31 */
32
33// deprecated: see LLTabContainer
diff --git a/linden/indra/llui/lltabcontainervertical.h b/linden/indra/llui/lltabcontainervertical.h
deleted file mode 100644
index ce42367..0000000
--- a/linden/indra/llui/lltabcontainervertical.h
+++ /dev/null
@@ -1,33 +0,0 @@
1/**
2 * @file lltabcontainervertical.h
3 * @brief LLTabContainerVertical base class
4 *
5 * $LicenseInfo:firstyear=2001&license=viewergpl$
6 *
7 * Copyright (c) 2001-2009, Linden Research, Inc.
8 *
9 * Second Life Viewer Source Code
10 * The source code in this file ("Source Code") is provided by Linden Lab
11 * to you under the terms of the GNU General Public License, version 2.0
12 * ("GPL"), unless you have obtained a separate licensing agreement
13 * ("Other License"), formally executed by you and Linden Lab. Terms of
14 * the GPL can be found in doc/GPL-license.txt in this distribution, or
15 * online at http://secondlifegrid.net/programs/open_source/licensing/gplv2
16 *
17 * There are special exceptions to the terms and conditions of the GPL as
18 * it is applied to this Source Code. View the full text of the exception
19 * in the file doc/FLOSS-exception.txt in this software distribution, or
20 * online at
21 * http://secondlifegrid.net/programs/open_source/licensing/flossexception
22 *
23 * By copying, modifying or distributing this software, you acknowledge
24 * that you have read and understood your obligations described above,
25 * and agree to abide by those obligations.
26 *
27 * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO
28 * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY,
29 * COMPLETENESS OR PERFORMANCE.
30 * $/LicenseInfo$
31 */
32
33// deprecated: see LLTabContainer
diff --git a/linden/indra/llui/lluictrlfactory.cpp b/linden/indra/llui/lluictrlfactory.cpp
index 07eb39b..5cfc3ee 100644
--- a/linden/indra/llui/lluictrlfactory.cpp
+++ b/linden/indra/llui/lluictrlfactory.cpp
@@ -64,7 +64,6 @@
64#include "llmultisliderctrl.h" 64#include "llmultisliderctrl.h"
65#include "llspinctrl.h" 65#include "llspinctrl.h"
66#include "lltabcontainer.h" 66#include "lltabcontainer.h"
67#include "lltabcontainervertical.h"
68#include "lltextbox.h" 67#include "lltextbox.h"
69#include "lltexteditor.h" 68#include "lltexteditor.h"
70#include "llui.h" 69#include "llui.h"
diff --git a/linden/indra/llui/lluifwd.h b/linden/indra/llui/lluifwd.h
index 32d5c9b..f99bb39 100644
--- a/linden/indra/llui/lluifwd.h
+++ b/linden/indra/llui/lluifwd.h
@@ -53,7 +53,6 @@ class LLSlider;
53class LLSliderCtrl; 53class LLSliderCtrl;
54class LLSpinCtrl; 54class LLSpinCtrl;
55class LLTabContainer; 55class LLTabContainer;
56class LLTabContainerVertical;
57class LLTextBox; 56class LLTextBox;
58class LLTextEditor; 57class LLTextEditor;
59class LLTextureCtrl; 58class LLTextureCtrl;
diff --git a/linden/indra/newview/app_settings/settings.xml b/linden/indra/newview/app_settings/settings.xml
index aae182c..d71cf09 100644
--- a/linden/indra/newview/app_settings/settings.xml
+++ b/linden/indra/newview/app_settings/settings.xml
@@ -15,6 +15,17 @@
15 <key>Value</key> 15 <key>Value</key>
16 <integer>0</integer> 16 <integer>0</integer>
17 </map> 17 </map>
18 <key>AudioLevelGestures</key>
19 <map>
20 <key>Comment</key>
21 <string>Audio level of environment gestures</string>
22 <key>Persist</key>
23 <integer>1</integer>
24 <key>Type</key>
25 <string>F32</string>
26 <key>Value</key>
27 <real>0.5</real>
28 </map>
18 <key>AutoCloseOOC</key> 29 <key>AutoCloseOOC</key>
19 <map> 30 <map>
20 <key>Comment</key> 31 <key>Comment</key>
@@ -431,6 +442,17 @@
431 <key>Value</key> 442 <key>Value</key>
432 <integer>1</integer> 443 <integer>1</integer>
433 </map> 444 </map>
445 <key>MuteGestures</key>
446 <map>
447 <key>Comment</key>
448 <string>Gesture sound effects, play at 0 volume</string>
449 <key>Persist</key>
450 <integer>1</integer>
451 <key>Type</key>
452 <string>Boolean</string>
453 <key>Value</key>
454 <integer>0</integer>
455 </map>
434 <key>MuteWind</key> 456 <key>MuteWind</key>
435 <map> 457 <map>
436 <key>Comment</key> 458 <key>Comment</key>
diff --git a/linden/indra/newview/app_settings/settings_per_account.xml b/linden/indra/newview/app_settings/settings_per_account.xml
index e965fe6..1a748f8 100644
--- a/linden/indra/newview/app_settings/settings_per_account.xml
+++ b/linden/indra/newview/app_settings/settings_per_account.xml
@@ -461,6 +461,17 @@
461 461
462 <!-- Begin IM auto-response --> 462 <!-- Begin IM auto-response -->
463 463
464 <key>InstantMessageResponseEnabled</key>
465 <map>
466 <key>Comment</key>
467 <string>Toggles whether to auto-respond to instant messages or not</string>
468 <key>Persist</key>
469 <integer>1</integer>
470 <key>Type</key>
471 <string>Boolean</string>
472 <key>Value</key>
473 <integer>0</integer>
474 </map>
464 <key>InstantMessageResponseFriends</key> 475 <key>InstantMessageResponseFriends</key>
465 <map> 476 <map>
466 <key>Comment</key> 477 <key>Comment</key>
diff --git a/linden/indra/newview/floaterbusy.cpp b/linden/indra/newview/floaterbusy.cpp
index 9188ae1..6c49461 100644
--- a/linden/indra/newview/floaterbusy.cpp
+++ b/linden/indra/newview/floaterbusy.cpp
@@ -158,6 +158,7 @@ BOOL FloaterBusy::postBuild()
158 LLWStringUtil::replaceChar(auto_response, '%', ' '); 158 LLWStringUtil::replaceChar(auto_response, '%', ' ');
159 childSetText("im_response", wstring_to_utf8str(auto_response)); 159 childSetText("im_response", wstring_to_utf8str(auto_response));
160 160
161 childSetValue("InstantMessageResponseEnabled", gSavedPerAccountSettings.getBOOL("InstantMessageResponseEnabled"));
161 childSetValue("InstantMessageResponseFriends", gSavedPerAccountSettings.getBOOL("InstantMessageResponseFriends")); 162 childSetValue("InstantMessageResponseFriends", gSavedPerAccountSettings.getBOOL("InstantMessageResponseFriends"));
162 childSetValue("InstantMessageResponseMuted", gSavedPerAccountSettings.getBOOL("InstantMessageResponseMuted")); 163 childSetValue("InstantMessageResponseMuted", gSavedPerAccountSettings.getBOOL("InstantMessageResponseMuted"));
163 childSetValue("InstantMessageResponseAnyone", gSavedPerAccountSettings.getBOOL("InstantMessageResponseAnyone")); 164 childSetValue("InstantMessageResponseAnyone", gSavedPerAccountSettings.getBOOL("InstantMessageResponseAnyone"));
@@ -212,6 +213,7 @@ void FloaterBusy::apply()
212 LLWStringUtil::replaceChar(im_response, '\n', '^'); 213 LLWStringUtil::replaceChar(im_response, '\n', '^');
213 LLWStringUtil::replaceChar(im_response, ' ', '%'); 214 LLWStringUtil::replaceChar(im_response, ' ', '%');
214 gSavedPerAccountSettings.setString("InstantMessageResponse", std::string(wstring_to_utf8str(im_response))); 215 gSavedPerAccountSettings.setString("InstantMessageResponse", std::string(wstring_to_utf8str(im_response)));
216 gSavedPerAccountSettings.setBOOL("InstantMessageResponseEnabled", childGetValue("InstantMessageResponseEnabled").asBoolean());
215 gSavedPerAccountSettings.setBOOL("InstantMessageResponseMuted", childGetValue("InstantMessageResponseMuted").asBoolean()); 217 gSavedPerAccountSettings.setBOOL("InstantMessageResponseMuted", childGetValue("InstantMessageResponseMuted").asBoolean());
216 gSavedPerAccountSettings.setBOOL("InstantMessageResponseFriends", childGetValue("InstantMessageResponseFriends").asBoolean()); 218 gSavedPerAccountSettings.setBOOL("InstantMessageResponseFriends", childGetValue("InstantMessageResponseFriends").asBoolean());
217 gSavedPerAccountSettings.setBOOL("InstantMessageResponseMuted", childGetValue("InstantMessageResponseMuted").asBoolean()); 219 gSavedPerAccountSettings.setBOOL("InstantMessageResponseMuted", childGetValue("InstantMessageResponseMuted").asBoolean());
diff --git a/linden/indra/newview/jcfloaterareasearch.cpp b/linden/indra/newview/jcfloaterareasearch.cpp
index 5b269fa..ed00447 100644
--- a/linden/indra/newview/jcfloaterareasearch.cpp
+++ b/linden/indra/newview/jcfloaterareasearch.cpp
@@ -16,7 +16,7 @@
16 * may be used to endorse or promote products derived from this 16 * may be used to endorse or promote products derived from this
17 * software without specific prior written permission. 17 * software without specific prior written permission.
18 * 18 *
19 * THIS SOFTWARE IS PROVIDED BY MODULAR SYSTEMS LTD AND CONTRIBUTORS AS IS 19 * THIS SOFTWARE IS PROVIDED BY MODULAR SYSTEMS LTD AND CONTRIBUTORS "AS IS"
20 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, 20 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
21 * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 21 * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
22 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL MODULAR SYSTEMS OR CONTRIBUTORS 22 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL MODULAR SYSTEMS OR CONTRIBUTORS
diff --git a/linden/indra/newview/jcfloaterareasearch.h b/linden/indra/newview/jcfloaterareasearch.h
index 9feb9aa..1512030 100644
--- a/linden/indra/newview/jcfloaterareasearch.h
+++ b/linden/indra/newview/jcfloaterareasearch.h
@@ -16,7 +16,7 @@
16 * may be used to endorse or promote products derived from this 16 * may be used to endorse or promote products derived from this
17 * software without specific prior written permission. 17 * software without specific prior written permission.
18 * 18 *
19 * THIS SOFTWARE IS PROVIDED BY MODULAR SYSTEMS AND CONTRIBUTORS AS IS 19 * THIS SOFTWARE IS PROVIDED BY MODULAR SYSTEMS AND CONTRIBUTORS "AS IS"
20 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, 20 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
21 * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 21 * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
22 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL MODULAR SYSTEMS OR CONTRIBUTORS 22 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL MODULAR SYSTEMS OR CONTRIBUTORS
diff --git a/linden/indra/newview/lightshare.cpp b/linden/indra/newview/lightshare.cpp
index b422236..78d27b5 100644
--- a/linden/indra/newview/lightshare.cpp
+++ b/linden/indra/newview/lightshare.cpp
@@ -101,7 +101,7 @@ WindlightMessage::~WindlightMessage()
101// static 101// static
102void WindlightMessage::processWindlight(LLMessageSystem* msg, void**) 102void WindlightMessage::processWindlight(LLMessageSystem* msg, void**)
103{ 103{
104 if( gSavedSettings.getU32("UseLightShare") <= LIGHTSHARE_NEVER ) 104 if( gSavedSettings.getU32("LightShareAllowed") <= LIGHTSHARE_NEVER )
105 return; 105 return;
106 106
107 WindlightMessage* wl = new WindlightMessage(msg); 107 WindlightMessage* wl = new WindlightMessage(msg);
@@ -114,7 +114,7 @@ void WindlightMessage::processWindlight(LLMessageSystem* msg, void**)
114 114
115 // If they are using region settings already, or LightShare is 115 // If they are using region settings already, or LightShare is
116 // always allowed, just apply the new settings, don't bother asking. 116 // always allowed, just apply the new settings, don't bother asking.
117 if( gSavedSettings.getU32("UseLightShare") == LIGHTSHARE_ALWAYS || 117 if( gSavedSettings.getU32("LightShareAllowed") == LIGHTSHARE_ALWAYS ||
118 (sky == sSkyPresetName && water == sWaterPresetName) ) 118 (sky == sSkyPresetName && water == sWaterPresetName) )
119 { 119 {
120 wl->apply(); 120 wl->apply();
@@ -138,7 +138,7 @@ void WindlightMessage::processWindlight(LLMessageSystem* msg, void**)
138 return; 138 return;
139 } 139 }
140 140
141 if( gSavedSettings.getU32("UseLightShare") == LIGHTSHARE_ASK && 141 if( gSavedSettings.getU32("LightShareAllowed") == LIGHTSHARE_ASK &&
142 sMostRecent == NULL ) 142 sMostRecent == NULL )
143 { 143 {
144 // No most recent, so store this and create notification 144 // No most recent, so store this and create notification
diff --git a/linden/indra/newview/llfloatercustomize.cpp b/linden/indra/newview/llfloatercustomize.cpp
index 74b58bd..db51556 100644
--- a/linden/indra/newview/llfloatercustomize.cpp
+++ b/linden/indra/newview/llfloatercustomize.cpp
@@ -48,7 +48,6 @@
48#include "llscrollcontainer.h" 48#include "llscrollcontainer.h"
49#include "llscrollingpanellist.h" 49#include "llscrollingpanellist.h"
50#include "llsliderctrl.h" 50#include "llsliderctrl.h"
51#include "lltabcontainervertical.h"
52#include "llviewerwindow.h" 51#include "llviewerwindow.h"
53#include "llinventorymodel.h" 52#include "llinventorymodel.h"
54#include "llinventoryview.h" 53#include "llinventoryview.h"
diff --git a/linden/indra/newview/llfloatercustomize.h b/linden/indra/newview/llfloatercustomize.h
index d0e558f..aa93606 100644
--- a/linden/indra/newview/llfloatercustomize.h
+++ b/linden/indra/newview/llfloatercustomize.h
@@ -55,7 +55,6 @@ class LLMakeOutfitDialog;
55class LLRadioGroup; 55class LLRadioGroup;
56class LLScrollableContainerView; 56class LLScrollableContainerView;
57class LLScrollingPanelList; 57class LLScrollingPanelList;
58class LLTabContainerVertical;
59class LLTextBox; 58class LLTextBox;
60class LLTextureCtrl; 59class LLTextureCtrl;
61class LLViewerJointMesh; 60class LLViewerJointMesh;
diff --git a/linden/indra/newview/llfloaterpreference.cpp b/linden/indra/newview/llfloaterpreference.cpp
index c468a5e..744c179 100644
--- a/linden/indra/newview/llfloaterpreference.cpp
+++ b/linden/indra/newview/llfloaterpreference.cpp
@@ -49,7 +49,6 @@
49#include "message.h" 49#include "message.h"
50 50
51#include "llcommandhandler.h" 51#include "llcommandhandler.h"
52#include "llfloaterabout.h"
53#include "llfloaterpreference.h" 52#include "llfloaterpreference.h"
54#include "llpanelnetwork.h" 53#include "llpanelnetwork.h"
55#include "llpanelaudioprefs.h" 54#include "llpanelaudioprefs.h"
@@ -353,7 +352,6 @@ LLFloaterPreference::LLFloaterPreference()
353 352
354BOOL LLFloaterPreference::postBuild() 353BOOL LLFloaterPreference::postBuild()
355{ 354{
356 requires<LLButton>("About...");
357 requires<LLButton>("OK"); 355 requires<LLButton>("OK");
358 requires<LLButton>("Cancel"); 356 requires<LLButton>("Cancel");
359 requires<LLButton>("Apply"); 357 requires<LLButton>("Apply");
@@ -363,9 +361,6 @@ BOOL LLFloaterPreference::postBuild()
363 { 361 {
364 return FALSE; 362 return FALSE;
365 } 363 }
366
367 mAboutBtn = getChild<LLButton>("About...");
368 mAboutBtn->setClickedCallback(onClickAbout, this);
369 364
370 mApplyBtn = getChild<LLButton>("Apply"); 365 mApplyBtn = getChild<LLButton>("Apply");
371 mApplyBtn->setClickedCallback(onBtnApply, this); 366 mApplyBtn->setClickedCallback(onBtnApply, this);
@@ -430,13 +425,6 @@ void LLFloaterPreference::show(void*)
430} 425}
431 426
432 427
433// static
434void LLFloaterPreference::onClickAbout(void*)
435{
436 LLFloaterAbout::show(NULL);
437}
438
439
440// static 428// static
441void LLFloaterPreference::onBtnOK( void* userdata ) 429void LLFloaterPreference::onBtnOK( void* userdata )
442{ 430{
diff --git a/linden/indra/newview/llfloaterpreference.h b/linden/indra/newview/llfloaterpreference.h
index 894d242..1878280 100644
--- a/linden/indra/newview/llfloaterpreference.h
+++ b/linden/indra/newview/llfloaterpreference.h
@@ -40,7 +40,6 @@
40#define LL_LLFLOATERPREFERENCE_H 40#define LL_LLFLOATERPREFERENCE_H
41 41
42#include "llfloater.h" 42#include "llfloater.h"
43#include "lltabcontainervertical.h"
44 43
45class LLPanelGeneral; 44class LLPanelGeneral;
46class LLPanelInput; 45class LLPanelInput;
@@ -119,12 +118,10 @@ protected:
119 118
120 /*virtual*/ void onClose(bool app_quitting); 119 /*virtual*/ void onClose(bool app_quitting);
121 120
122 LLButton* mAboutBtn;
123 LLButton *mOKBtn; 121 LLButton *mOKBtn;
124 LLButton *mCancelBtn; 122 LLButton *mCancelBtn;
125 LLButton *mApplyBtn; 123 LLButton *mApplyBtn;
126 124
127 static void onClickAbout(void*);
128 static void onBtnOK(void*); 125 static void onBtnOK(void*);
129 static void onBtnCancel(void*); 126 static void onBtnCancel(void*);
130 static void onBtnApply(void*); 127 static void onBtnApply(void*);
diff --git a/linden/indra/newview/llpanelavatar.cpp b/linden/indra/newview/llpanelavatar.cpp
index 6e0949f..bfcc04a 100644
--- a/linden/indra/newview/llpanelavatar.cpp
+++ b/linden/indra/newview/llpanelavatar.cpp
@@ -67,7 +67,6 @@
67#include "llscrolllistctrl.h" 67#include "llscrolllistctrl.h"
68#include "llstatusbar.h" 68#include "llstatusbar.h"
69#include "lltabcontainer.h" 69#include "lltabcontainer.h"
70#include "lltabcontainervertical.h"
71#include "llimview.h" 70#include "llimview.h"
72#include "lltooldraganddrop.h" 71#include "lltooldraganddrop.h"
73#include "lluiconstants.h" 72#include "lluiconstants.h"
diff --git a/linden/indra/newview/llpanelclassified.cpp b/linden/indra/newview/llpanelclassified.cpp
index c6f9b0c..36fc86d 100644
--- a/linden/indra/newview/llpanelclassified.cpp
+++ b/linden/indra/newview/llpanelclassified.cpp
@@ -54,7 +54,6 @@
54#include "lllineeditor.h" 54#include "lllineeditor.h"
55#include "llfloateravatarinfo.h" 55#include "llfloateravatarinfo.h"
56#include "llfloaterclassified.h" 56#include "llfloaterclassified.h"
57#include "lltabcontainervertical.h"
58#include "lltextbox.h" 57#include "lltextbox.h"
59#include "llcombobox.h" 58#include "llcombobox.h"
60#include "llviewertexteditor.h" 59#include "llviewertexteditor.h"
diff --git a/linden/indra/newview/llpanelpick.cpp b/linden/indra/newview/llpanelpick.cpp
index b26b51a..9c2638f 100644
--- a/linden/indra/newview/llpanelpick.cpp
+++ b/linden/indra/newview/llpanelpick.cpp
@@ -47,7 +47,6 @@
47#include "llcheckboxctrl.h" 47#include "llcheckboxctrl.h"
48#include "llviewercontrol.h" 48#include "llviewercontrol.h"
49#include "lllineeditor.h" 49#include "lllineeditor.h"
50#include "lltabcontainervertical.h"
51#include "lltextbox.h" 50#include "lltextbox.h"
52#include "llviewertexteditor.h" 51#include "llviewertexteditor.h"
53#include "lltexturectrl.h" 52#include "lltexturectrl.h"
diff --git a/linden/indra/newview/llprefsadvanced.cpp b/linden/indra/newview/llprefsadvanced.cpp
index 60c936a..56c72c4 100644
--- a/linden/indra/newview/llprefsadvanced.cpp
+++ b/linden/indra/newview/llprefsadvanced.cpp
@@ -69,6 +69,7 @@ BOOL LLPrefsAdvanced::postBuild()
69 childSetValue("language_is_public", gSavedSettings.getBOOL("LanguageIsPublic")); 69 childSetValue("language_is_public", gSavedSettings.getBOOL("LanguageIsPublic"));
70 childSetValue("allow_mupose", gSavedSettings.getBOOL("AllowMUpose")); 70 childSetValue("allow_mupose", gSavedSettings.getBOOL("AllowMUpose"));
71 childSetValue("auto_close_ooc", gSavedSettings.getBOOL("AutoCloseOOC")); 71 childSetValue("auto_close_ooc", gSavedSettings.getBOOL("AutoCloseOOC"));
72 childSetValue("shadows_check", gSavedSettings.getBOOL("ShadowsEnabled"));
72 73
73 childSetValue("lightshare_combo", 74 childSetValue("lightshare_combo",
74 LLSD((S32)gSavedSettings.getU32("LightShareAllowed"))); 75 LLSD((S32)gSavedSettings.getU32("LightShareAllowed")));
@@ -131,6 +132,7 @@ void LLPrefsAdvanced::apply()
131 childSetValue("shadows_check", FALSE); 132 childSetValue("shadows_check", FALSE);
132 LLNotifications::instance().add("NoShadows"); 133 LLNotifications::instance().add("NoShadows");
133 llwarns << "Attempting to enable shadow rendering while graphics settings less than Ultra or shaders are missing!" << llendl; 134 llwarns << "Attempting to enable shadow rendering while graphics settings less than Ultra or shaders are missing!" << llendl;
135 gSavedSettings.setBOOL("ShadowsEnabled", FALSE);
134 } 136 }
135 else if ( (gSavedSettings.getBOOL("WindLightUseAtmosShaders") // If we do, toggle shadows in the correct order 137 else if ( (gSavedSettings.getBOOL("WindLightUseAtmosShaders") // If we do, toggle shadows in the correct order
136 && gSavedSettings.getBOOL("VertexShaderEnable")) ) 138 && gSavedSettings.getBOOL("VertexShaderEnable")) )
@@ -138,6 +140,7 @@ void LLPrefsAdvanced::apply()
138 gSavedSettings.setBOOL("RenderUseFBO", childGetValue("shadows_check").asBoolean()); 140 gSavedSettings.setBOOL("RenderUseFBO", childGetValue("shadows_check").asBoolean());
139 gSavedSettings.setBOOL("RenderDeferred", childGetValue("shadows_check").asBoolean()); 141 gSavedSettings.setBOOL("RenderDeferred", childGetValue("shadows_check").asBoolean());
140 llinfos << "Shadow rendering enabled" << llendl; 142 llinfos << "Shadow rendering enabled" << llendl;
143 gSavedSettings.setBOOL("ShadowsEnabled", TRUE);
141 } 144 }
142 } 145 }
143 else if (!childGetValue("shadows_check").asBoolean()) 146 else if (!childGetValue("shadows_check").asBoolean())
@@ -147,9 +150,9 @@ void LLPrefsAdvanced::apply()
147 gSavedSettings.setBOOL("RenderDeferred", childGetValue("shadows_check").asBoolean()); 150 gSavedSettings.setBOOL("RenderDeferred", childGetValue("shadows_check").asBoolean());
148 gSavedSettings.setBOOL("RenderUseFBO", childGetValue("shadows_check").asBoolean()); 151 gSavedSettings.setBOOL("RenderUseFBO", childGetValue("shadows_check").asBoolean());
149 llinfos << "Shadow rendering disabled" << llendl; 152 llinfos << "Shadow rendering disabled" << llendl;
153 gSavedSettings.setBOOL("ShadowsEnabled", FALSE);
150 } 154 }
151 } 155 }
152 gSavedSettings.setBOOL("ShadowsEnabled", childGetValue("shadows_check").asBoolean());
153 156
154 if (gSavedSettings.getBOOL("LegacyPieEnabled") == !((BOOL)childGetValue("legacy_pie_menu_checkbox"))) 157 if (gSavedSettings.getBOOL("LegacyPieEnabled") == !((BOOL)childGetValue("legacy_pie_menu_checkbox")))
155 { 158 {
diff --git a/linden/indra/newview/lltexturecache.cpp b/linden/indra/newview/lltexturecache.cpp
index 3cedf73..c5c14b5 100644
--- a/linden/indra/newview/lltexturecache.cpp
+++ b/linden/indra/newview/lltexturecache.cpp
@@ -1063,6 +1063,13 @@ void LLTextureCache::writeEntryAndClose(S32 idx, Entry& entry)
1063 if (!mReadOnly) 1063 if (!mReadOnly)
1064 { 1064 {
1065 entry.mTime = time(NULL); 1065 entry.mTime = time(NULL);
1066 if(entry.mImageSize < entry.mBodySize)
1067 {
1068 // Just say no, due to my messing around to cache discards other than 0 we can end up here
1069 // after recalling an image from cache at a lower discard than cached. RC
1070 return;
1071 }
1072
1066 llassert_always(entry.mImageSize == 0 || entry.mImageSize == -1 || entry.mImageSize > entry.mBodySize); 1073 llassert_always(entry.mImageSize == 0 || entry.mImageSize == -1 || entry.mImageSize > entry.mBodySize);
1067 if (entry.mBodySize > 0) 1074 if (entry.mBodySize > 0)
1068 { 1075 {
diff --git a/linden/indra/newview/lltexturefetch.cpp b/linden/indra/newview/lltexturefetch.cpp
index 326a1b6..2184478 100644
--- a/linden/indra/newview/lltexturefetch.cpp
+++ b/linden/indra/newview/lltexturefetch.cpp
@@ -169,6 +169,9 @@ public:
169 mGetReason = reason; 169 mGetReason = reason;
170 } 170 }
171 171
172 void setCanUseHTTP(bool can_use_http) {mCanUseHTTP = can_use_http;}
173 bool getCanUseHTTP()const {return mCanUseHTTP ;}
174
172protected: 175protected:
173 LLTextureFetchWorker(LLTextureFetch* fetcher, const LLUUID& id, const LLHost& host, 176 LLTextureFetchWorker(LLTextureFetch* fetcher, const LLUUID& id, const LLHost& host,
174 F32 priority, S32 discard, S32 size); 177 F32 priority, S32 discard, S32 size);
@@ -218,8 +221,15 @@ private:
218 QUEUED = 1, 221 QUEUED = 1,
219 SENT_SIM = 2 222 SENT_SIM = 2
220 }; 223 };
224 enum e_write_to_cache_state //mWriteToCacheState
225 {
226 NOT_WRITE = 0,
227 CAN_WRITE = 1,
228 SHOULD_WRITE = 2
229 };
221 static const char* sStateDescs[]; 230 static const char* sStateDescs[];
222 e_state mState; 231 e_state mState;
232 e_write_to_cache_state mWriteToCacheState;
223 LLTextureFetch* mFetcher; 233 LLTextureFetch* mFetcher;
224 LLPointer<LLImageFormatted> mFormattedImage; 234 LLPointer<LLImageFormatted> mFormattedImage;
225 LLPointer<LLImageRaw> mRawImage; 235 LLPointer<LLImageRaw> mRawImage;
@@ -254,6 +264,8 @@ private:
254 BOOL mNeedsAux; 264 BOOL mNeedsAux;
255 BOOL mHaveAllData; 265 BOOL mHaveAllData;
256 BOOL mInLocalCache; 266 BOOL mInLocalCache;
267 bool mCanUseHTTP ;
268 bool mCanUseNET ; //can get from asset server.
257 S32 mHTTPFailCount; 269 S32 mHTTPFailCount;
258 S32 mRetryAttempt; 270 S32 mRetryAttempt;
259 S32 mActiveCount; 271 S32 mActiveCount;
@@ -379,6 +391,7 @@ LLTextureFetchWorker::LLTextureFetchWorker(LLTextureFetch* fetcher,
379 S32 size) // Desired size 391 S32 size) // Desired size
380 : LLWorkerClass(fetcher, "TextureFetch"), 392 : LLWorkerClass(fetcher, "TextureFetch"),
381 mState(INIT), 393 mState(INIT),
394 mWriteToCacheState(NOT_WRITE),
382 mFetcher(fetcher), 395 mFetcher(fetcher),
383 mID(id), 396 mID(id),
384 mHost(host), 397 mHost(host),
@@ -407,6 +420,7 @@ LLTextureFetchWorker::LLTextureFetchWorker(LLTextureFetch* fetcher,
407 mNeedsAux(FALSE), 420 mNeedsAux(FALSE),
408 mHaveAllData(FALSE), 421 mHaveAllData(FALSE),
409 mInLocalCache(FALSE), 422 mInLocalCache(FALSE),
423 mCanUseHTTP(true),
410 mHTTPFailCount(0), 424 mHTTPFailCount(0),
411 mRetryAttempt(0), 425 mRetryAttempt(0),
412 mActiveCount(0), 426 mActiveCount(0),
@@ -417,6 +431,8 @@ LLTextureFetchWorker::LLTextureFetchWorker(LLTextureFetch* fetcher,
417 mTotalPackets(0), 431 mTotalPackets(0),
418 mImageCodec(IMG_CODEC_INVALID) 432 mImageCodec(IMG_CODEC_INVALID)
419{ 433{
434 mCanUseNET = mUrl.empty() ;
435
420 calcWorkPriority(); 436 calcWorkPriority();
421 mType = host.isOk() ? LLImageBase::TYPE_AVATAR_BAKE : LLImageBase::TYPE_NORMAL; 437 mType = host.isOk() ? LLImageBase::TYPE_AVATAR_BAKE : LLImageBase::TYPE_NORMAL;
422// llinfos << "Create: " << mID << " mHost:" << host << " Discard=" << discard << llendl; 438// llinfos << "Create: " << mID << " mHost:" << host << " Discard=" << discard << llendl;
@@ -573,13 +589,25 @@ bool LLTextureFetchWorker::doWork(S32 param)
573{ 589{
574 LLMutexLock lock(&mWorkMutex); 590 LLMutexLock lock(&mWorkMutex);
575 591
576 if ((mFetcher->isQuitting() || (mImagePriority <= 0.0f) || getFlags(LLWorkerClass::WCF_DELETE_REQUESTED))) 592 if ((mFetcher->isQuitting() || getFlags(LLWorkerClass::WCF_DELETE_REQUESTED)))
577 { 593 {
578 if (mState < WRITE_TO_CACHE) 594 if (mState < DECODE_IMAGE)
579 { 595 {
580 return true; // abort 596 return true; // abort
581 } 597 }
582 } 598 }
599 if (mImagePriority < 1.0f)
600 {
601 if (mState == INIT || mState == LOAD_FROM_NETWORK || mState == LOAD_FROM_SIMULATOR)
602 {
603 return true; // abort
604 }
605 }
606 if (mState > CACHE_POST && !mCanUseNET && !mCanUseHTTP)
607 {
608 //nowhere to get data, abort.
609 return true ;
610 }
583 611
584 if (mFetcher->mDebugPause|| gDisconnected) 612 if (mFetcher->mDebugPause|| gDisconnected)
585 { 613 {
@@ -647,7 +675,7 @@ bool LLTextureFetchWorker::doWork(S32 param)
647 mCacheReadHandle = mFetcher->mTextureCache->readFromCache(mID, cache_priority, 675 mCacheReadHandle = mFetcher->mTextureCache->readFromCache(mID, cache_priority,
648 offset, size, responder); 676 offset, size, responder);
649 } 677 }
650 else 678 else if(mCanUseHTTP)
651 { 679 {
652 if (!(mUrl.compare(0, 7, "http://") == 0)) 680 if (!(mUrl.compare(0, 7, "http://") == 0))
653 { 681 {
@@ -657,6 +685,11 @@ bool LLTextureFetchWorker::doWork(S32 param)
657 setPriority(LLWorkerThread::PRIORITY_HIGH | mWorkPriority); 685 setPriority(LLWorkerThread::PRIORITY_HIGH | mWorkPriority);
658 mState = SEND_HTTP_REQ; 686 mState = SEND_HTTP_REQ;
659 } 687 }
688 else
689 {
690 setPriority(LLWorkerThread::PRIORITY_HIGH | mWorkPriority);
691 mState = LOAD_FROM_NETWORK;
692 }
660 } 693 }
661 694
662 if (mLoaded) 695 if (mLoaded)
@@ -689,6 +722,10 @@ bool LLTextureFetchWorker::doWork(S32 param)
689 // we have enough data, decode it 722 // we have enough data, decode it
690 llassert_always(mFormattedImage->getDataSize() > 0); 723 llassert_always(mFormattedImage->getDataSize() > 0);
691 mState = DECODE_IMAGE; 724 mState = DECODE_IMAGE;
725 mWriteToCacheState = NOT_WRITE ;
726 LL_DEBUGS("Texture") << mID << ": Cached. Bytes: " << mFormattedImage->getDataSize()
727 << " Size: " << llformat("%dx%d",mFormattedImage->getWidth(),mFormattedImage->getHeight())
728 << " Desired Discard: " << mDesiredDiscard << " Desired Size: " << mDesiredSize << LL_ENDL;
692 // fall through 729 // fall through
693 } 730 }
694 else 731 else
@@ -716,7 +753,7 @@ bool LLTextureFetchWorker::doWork(S32 param)
716 bool get_url = gSavedSettings.getBOOL("ImagePipelineUseHTTP"); 753 bool get_url = gSavedSettings.getBOOL("ImagePipelineUseHTTP");
717 if (!mUrl.empty()) get_url = false; 754 if (!mUrl.empty()) get_url = false;
718// if (mHost != LLHost::invalid) get_url = false; 755// if (mHost != LLHost::invalid) get_url = false;
719 if ( get_url ) 756 if ( get_url && mCanUseHTTP && mUrl.empty())//get http url.
720 { 757 {
721 LLViewerRegion* region = NULL; 758 LLViewerRegion* region = NULL;
722 if (mHost == LLHost::invalid) 759 if (mHost == LLHost::invalid)
@@ -730,23 +767,35 @@ bool LLTextureFetchWorker::doWork(S32 param)
730 if (!http_url.empty()) 767 if (!http_url.empty())
731 { 768 {
732 mUrl = http_url + "/?texture_id=" + mID.asString().c_str(); 769 mUrl = http_url + "/?texture_id=" + mID.asString().c_str();
770 mWriteToCacheState = CAN_WRITE ; //because this texture has a fixed texture id.
771 }
772 else
773 {
774 mCanUseHTTP = false ;
733 } 775 }
734 } 776 }
735 else 777 else
736 { 778 {
737 llwarns << "Region not found for host: " << mHost << llendl; 779 // This will happen if not logged in or if a region deoes not have HTTP Texture enabled
780 //llwarns << "Region not found for host: " << mHost << llendl;
781 mCanUseHTTP = false;
738 } 782 }
739 } 783 }
740 if (!mUrl.empty()) 784 if (mCanUseHTTP && !mUrl.empty())
741 { 785 {
742 mState = LLTextureFetchWorker::SEND_HTTP_REQ; 786 mState = LLTextureFetchWorker::SEND_HTTP_REQ;
743 setPriority(LLWorkerThread::PRIORITY_HIGH | mWorkPriority); 787 setPriority(LLWorkerThread::PRIORITY_HIGH | mWorkPriority);
788 if(mWriteToCacheState != NOT_WRITE)
789 {
790 mWriteToCacheState = CAN_WRITE ;
791 }
744 // don't return, fall through to next state 792 // don't return, fall through to next state
745 } 793 }
746 else if (mSentRequest == UNSENT) 794 else if (mSentRequest == UNSENT)
747 { 795 {
748 // Add this to the network queue and sit here. 796 // Add this to the network queue and sit here.
749 // LLTextureFetch::update() will send off a request which will change our state 797 // LLTextureFetch::update() will send off a request which will change our state
798 mWriteToCacheState = CAN_WRITE ;
750 mRequestedSize = mDesiredSize; 799 mRequestedSize = mDesiredSize;
751 mRequestedDiscard = mDesiredDiscard; 800 mRequestedDiscard = mDesiredDiscard;
752 mSentRequest = QUEUED; 801 mSentRequest = QUEUED;
@@ -778,6 +827,7 @@ bool LLTextureFetchWorker::doWork(S32 param)
778 } 827 }
779 setPriority(LLWorkerThread::PRIORITY_HIGH | mWorkPriority); 828 setPriority(LLWorkerThread::PRIORITY_HIGH | mWorkPriority);
780 mState = DECODE_IMAGE; 829 mState = DECODE_IMAGE;
830 mWriteToCacheState = SHOULD_WRITE ;
781 } 831 }
782 else 832 else
783 { 833 {
@@ -788,6 +838,7 @@ bool LLTextureFetchWorker::doWork(S32 param)
788 838
789 if (mState == SEND_HTTP_REQ) 839 if (mState == SEND_HTTP_REQ)
790 { 840 {
841 if(mCanUseHTTP)
791 { 842 {
792 const S32 HTTP_QUEUE_MAX_SIZE = 8; 843 const S32 HTTP_QUEUE_MAX_SIZE = 8;
793 // *TODO: Integrate this with llviewerthrottle 844 // *TODO: Integrate this with llviewerthrottle
@@ -861,28 +912,78 @@ bool LLTextureFetchWorker::doWork(S32 param)
861 S32 cur_size = mFormattedImage.notNull() ? mFormattedImage->getDataSize() : 0; 912 S32 cur_size = mFormattedImage.notNull() ? mFormattedImage->getDataSize() : 0;
862 if (mRequestedSize < 0) 913 if (mRequestedSize < 0)
863 { 914 {
864 const S32 HTTP_MAX_RETRY_COUNT = 4; 915 S32 max_attempts;
865 llinfos << "HTTP GET failed for: " << mUrl 916 if (mGetStatus == HTTP_NOT_FOUND)
866 << " Status: " << mGetStatus << " Reason: " << mGetReason
867 << " Try:" << mHTTPFailCount+1 << "/" << HTTP_MAX_RETRY_COUNT << llendl;
868 if (cur_size == 0)
869 { 917 {
870 ++mHTTPFailCount; 918 mHTTPFailCount = max_attempts = 1; // Don't retry
871 if (mGetStatus == HTTP_NOT_FOUND || mHTTPFailCount >= HTTP_MAX_RETRY_COUNT) 919 llwarns << "Texture missing from server (404): " << mUrl << llendl;
920
921 //roll back to try UDP
922 if(mCanUseNET)
923 {
924 mState = INIT ;
925 mCanUseHTTP = false ;
926 setPriority(LLWorkerThread::PRIORITY_HIGH | mWorkPriority);
927 return false ;
928 }
929 else
872 { 930 {
931 // UDP is not an option, we are dead
873 resetFormattedData(); 932 resetFormattedData();
874 return true; // failed 933 return true; // failed
875 } 934 }
935 }
936 else if (mGetStatus == HTTP_SERVICE_UNAVAILABLE)
937 {
938 // *TODO: Should probably introduce a timer here to delay future HTTP requsts
939 // for a short time (~1s) to ease server load? Ideally the server would queue
940 // requests instead of returning 503... we already limit the number pending.
941 ++mHTTPFailCount;
942 max_attempts = mHTTPFailCount+1; // Keep retrying
943 LL_INFOS_ONCE("Texture") << "Texture server busy (503): " << mUrl << LL_ENDL;
944 }
945 else
946 {
947 const S32 HTTP_MAX_RETRY_COUNT = 3;
948 max_attempts = HTTP_MAX_RETRY_COUNT + 1;
949 ++mHTTPFailCount;
950 llinfos << "HTTP GET failed for: " << mUrl
951 << " Status: " << mGetStatus << " Reason: '" << mGetReason << "'"
952 << " Attempt:" << mHTTPFailCount+1 << "/" << max_attempts << llendl;
953 }
954
955 if (mHTTPFailCount >= max_attempts)
956 {
957 // Make max_attempts attempt at decoding what data we have, then bail forever on this image
958 if (cur_size > 0 && (mHTTPFailCount < (max_attempts+1)) )
959 {
960 // Use available data
961 mLoadedDiscard = mFormattedImage->getDiscardLevel();
962 mState = DECODE_IMAGE;
963 return false;
964 }
876 else 965 else
877 { 966 {
878 mState = SEND_HTTP_REQ; 967 //roll back to try UDP
879 return false; // retry 968 if(mCanUseNET)
969 {
970 mState = INIT ;
971 mCanUseHTTP = false ;
972 setPriority(LLWorkerThread::PRIORITY_HIGH | mWorkPriority);
973 return false ;
974 }
975 else
976 {
977 // UDP is not an option, we are dead
978 resetFormattedData();
979 return true; // failed
980 }
880 } 981 }
881 } 982 }
882 else 983 else
883 { 984 {
884 mState = DECODE_IMAGE; 985 mState = SEND_HTTP_REQ;
885 return false; // use what we have 986 return false; // retry
886 } 987 }
887 } 988 }
888 989
@@ -898,10 +999,15 @@ bool LLTextureFetchWorker::doWork(S32 param)
898 } 999 }
899 1000
900 llassert_always(mBufferSize == cur_size + mRequestedSize); 1001 llassert_always(mBufferSize == cur_size + mRequestedSize);
901 if (mHaveAllData) 1002 if (mHaveAllData && mRequestedDiscard == 0) //the image file is fully loaded.
902 { 1003 {
903 mFileSize = mBufferSize; 1004 mFileSize = mBufferSize;
904 } 1005 }
1006 else //the file size is unknown.
1007 {
1008 mFileSize = mBufferSize + 1 ; //flag the file is not fully loaded.
1009 }
1010
905 U8* buffer = new U8[mBufferSize]; 1011 U8* buffer = new U8[mBufferSize];
906 if (cur_size > 0) 1012 if (cur_size > 0)
907 { 1013 {
@@ -916,6 +1022,10 @@ bool LLTextureFetchWorker::doWork(S32 param)
916 mBufferSize = 0; 1022 mBufferSize = 0;
917 mLoadedDiscard = mRequestedDiscard; 1023 mLoadedDiscard = mRequestedDiscard;
918 mState = DECODE_IMAGE; 1024 mState = DECODE_IMAGE;
1025 if(mWriteToCacheState != NOT_WRITE)
1026 {
1027 mWriteToCacheState = SHOULD_WRITE ;
1028 }
919 setPriority(LLWorkerThread::PRIORITY_HIGH | mWorkPriority); 1029 setPriority(LLWorkerThread::PRIORITY_HIGH | mWorkPriority);
920 return false; 1030 return false;
921 } 1031 }
@@ -980,7 +1090,7 @@ bool LLTextureFetchWorker::doWork(S32 param)
980 1090
981 if (mState == WRITE_TO_CACHE) 1091 if (mState == WRITE_TO_CACHE)
982 { 1092 {
983 if (mInLocalCache || mSentRequest == UNSENT || mFormattedImage.isNull()) 1093 if (mWriteToCacheState != SHOULD_WRITE || mFormattedImage.isNull())
984 { 1094 {
985 // If we're in a local cache or we didn't actually receive any new data, 1095 // If we're in a local cache or we didn't actually receive any new data,
986 // or we failed to load anything, skip 1096 // or we failed to load anything, skip
@@ -1032,7 +1142,15 @@ bool LLTextureFetchWorker::doWork(S32 param)
1032 else 1142 else
1033 { 1143 {
1034 setPriority(LLWorkerThread::PRIORITY_LOW | mWorkPriority); 1144 setPriority(LLWorkerThread::PRIORITY_LOW | mWorkPriority);
1035 return true; 1145
1146 if(mDecodedDiscard<=0)
1147 {
1148 return true;
1149 }
1150 else
1151 {
1152 return false;
1153 }
1036 } 1154 }
1037 } 1155 }
1038 1156
diff --git a/linden/indra/newview/llvieweraudio.cpp b/linden/indra/newview/llvieweraudio.cpp
index 999e5dc..f043fb5 100644
--- a/linden/indra/newview/llvieweraudio.cpp
+++ b/linden/indra/newview/llvieweraudio.cpp
@@ -150,6 +150,8 @@ void audio_update_volume(bool force_update)
150 gSavedSettings.getBOOL("MuteUI") ? 0.f : gSavedSettings.getF32("AudioLevelUI")); 150 gSavedSettings.getBOOL("MuteUI") ? 0.f : gSavedSettings.getF32("AudioLevelUI"));
151 gAudiop->setSecondaryGain(LLAudioEngine::AUDIO_TYPE_AMBIENT, 151 gAudiop->setSecondaryGain(LLAudioEngine::AUDIO_TYPE_AMBIENT,
152 gSavedSettings.getBOOL("MuteAmbient") ? 0.f : gSavedSettings.getF32("AudioLevelAmbient")); 152 gSavedSettings.getBOOL("MuteAmbient") ? 0.f : gSavedSettings.getF32("AudioLevelAmbient"));
153 gAudiop->setSecondaryGain(LLAudioEngine::AUDIO_TYPE_GESTURE,
154 gSavedSettings.getBOOL("MuteGestures") ? 0.f : gSavedSettings.getF32("AudioLevelGestures"));
153 } 155 }
154 156
155 // Streaming Music 157 // Streaming Music
diff --git a/linden/indra/newview/llviewercontrol.cpp b/linden/indra/newview/llviewercontrol.cpp
index cca737c..0edb2c4 100644
--- a/linden/indra/newview/llviewercontrol.cpp
+++ b/linden/indra/newview/llviewercontrol.cpp
@@ -582,6 +582,7 @@ void settings_setup_listeners()
582 gSavedSettings.getControl("AudioLevelMusic")->getSignal()->connect(boost::bind(&handleAudioVolumeChanged, _1)); 582 gSavedSettings.getControl("AudioLevelMusic")->getSignal()->connect(boost::bind(&handleAudioVolumeChanged, _1));
583 gSavedSettings.getControl("AudioLevelMedia")->getSignal()->connect(boost::bind(&handleAudioVolumeChanged, _1)); 583 gSavedSettings.getControl("AudioLevelMedia")->getSignal()->connect(boost::bind(&handleAudioVolumeChanged, _1));
584 gSavedSettings.getControl("AudioLevelVoice")->getSignal()->connect(boost::bind(&handleAudioVolumeChanged, _1)); 584 gSavedSettings.getControl("AudioLevelVoice")->getSignal()->connect(boost::bind(&handleAudioVolumeChanged, _1));
585 gSavedSettings.getControl("AudioLevelGestures")->getSignal()->connect(boost::bind(&handleAudioVolumeChanged, _1));
585 gSavedSettings.getControl("AudioLevelDistance")->getSignal()->connect(boost::bind(&handleAudioVolumeChanged, _1)); 586 gSavedSettings.getControl("AudioLevelDistance")->getSignal()->connect(boost::bind(&handleAudioVolumeChanged, _1));
586 gSavedSettings.getControl("AudioLevelDoppler")->getSignal()->connect(boost::bind(&handleAudioVolumeChanged, _1)); 587 gSavedSettings.getControl("AudioLevelDoppler")->getSignal()->connect(boost::bind(&handleAudioVolumeChanged, _1));
587 gSavedSettings.getControl("AudioLevelRolloff")->getSignal()->connect(boost::bind(&handleAudioVolumeChanged, _1)); 588 gSavedSettings.getControl("AudioLevelRolloff")->getSignal()->connect(boost::bind(&handleAudioVolumeChanged, _1));
@@ -593,6 +594,7 @@ void settings_setup_listeners()
593 gSavedSettings.getControl("MuteVoice")->getSignal()->connect(boost::bind(&handleAudioVolumeChanged, _1)); 594 gSavedSettings.getControl("MuteVoice")->getSignal()->connect(boost::bind(&handleAudioVolumeChanged, _1));
594 gSavedSettings.getControl("MuteAmbient")->getSignal()->connect(boost::bind(&handleAudioVolumeChanged, _1)); 595 gSavedSettings.getControl("MuteAmbient")->getSignal()->connect(boost::bind(&handleAudioVolumeChanged, _1));
595 gSavedSettings.getControl("MuteUI")->getSignal()->connect(boost::bind(&handleAudioVolumeChanged, _1)); 596 gSavedSettings.getControl("MuteUI")->getSignal()->connect(boost::bind(&handleAudioVolumeChanged, _1));
597 gSavedSettings.getControl("MuteGestures")->getSignal()->connect(boost::bind(&handleAudioVolumeChanged, _1));
596 gSavedSettings.getControl("RenderVBOEnable")->getSignal()->connect(boost::bind(&handleRenderUseVBOChanged, _1)); 598 gSavedSettings.getControl("RenderVBOEnable")->getSignal()->connect(boost::bind(&handleRenderUseVBOChanged, _1));
597 gSavedSettings.getControl("WLSkyDetail")->getSignal()->connect(boost::bind(&handleWLSkyDetailChanged, _1)); 599 gSavedSettings.getControl("WLSkyDetail")->getSignal()->connect(boost::bind(&handleWLSkyDetailChanged, _1));
598 gSavedSettings.getControl("RenderLightingDetail")->getSignal()->connect(boost::bind(&handleRenderLightingDetailChanged, _1)); 600 gSavedSettings.getControl("RenderLightingDetail")->getSignal()->connect(boost::bind(&handleRenderLightingDetailChanged, _1));
diff --git a/linden/indra/newview/llviewermenu.cpp b/linden/indra/newview/llviewermenu.cpp
index fb69389..9e2cc3d 100644
--- a/linden/indra/newview/llviewermenu.cpp
+++ b/linden/indra/newview/llviewermenu.cpp
@@ -5443,6 +5443,24 @@ class LLWorldSetBusy : public view_listener_t
5443 } 5443 }
5444}; 5444};
5445 5445
5446class LLWorldToggleAutoResponse: public view_listener_t
5447{
5448 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
5449 {
5450 gSavedPerAccountSettings.setBOOL("InstantMessageResponseEnabled", !gSavedPerAccountSettings.getBOOL("InstantMessageResponseEnabled"));
5451 return true;
5452 }
5453
5454};
5455
5456class LLWorldCheckAutoResponse: public view_listener_t
5457{
5458 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
5459 {
5460 gMenuHolder->findControl(userdata["control"].asString())->setValue(gSavedPerAccountSettings.getBOOL("InstantMessageResponseEnabled"));
5461 return true;
5462 }
5463};
5446 5464
5447class LLWorldCreateLandmark : public view_listener_t 5465class LLWorldCreateLandmark : public view_listener_t
5448{ 5466{
@@ -10947,6 +10965,8 @@ void initialize_menus()
10947 addMenu(new LLWorldTeleportHome(), "World.TeleportHome"); 10965 addMenu(new LLWorldTeleportHome(), "World.TeleportHome");
10948 addMenu(new LLWorldSetAway(), "World.SetAway"); 10966 addMenu(new LLWorldSetAway(), "World.SetAway");
10949 addMenu(new LLWorldSetBusy(), "World.SetBusy"); 10967 addMenu(new LLWorldSetBusy(), "World.SetBusy");
10968 addMenu(new LLWorldToggleAutoResponse(), "World.ToggleAutoResponse");
10969 addMenu(new LLWorldCheckAutoResponse(), "World.CheckAutoResponse");
10950 10970
10951 addMenu(new LLWorldEnableCreateLandmark(), "World.EnableCreateLandmark"); 10971 addMenu(new LLWorldEnableCreateLandmark(), "World.EnableCreateLandmark");
10952 addMenu(new LLWorldEnableSetHomeLocation(), "World.EnableSetHomeLocation"); 10972 addMenu(new LLWorldEnableSetHomeLocation(), "World.EnableSetHomeLocation");
diff --git a/linden/indra/newview/llviewermessage.cpp b/linden/indra/newview/llviewermessage.cpp
index bc1aedb..b243e34 100644
--- a/linden/indra/newview/llviewermessage.cpp
+++ b/linden/indra/newview/llviewermessage.cpp
@@ -1566,195 +1566,198 @@ void process_improved_im(LLMessageSystem *msg, void **user_data)
1566 } 1566 }
1567 } 1567 }
1568 }*/ 1568 }*/
1569 bool typing_init = false; 1569 if (gSavedPerAccountSettings.getBOOL("InstantMessageResponseEnabled"))
1570 if( dialog == IM_TYPING_START && !is_muted )
1571 { 1570 {
1572 if(!gIMMgr->hasSession(computed_session_id) && gSavedPerAccountSettings.getBOOL("InstantMessageAnnounceIncoming")) 1571 bool typing_init = false;
1572 if( dialog == IM_TYPING_START && !is_muted )
1573 { 1573 {
1574 typing_init = true; 1574 if(!gIMMgr->hasSession(computed_session_id) && gSavedPerAccountSettings.getBOOL("InstantMessageAnnounceIncoming"))
1575 if( gSavedPerAccountSettings.getBOOL("InstantMessageAnnounceStealFocus") )
1576 { 1575 {
1577 /*LLUUID sess =*/ gIMMgr->addSession(name, IM_NOTHING_SPECIAL, from_id); 1576 typing_init = true;
1578 make_ui_sound("UISndNewIncomingIMSession"); 1577 if( gSavedPerAccountSettings.getBOOL("InstantMessageAnnounceStealFocus") )
1578 {
1579 /*LLUUID sess =*/ gIMMgr->addSession(name, IM_NOTHING_SPECIAL, from_id);
1580 make_ui_sound("UISndNewIncomingIMSession");
1581 }
1582 gIMMgr->addMessage(
1583 computed_session_id,
1584 from_id,
1585 name,
1586 llformat("You sense a disturbance in the force... (%s is typing)",name.c_str()),
1587 name,
1588 IM_NOTHING_SPECIAL,
1589 parent_estate_id,
1590 region_id,
1591 position,
1592 false);
1579 } 1593 }
1580 gIMMgr->addMessage(
1581 computed_session_id,
1582 from_id,
1583 name,
1584 llformat("You sense a disturbance in the force... (%s is typing)",name.c_str()),
1585 name,
1586 IM_NOTHING_SPECIAL,
1587 parent_estate_id,
1588 region_id,
1589 position,
1590 false);
1591 } 1594 }
1592 }
1593 1595
1594 bool is_auto_response = false; 1596 bool is_auto_response = false;
1595 if(dialog == IM_NOTHING_SPECIAL) { 1597 if(dialog == IM_NOTHING_SPECIAL) {
1596 // detect auto responses from GreenLife and compatible viewers 1598 // detect auto responses from compatible viewers
1597 is_auto_response = ( message.substr(0, 21) == "/me (auto-response): " ); 1599 is_auto_response = ( message.substr(0, 21) == "/me (auto-response): " );
1598 } 1600 }
1599 1601
1600 bool do_auto_response = false; 1602 bool do_auto_response = false;
1601 if( gSavedPerAccountSettings.getBOOL("InstantMessageResponseAnyone" ) ) 1603 if( gSavedPerAccountSettings.getBOOL("InstantMessageResponseAnyone" ) )
1602 do_auto_response = true; 1604 do_auto_response = true;
1603 1605
1604 // odd name for auto respond to non-friends 1606 // odd name for auto respond to non-friends
1605 if( gSavedPerAccountSettings.getBOOL("InstantMessageResponseFriends") && 1607 if( gSavedPerAccountSettings.getBOOL("InstantMessageResponseFriends") &&
1606 LLAvatarTracker::instance().getBuddyInfo(from_id) == NULL ) 1608 LLAvatarTracker::instance().getBuddyInfo(from_id) == NULL )
1607 do_auto_response = true; 1609 do_auto_response = true;
1608 1610
1609 if( is_muted && !gSavedPerAccountSettings.getBOOL("InstantMessageResponseMuted") ) 1611 if( is_muted && !gSavedPerAccountSettings.getBOOL("InstantMessageResponseMuted") )
1610 do_auto_response = false; 1612 do_auto_response = false;
1611 1613
1612 if( offline != IM_ONLINE ) 1614 if( offline != IM_ONLINE )
1613 do_auto_response = false; 1615 do_auto_response = false;
1614 1616
1615 if( is_auto_response ) 1617 if( is_auto_response )
1616 do_auto_response = false; 1618 do_auto_response = false;
1617 1619
1618 // handle cases where IM_NOTHING_SPECIAL is not an IM 1620 // handle cases where IM_NOTHING_SPECIAL is not an IM
1619 if( name == SYSTEM_FROM || 1621 if( name == SYSTEM_FROM ||
1620 from_id.isNull() || 1622 from_id.isNull() ||
1621 to_id.isNull() ) 1623 to_id.isNull() )
1622 do_auto_response = false; 1624 do_auto_response = false;
1623 1625
1624// if( do_auto_response ) 1626 // if( do_auto_response )
1625// [RLVa:KB] - Alternate: Emerald-370 1627 // [RLVa:KB] - Alternate: Emerald-370
1626 // Emerald specific: auto-response should be blocked if the avie is RLV @sendim=n restricted and the recipient is not an exception 1628 // Emerald specific: auto-response should be blocked if the avie is RLV @sendim=n restricted and the recipient is not an exception
1627 if ( (do_auto_response) && ( (!gRlvHandler.hasBehaviour(RLV_BHVR_SENDIM)) || (gRlvHandler.isException(RLV_BHVR_SENDIM, from_id)) ) ) 1629 if ( (do_auto_response) && ( (!gRlvHandler.hasBehaviour(RLV_BHVR_SENDIM)) || (gRlvHandler.isException(RLV_BHVR_SENDIM, from_id)) ) )
1628// [/RLVa:KB] 1630 // [/RLVa:KB]
1629 {
1630 if((dialog == IM_NOTHING_SPECIAL && !is_auto_response) ||
1631 (dialog == IM_TYPING_START && gSavedPerAccountSettings.getBOOL("InstantMessageShowOnTyping"))
1632 )
1633 { 1631 {
1634 BOOL has = gIMMgr->hasSession(computed_session_id); 1632 if((dialog == IM_NOTHING_SPECIAL && !is_auto_response) ||
1635 if(!has || gSavedPerAccountSettings.getBOOL("InstantMessageResponseRepeat") || typing_init) 1633 (dialog == IM_TYPING_START && gSavedPerAccountSettings.getBOOL("InstantMessageShowOnTyping"))
1634 )
1636 { 1635 {
1637 BOOL show = !gSavedPerAccountSettings.getBOOL("InstantMessageShowResponded"); 1636 BOOL has = gIMMgr->hasSession(computed_session_id);
1638 if(!has && show) 1637 if(!has || gSavedPerAccountSettings.getBOOL("InstantMessageResponseRepeat") || typing_init)
1639 {
1640 gIMMgr->addSession(name, IM_NOTHING_SPECIAL, from_id);
1641 }
1642 if(show)
1643 {
1644 gIMMgr->addMessage(
1645 computed_session_id,
1646 from_id,
1647 SYSTEM_FROM,
1648 llformat("Autoresponse sent to %s.",name.c_str()),
1649 LLStringUtil::null,
1650 IM_NOTHING_SPECIAL,
1651 parent_estate_id,
1652 region_id,
1653 position,
1654 false);
1655 }
1656 std::string my_name;
1657 gAgent.buildFullname(my_name);
1658
1659 //<-- Personalized Autoresponse by Madgeek
1660 std::string autoresponse = gSavedPerAccountSettings.getText("InstantMessageResponse");
1661 //Define Wildcards
1662 std::string fname_wildcard = "#f";
1663 std::string lname_wildcard = "#l";
1664 std::string time_wildcard = "#t";
1665 //Extract Name
1666 std::string f_name, l_name;
1667 std::istringstream inname(name);
1668 inname >> f_name >> l_name;
1669 //Generate a Timestamp
1670 time_t rawtime;
1671 time(&rawtime);
1672 char * timestamp_chars;
1673 timestamp_chars = asctime(localtime(&rawtime));
1674 std::string timestamp;
1675 timestamp.assign(timestamp_chars);
1676 timestamp = timestamp.substr(0, timestamp.find('\n'));
1677 //Handle Replacements
1678 size_t found = autoresponse.find(fname_wildcard);
1679 while(found != std::string::npos)
1680 { 1638 {
1681 autoresponse.replace(found, 2, f_name); 1639 BOOL show = !gSavedPerAccountSettings.getBOOL("InstantMessageShowResponded");
1682 found = autoresponse.find(fname_wildcard); 1640 if(!has && show)
1683 } 1641 {
1684 found = autoresponse.find(lname_wildcard); 1642 gIMMgr->addSession(name, IM_NOTHING_SPECIAL, from_id);
1685 while(found != std::string::npos) 1643 }
1686 { 1644 if(show)
1687 autoresponse.replace(found, 2, l_name); 1645 {
1646 gIMMgr->addMessage(
1647 computed_session_id,
1648 from_id,
1649 SYSTEM_FROM,
1650 llformat("Autoresponse sent to %s.",name.c_str()),
1651 LLStringUtil::null,
1652 IM_NOTHING_SPECIAL,
1653 parent_estate_id,
1654 region_id,
1655 position,
1656 false);
1657 }
1658 std::string my_name;
1659 gAgent.buildFullname(my_name);
1660
1661 //<-- Personalized Autoresponse by Madgeek
1662 std::string autoresponse = gSavedPerAccountSettings.getText("InstantMessageResponse");
1663 //Define Wildcards
1664 std::string fname_wildcard = "#f";
1665 std::string lname_wildcard = "#l";
1666 std::string time_wildcard = "#t";
1667 //Extract Name
1668 std::string f_name, l_name;
1669 std::istringstream inname(name);
1670 inname >> f_name >> l_name;
1671 //Generate a Timestamp
1672 time_t rawtime;
1673 time(&rawtime);
1674 char * timestamp_chars;
1675 timestamp_chars = asctime(localtime(&rawtime));
1676 std::string timestamp;
1677 timestamp.assign(timestamp_chars);
1678 timestamp = timestamp.substr(0, timestamp.find('\n'));
1679 //Handle Replacements
1680 size_t found = autoresponse.find(fname_wildcard);
1681 while(found != std::string::npos)
1682 {
1683 autoresponse.replace(found, 2, f_name);
1684 found = autoresponse.find(fname_wildcard);
1685 }
1688 found = autoresponse.find(lname_wildcard); 1686 found = autoresponse.find(lname_wildcard);
1689 } 1687 while(found != std::string::npos)
1690 found = autoresponse.find(time_wildcard); 1688 {
1691 while(found != std::string::npos) 1689 autoresponse.replace(found, 2, l_name);
1692 { 1690 found = autoresponse.find(lname_wildcard);
1693 autoresponse.replace(found, 2, timestamp); 1691 }
1694 found = autoresponse.find(time_wildcard); 1692 found = autoresponse.find(time_wildcard);
1695 } 1693 while(found != std::string::npos)
1696 //--> Personalized Autoresponse 1694 {
1697 1695 autoresponse.replace(found, 2, timestamp);
1698 if(gSavedPerAccountSettings.getBOOL("InstantMessageResponseRepeat") && has && !typing_init) { 1696 found = autoresponse.find(time_wildcard);
1699 // send as busy auto response instead to prevent endless repeating replies 1697 }
1700 // when other end is a bot or broken client that answers to every usual IM 1698 //--> Personalized Autoresponse
1701 // reasoning for this decision can be found in RFC2812 3.3.2 Notices 1699
1702 // where PRIVMSG can be seen as IM_NOTHING_SPECIAL and NOTICE can be seen as 1700 if(gSavedPerAccountSettings.getBOOL("InstantMessageResponseRepeat") && has && !typing_init) {
1703 // IM_BUSY_AUTO_RESPONSE. The assumption here is that no existing client 1701 // send as busy auto response instead to prevent endless repeating replies
1704 // responds to IM_BUSY_AUTO_RESPONSE. --TS 1702 // when other end is a bot or broken client that answers to every usual IM
1705 std::string response = autoresponse; 1703 // reasoning for this decision can be found in RFC2812 3.3.2 Notices
1706 pack_instant_message( 1704 // where PRIVMSG can be seen as IM_NOTHING_SPECIAL and NOTICE can be seen as
1707 gMessageSystem, 1705 // IM_BUSY_AUTO_RESPONSE. The assumption here is that no existing client
1708 gAgent.getID(), 1706 // responds to IM_BUSY_AUTO_RESPONSE. --TS
1709 FALSE, 1707 std::string response = autoresponse;
1710 gAgent.getSessionID(), 1708 pack_instant_message(
1711 from_id, 1709 gMessageSystem,
1712 my_name, 1710 gAgent.getID(),
1713 response, 1711 FALSE,
1714 IM_OFFLINE, 1712 gAgent.getSessionID(),
1715 IM_BUSY_AUTO_RESPONSE, 1713 from_id,
1716 session_id); 1714 my_name,
1717 } else { 1715 response,
1718 std::string response = "/me (auto-response): "+autoresponse; 1716 IM_OFFLINE,
1719 pack_instant_message( 1717 IM_BUSY_AUTO_RESPONSE,
1720 gMessageSystem, 1718 session_id);
1721 gAgent.getID(), 1719 } else {
1722 FALSE, 1720 std::string response = "/me (auto-response): "+autoresponse;
1723 gAgent.getSessionID(), 1721 pack_instant_message(
1724 from_id, 1722 gMessageSystem,
1725 my_name, 1723 gAgent.getID(),
1726 response, 1724 FALSE,
1727 IM_OFFLINE, 1725 gAgent.getSessionID(),
1728 IM_NOTHING_SPECIAL, 1726 from_id,
1729 session_id); 1727 my_name,
1730 } 1728 response,
1731 gAgent.sendReliableMessage(); 1729 IM_OFFLINE,
1732 if(gSavedPerAccountSettings.getBOOL("InstantMessageResponseItem") && (!has || typing_init)) 1730 IM_NOTHING_SPECIAL,
1733 { 1731 session_id);
1734 LLUUID itemid = (LLUUID)gSavedPerAccountSettings.getString("InstantMessageResponseItemData"); 1732 }
1735 LLViewerInventoryItem* item = gInventory.getItem(itemid); 1733 gAgent.sendReliableMessage();
1736 if(item) 1734 if(gSavedPerAccountSettings.getBOOL("InstantMessageResponseItem") && (!has || typing_init))
1737 { 1735 {
1738 //childSetValue("im_give_disp_rect_txt","Currently set to: "+item->getName()); 1736 LLUUID itemid = (LLUUID)gSavedPerAccountSettings.getString("InstantMessageResponseItemData");
1739 if(show) 1737 LLViewerInventoryItem* item = gInventory.getItem(itemid);
1738 if(item)
1740 { 1739 {
1741 gIMMgr->addMessage( 1740 //childSetValue("im_give_disp_rect_txt","Currently set to: "+item->getName());
1742 computed_session_id, 1741 if(show)
1743 from_id, 1742 {
1744 SYSTEM_FROM, 1743 gIMMgr->addMessage(
1745 llformat("Sent %s auto-response item \"%s\"",name.c_str(),item->getName().c_str()), 1744 computed_session_id,
1746 LLStringUtil::null, 1745 from_id,
1747 IM_NOTHING_SPECIAL, 1746 SYSTEM_FROM,
1748 parent_estate_id, 1747 llformat("Sent %s auto-response item \"%s\"",name.c_str(),item->getName().c_str()),
1749 region_id, 1748 LLStringUtil::null,
1750 position, 1749 IM_NOTHING_SPECIAL,
1751 false); 1750 parent_estate_id,
1751 region_id,
1752 position,
1753 false);
1754 }
1755 LLToolDragAndDrop::giveInventory(from_id, item);
1752 } 1756 }
1753 LLToolDragAndDrop::giveInventory(from_id, item);
1754 } 1757 }
1758 //InstantMessageResponseItem<
1759
1755 } 1760 }
1756 //InstantMessageResponseItem<
1757
1758 } 1761 }
1759 } 1762 }
1760 } 1763 }
@@ -3931,8 +3934,10 @@ void process_sound_trigger(LLMessageSystem *msg, void **)
3931 msg->getF32Fast(_PREHASH_SoundData, _PREHASH_Gain, gain); 3934 msg->getF32Fast(_PREHASH_SoundData, _PREHASH_Gain, gain);
3932 3935
3933 //If we have sounds muted, don't even try to load or trigger the sound. 3936 //If we have sounds muted, don't even try to load or trigger the sound.
3934 if(gSavedSettings.getBOOL("MuteSounds") || gain == 0.0) 3937 if (gSavedSettings.getBOOL("MuteSounds") || gain == 0.0)
3938 {
3935 return; 3939 return;
3940 }
3936 3941
3937 // adjust sound location to true global coords 3942 // adjust sound location to true global coords
3938 LLVector3d pos_global = from_region_handle(region_handle); 3943 LLVector3d pos_global = from_region_handle(region_handle);
@@ -3940,9 +3945,6 @@ void process_sound_trigger(LLMessageSystem *msg, void **)
3940 pos_global.mdV[VY] += pos_local.mV[VY]; 3945 pos_global.mdV[VY] += pos_local.mV[VY];
3941 pos_global.mdV[VZ] += pos_local.mV[VZ]; 3946 pos_global.mdV[VZ] += pos_local.mV[VZ];
3942 3947
3943 // Don't play sounds if sound settings are muted.
3944 if (gSavedSettings.getBOOL("MuteSounds")) return;
3945
3946 // Don't play a trigger sound if you can't hear it due 3948 // Don't play a trigger sound if you can't hear it due
3947 // to parcel "local audio only" settings. 3949 // to parcel "local audio only" settings.
3948 if (!LLViewerParcelMgr::getInstance()->canHearSound(pos_global)) return; 3950 if (!LLViewerParcelMgr::getInstance()->canHearSound(pos_global)) return;
@@ -3960,11 +3962,25 @@ void process_sound_trigger(LLMessageSystem *msg, void **)
3960 return; 3962 return;
3961 } 3963 }
3962 3964
3965 // Don't load sounds if we have gestures muted -- MC
3966 if ((owner_id != gAgent.getID()) && (object_id == owner_id))
3967 {
3968 if (gSavedSettings.getBOOL("MuteGestures"))
3969 {
3970 return;
3971 }
3972 else
3973 {
3974 gAudiop->triggerSound(sound_id, owner_id, gain, LLAudioEngine::AUDIO_TYPE_GESTURE, pos_global);
3975 }
3976 }
3977
3963 // Don't play sounds from a region with maturity above current agent maturity 3978 // Don't play sounds from a region with maturity above current agent maturity
3964 if( !gAgent.canAccessMaturityInRegion( region_handle ) ) 3979 // Actually, let's -- MC
3980 /*if( !gAgent.canAccessMaturityInRegion( region_handle ) )
3965 { 3981 {
3966 return; 3982 return;
3967 } 3983 }*/
3968 3984
3969 gAudiop->triggerSound(sound_id, owner_id, gain, LLAudioEngine::AUDIO_TYPE_SFX, pos_global); 3985 gAudiop->triggerSound(sound_id, owner_id, gain, LLAudioEngine::AUDIO_TYPE_SFX, pos_global);
3970} 3986}
@@ -4000,11 +4016,12 @@ void process_preload_sound(LLMessageSystem *msg, void **user_data)
4000 // help us out. 4016 // help us out.
4001 4017
4002 // Don't play sounds from a region with maturity above current agent maturity 4018 // Don't play sounds from a region with maturity above current agent maturity
4003 LLVector3d pos_global = objectp->getPositionGlobal(); 4019 // Actually, let's -- MC
4020 /*LLVector3d pos_global = objectp->getPositionGlobal();
4004 if( !gAgent.canAccessMaturityAtGlobal( pos_global ) ) 4021 if( !gAgent.canAccessMaturityAtGlobal( pos_global ) )
4005 { 4022 {
4006 return; 4023 return;
4007 } 4024 }*/
4008 4025
4009 // Add audioData starts a transfer internally. 4026 // Add audioData starts a transfer internally.
4010 sourcep->addAudioData(datap, FALSE); 4027 sourcep->addAudioData(datap, FALSE);
@@ -4040,11 +4057,12 @@ void process_attached_sound(LLMessageSystem *msg, void **user_data)
4040 4057
4041 4058
4042 // Don't play sounds from a region with maturity above current agent maturity 4059 // Don't play sounds from a region with maturity above current agent maturity
4043 LLVector3d pos = objectp->getPositionGlobal(); 4060 // Actually, let's -- MC
4061 /*LLVector3d pos = objectp->getPositionGlobal();
4044 if( !gAgent.canAccessMaturityAtGlobal(pos) ) 4062 if( !gAgent.canAccessMaturityAtGlobal(pos) )
4045 { 4063 {
4046 return; 4064 return;
4047 } 4065 }*/
4048 4066
4049 objectp->setAttachedSound(sound_id, owner_id, gain, flags); 4067 objectp->setAttachedSound(sound_id, owner_id, gain, flags);
4050} 4068}
diff --git a/linden/indra/newview/llvoavatar.cpp b/linden/indra/newview/llvoavatar.cpp
index 2732d48..f3eec54 100644
--- a/linden/indra/newview/llvoavatar.cpp
+++ b/linden/indra/newview/llvoavatar.cpp
@@ -3428,7 +3428,7 @@ void LLVOAvatar::resolveClient(LLColor4& avatar_name_color, std::string& client,
3428 } 3428 }
3429 if(avatar->getTE(5)->getID() != avatar->getTE(6)->getID() && !client.empty()) 3429 if(avatar->getTE(5)->getID() != avatar->getTE(6)->getID() && !client.empty())
3430 { 3430 {
3431 client = "Failure"; 3431 client = "Unknown";
3432 avatar_name_color = LLColor4::grey; 3432 avatar_name_color = LLColor4::grey;
3433 } 3433 }
3434 if(client.empty() && LLVOAvatar::sClientResolutionList.has("default")) 3434 if(client.empty() && LLVOAvatar::sClientResolutionList.has("default"))
diff --git a/linden/indra/newview/skins/default/xui/en-us/floater_busy.xml b/linden/indra/newview/skins/default/xui/en-us/floater_busy.xml
index a9bd613..6d74882 100644
--- a/linden/indra/newview/skins/default/xui/en-us/floater_busy.xml
+++ b/linden/indra/newview/skins/default/xui/en-us/floater_busy.xml
@@ -1,11 +1,14 @@
1<?xml version="1.0" encoding="utf-8" standalone="yes" ?> 1<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
2<floater name="busy" title="IM Response Options" 2<floater name="busy" title="IM Response Options"
3 height="446" width="255" min_height="446" min_width="255" 3 height="476" width="265" min_height="476" min_width="265"
4 follows="top|right" can_close="true" can_drag_on_left="false" 4 follows="top|right" can_close="true" can_drag_on_left="false"
5 can_minimize="true" can_resize="false" can_tear_off="false"> 5 can_minimize="true" can_resize="false" can_tear_off="false">
6 6
7 <check_box bottom="-40" enabled="true" follows="left|top" font="SansSerifSmall" height="16" 7 <check_box bottom="-40" enabled="true" follows="left|top" font="SansSerifSmall" height="16"
8 initial_value="false" label="Announce incoming instant messages" left="10" mouse_opaque="true" 8 initial_value="false" label="Auto-respond to incoming IMs" left="10" mouse_opaque="true"
9 name="InstantMessageResponseEnabled" radio_style="false" width="270"/>
10 <check_box bottom_delta="-30" enabled="true" follows="left|top" font="SansSerifSmall" height="16"
11 initial_value="false" label="Announce incoming IMs" left="10" mouse_opaque="true"
9 name="InstantMessageAnnounceIncoming" radio_style="false" width="270"/> 12 name="InstantMessageAnnounceIncoming" radio_style="false" width="270"/>
10 <check_box bottom_delta="-20" enabled="true" follows="left|top" font="SansSerifSmall" height="16" 13 <check_box bottom_delta="-20" enabled="true" follows="left|top" font="SansSerifSmall" height="16"
11 initial_value="false" label="Steal focus" left_delta="10" mouse_opaque="true" name="InstantMessageAnnounceStealFocus" 14 initial_value="false" label="Steal focus" left_delta="10" mouse_opaque="true" name="InstantMessageAnnounceStealFocus"
@@ -58,7 +61,7 @@
58 61
59 <text_editor type="string" length="1" bottom_delta="-85" embedded_items="false" enabled="true" 62 <text_editor type="string" length="1" bottom_delta="-85" embedded_items="false" enabled="true"
60 follows="left|top" font="SansSerifSmall" height="75" left_delta="-15" max_length="1100" 63 follows="left|top" font="SansSerifSmall" height="75" left_delta="-15" max_length="1100"
61 mouse_opaque="true" name="im_response" width="230" word_wrap="true"/> 64 mouse_opaque="true" name="im_response" width="245" word_wrap="true"/>
62 65
63 <check_box bottom_delta="-30" enabled="true" follows="left|top" font="SansSerifSmall" height="16" 66 <check_box bottom_delta="-30" enabled="true" follows="left|top" font="SansSerifSmall" height="16"
64 initial_value="false" label="Send an item along with the response" left_delta="0" 67 initial_value="false" label="Send an item along with the response" left_delta="0"
@@ -66,28 +69,28 @@
66 width="270"/> 69 width="270"/>
67 70
68 <view_border blevel_style="in" bottom_delta="-20" follows="left|top" height="16" left_delta="0" 71 <view_border blevel_style="in" bottom_delta="-20" follows="left|top" height="16" left_delta="0"
69 mouse_opaque="false" name="im_give_drop_target_rect" width="230"/> 72 mouse_opaque="false" name="im_give_drop_target_rect" width="245"/>
70 73
71 <text bg_visible="false" border_drop_shadow_visible="false" border_visible="false" bottom_delta="0" 74 <text bg_visible="false" border_drop_shadow_visible="false" border_visible="false" bottom_delta="0"
72 drop_shadow_visible="true" follows="left|top" font="SansSerifSmall" h_pad="0" halign="center" 75 drop_shadow_visible="true" follows="left|top" font="SansSerifSmall" h_pad="0" halign="center"
73 height="16" left_delta="0" mouse_opaque="true" name="Give inventory" tool_tip="Drop an inventory item here to have it given along with the auto-response." 76 height="16" left_delta="0" mouse_opaque="true" name="Give inventory" tool_tip="Drop an inventory item here to have it given along with the auto-response."
74 v_pad="2" width="230"> 77 v_pad="2" width="245">
75 Drop an inventory item here 78 Drop an inventory item here
76 </text> 79 </text>
77 80
78 <view_border blevel_style="in" bottom_delta="-18" follows="left|top" height="16" left_delta="0" 81 <view_border blevel_style="in" bottom_delta="-18" follows="left|top" height="16" left_delta="0"
79 mouse_opaque="false" name="im_give_disp_rect" width="230"/> 82 mouse_opaque="false" name="im_give_disp_rect" width="245"/>
80 83
81 <text bg_visible="false" border_drop_shadow_visible="false" border_visible="false" bottom_delta="0" 84 <text bg_visible="false" border_drop_shadow_visible="false" border_visible="false" bottom_delta="0"
82 drop_shadow_visible="true" follows="left|top" font="SansSerifSmall" h_pad="0" halign="center" 85 drop_shadow_visible="true" follows="left|top" font="SansSerifSmall" h_pad="0" halign="center"
83 height="16" left_delta="0" mouse_opaque="true" name="im_give_disp_rect_txt" tool_tip="" 86 height="16" left_delta="0" mouse_opaque="true" name="im_give_disp_rect_txt" tool_tip=""
84 v_pad="2" width="230"> 87 v_pad="2" width="245">
85 Currently set to: ITEM 88 Currently set to: ITEM
86 </text> 89 </text>
87 90
88 <button bottom_delta="-26" follows="top|right" height="22" label="Cancel" 91 <button bottom_delta="-26" follows="top|right" height="22" label="Cancel"
89 right="-10" name="btn_cancel" tool_tip="" enagled="true" width="80" /> 92 right="-4" name="btn_cancel" tool_tip="" enagled="true" width="80" />
90 <button bottom_delta="0" follows="top|right" height="22" label="OK" 93 <button bottom_delta="0" follows="top|right" height="22" label="OK"
91 right="-90" name="btn_ok" tool_tip="" enabled="true" width="80" /> 94 right="-85" name="btn_ok" tool_tip="" enabled="true" width="80" />
92 95
93</floater> \ No newline at end of file 96</floater> \ No newline at end of file
diff --git a/linden/indra/newview/skins/default/xui/en-us/floater_preferences.xml b/linden/indra/newview/skins/default/xui/en-us/floater_preferences.xml
index 81168be..214db25 100644
--- a/linden/indra/newview/skins/default/xui/en-us/floater_preferences.xml
+++ b/linden/indra/newview/skins/default/xui/en-us/floater_preferences.xml
@@ -15,12 +15,9 @@
15 left_delta="93" mouse_opaque="true" name="Apply" scale_image="true" 15 left_delta="93" mouse_opaque="true" name="Apply" scale_image="true"
16 width="90" /> 16 width="90" />
17 <button bottom="-455" enabled="true" follows="left|bottom" font="SansSerif" 17 <button bottom="-455" enabled="true" follows="left|bottom" font="SansSerif"
18 halign="center" height="20" label="About" label_selected="About" left="9"
19 mouse_opaque="true" name="About..." scale_image="true" width="90" />
20 <button bottom="-455" enabled="true" follows="left|bottom" font="SansSerif"
21 halign="center" height="20" 18 halign="center" height="20"
22 help_url="http://secondlife.com/app/help/technical/preferences.php" 19 help_url="http://secondlife.com/app/help/technical/preferences.php"
23 label="Help" label_selected="Help" left_delta="93" mouse_opaque="true" 20 label="Help" label_selected="Help" left="9" mouse_opaque="true"
24 name="Help" scale_image="true" width="90" /> 21 name="Help" scale_image="true" width="90" />
25 <tab_container bottom="-431" enabled="true" follows="left|top|right|bottom" height="410" 22 <tab_container bottom="-431" enabled="true" follows="left|top|right|bottom" height="410"
26 left="0" mouse_opaque="false" name="pref core" tab_group="1" 23 left="0" mouse_opaque="false" name="pref core" tab_group="1"
diff --git a/linden/indra/newview/skins/default/xui/en-us/menu_viewer.xml b/linden/indra/newview/skins/default/xui/en-us/menu_viewer.xml
index 8033ba7..836c4dd 100644
--- a/linden/indra/newview/skins/default/xui/en-us/menu_viewer.xml
+++ b/linden/indra/newview/skins/default/xui/en-us/menu_viewer.xml
@@ -503,6 +503,11 @@
503 <menu_item_call name="Set Busy" label="Set Busy"> 503 <menu_item_call name="Set Busy" label="Set Busy">
504 <on_click function="World.SetBusy" userdata="" /> 504 <on_click function="World.SetBusy" userdata="" />
505 </menu_item_call> 505 </menu_item_call>
506 <menu_item_check name="Auto-Respond to IMs" label="Auto-Respond to IMs">
507 <on_click function="World.ToggleAutoResponse" userdata="" />
508 <on_check function="World.CheckAutoResponse" userdata="" />
509 </menu_item_check>
510 <menu_item_separator />
506 <menu_item_call name="Stop Animating My Avatar" enabled="false" 511 <menu_item_call name="Stop Animating My Avatar" enabled="false"
507 label="Stop Animating My Avatar"> 512 label="Stop Animating My Avatar">
508 <on_click function="Tools.StopAllAnimations" userdata="" /> 513 <on_click function="Tools.StopAllAnimations" userdata="" />
diff --git a/linden/indra/newview/skins/default/xui/en-us/panel_audio.xml b/linden/indra/newview/skins/default/xui/en-us/panel_audio.xml
index ee9695e..c6e75fc 100644
--- a/linden/indra/newview/skins/default/xui/en-us/panel_audio.xml
+++ b/linden/indra/newview/skins/default/xui/en-us/panel_audio.xml
@@ -49,6 +49,14 @@
49 image_selected="icn_speaker-muted_dark.tga" 49 image_selected="icn_speaker-muted_dark.tga"
50 image_unselected="icn_speaker_dark.tga" label="" label_width="55" 50 image_unselected="icn_speaker_dark.tga" label="" label_width="55"
51 left="150" name="mute_wind" tab_stop="false" toggle="true" width="25" /> 51 left="150" name="mute_wind" tab_stop="false" toggle="true" width="25" />
52 <slider bottom_delta="-20" control_name="AudioLevelGestures" follows="left|top|right"
53 height="15" increment="0.05" initial_val="0.5" label="Gestures:"
54 label_width="55" left="10" max_val="1" min_val="0" name="Gestures"
55 show_text="false" volume="true" width="180" />
56 <button bottom_delta="0" control_name="MuteGestures" follows="top|right" height="16"
57 image_selected="icn_speaker-muted_dark.tga"
58 image_unselected="icn_speaker_dark.tga" label="" label_width="55"
59 left="150" name="mute_gestures" tab_stop="false" toggle="true" width="25" />
52 <slider bottom_delta="-20" control_name="AudioLevelUI" follows="left|top|right" 60 <slider bottom_delta="-20" control_name="AudioLevelUI" follows="left|top|right"
53 height="15" increment="0.05" initial_val="0.5" label="Interface:" label_width="55" 61 height="15" increment="0.05" initial_val="0.5" label="Interface:" label_width="55"
54 left="10" max_val="1" min_val="0" name="UI Volume" show_text="false" 62 left="10" max_val="1" min_val="0" name="UI Volume" show_text="false"
diff --git a/linden/indra/newview/skins/default/xui/en-us/panel_media_remote_expanded.xml b/linden/indra/newview/skins/default/xui/en-us/panel_media_remote_expanded.xml
index 7266536..3fdea5e 100644
--- a/linden/indra/newview/skins/default/xui/en-us/panel_media_remote_expanded.xml
+++ b/linden/indra/newview/skins/default/xui/en-us/panel_media_remote_expanded.xml
@@ -2,8 +2,8 @@
2<panel bg_visible="false" border="false" border_visible="false" bottom="1" 2<panel bg_visible="false" border="false" border_visible="false" bottom="1"
3 follows="right|bottom" height="185" left="0" name="media_remote" 3 follows="right|bottom" height="185" left="0" name="media_remote"
4 use_bounding_rect="true" width="220"> 4 use_bounding_rect="true" width="220">
5 <panel bottom="0" filename="panel_bg_tab.xml" height="187" left="0" width="220" /> 5 <panel bottom="0" filename="panel_bg_tab.xml" height="197" left="0" width="220" />
6 <panel border="false" bottom="22" filename="panel_audio.xml" height="160" 6 <panel border="false" bottom="22" filename="panel_audio.xml" height="174"
7 label="Audio &amp; Video" name="Volume Panel" width="220" /> 7 label="Audio &amp; Video" name="Volume Panel" width="220" />
8 <panel bottom_delta="-10" filename="panel_media_controls.xml" left="0" /> 8 <panel bottom_delta="-10" filename="panel_media_controls.xml" left="0" />
9 <string name="play_label"> 9 <string name="play_label">
diff --git a/linden/indra/newview/skins/default/xui/en-us/panel_preferences_advanced.xml b/linden/indra/newview/skins/default/xui/en-us/panel_preferences_advanced.xml
index ce2bbc1..310e056 100644
--- a/linden/indra/newview/skins/default/xui/en-us/panel_preferences_advanced.xml
+++ b/linden/indra/newview/skins/default/xui/en-us/panel_preferences_advanced.xml
@@ -14,40 +14,33 @@
14 font="SansSerifSmall" height="16" initial_value="false" 14 font="SansSerifSmall" height="16" initial_value="false"
15 label="Disable teleport screen" left="12" mouse_opaque="true" 15 label="Disable teleport screen" left="12" mouse_opaque="true"
16 name="disable_tp_screen_check" radio_style="false" width="217" /> 16 name="disable_tp_screen_check" radio_style="false" width="217" />
17 <text bg_visible="false" border_drop_shadow_visible="false" border_visible="false" 17 <check_box bottom_delta="-25" enabled="true" follows="left|top"
18 bottom_delta="-25" drop_shadow_visible="true" follows="left|top"
19 font="SansSerifsmall" h_pad="0" halign="left" height="16" left="16"
20 mouse_opaque="true" name="online_no" v_pad="0" width="200">
21 Show client names:
22 </text>
23 <check_box bottom_delta="0" enabled="true" follows="left|top"
24 font="SansSerifSmall" height="16" initial_value="false" 18 font="SansSerifSmall" height="16" initial_value="false"
25 label="in nametag" left_delta="100" mouse_opaque="true" 19 label="Show client names in nametags" left="12" mouse_opaque="true"
26 name="client_name_tag_check" radio_style="false" width="160" /> 20 name="client_name_tag_check" radio_style="false" width="160" />
27 <check_box bottom_delta="0" enabled="true" follows="left|top" 21 <check_box bottom_delta="-18" enabled="true" follows="left|top"
28 font="SansSerifSmall" height="16" initial_value="false" 22 font="SansSerifSmall" height="16" initial_value="false"
29 label="changing nametag color" left_delta="80" mouse_opaque="true" 23 label="Show client names with color" left_delta="0" mouse_opaque="true"
30 name="client_name_color_check" radio_style="false" width="160" /> 24 name="client_name_color_check" radio_style="false" width="160" />
31 <check_box bottom_delta="0" enabled="true" follows="left|top" 25 <check_box bottom_delta="-18" enabled="true" follows="left|top"
32 font="SansSerifSmall" height="16" initial_value="false" 26 font="SansSerifSmall" height="16" initial_value="false"
33 label="in tooltip" left_delta="140" mouse_opaque="true" 27 label="Show client names in hovertip" left_delta="0" mouse_opaque="true"
34 name="client_name_hover_check" radio_style="false" width="160" /> 28 name="client_name_hover_check" radio_style="false" width="160" />
35 <check_box bottom_delta="-18" enabled="true" follows="left|top" 29 <check_box bottom_delta="-18" enabled="true" follows="left|top"
36 font="SansSerifSmall" height="16" initial_value="false" 30 font="SansSerifSmall" height="16" initial_value="false"
37 label="Broadcast your client name to others" left="12" mouse_opaque="true" 31 label="Show your client name to others" left_delta="0" mouse_opaque="true"
38 name="client_name_tag_broadcast_check" radio_style="false" width="217" /> 32 name="client_name_tag_broadcast_check" radio_style="false" width="217" />
39 <check_box bottom_delta="-25" enabled="true" follows="left|top" 33 <check_box bottom_delta="-25" enabled="true" follows="left|top"
40 font="SansSerifSmall" height="16" initial_value="false" 34 font="SansSerifSmall" height="16" initial_value="false"
41 label="Enable shadows (WARNING: unstable and requires Ultra graphics)" left="12" mouse_opaque="true" 35 label="Enable shadows (WARNING: unstable and requires Ultra graphics)" left="12" mouse_opaque="true"
42 name="shadows_check" radio_style="false" width="217" /> 36 name="shadows_check" radio_style="false" width="217" />
43 37
44 38 <text bottom_delta="-25" left="16" height="15" width="300"
45 <text bottom_delta="-25" left="16" height="15" width="220"
46 follows="top|left"> 39 follows="top|left">
47 Allow region Windlight settings (LightShare): 40 Allow region WindLight settings (LightShare):
48 </text> 41 </text>
49 <combo_box name="lightshare_combo" 42 <combo_box name="lightshare_combo"
50 bottom_delta="-2" left="240" height="18" width="120" 43 bottom_delta="-2" left_delta="250" height="18" width="120"
51 allow_text_entry="false" follows="left|top"> 44 allow_text_entry="false" follows="left|top">
52 <combo_item type="string" name="never" value="0"> 45 <combo_item type="string" name="never" value="0">
53 Never 46 Never
@@ -60,7 +53,6 @@
60 </combo_item> 53 </combo_item>
61 </combo_box> 54 </combo_box>
62 55
63
64 <check_box bottom_delta="-25" enabled="true" follows="left|top" 56 <check_box bottom_delta="-25" enabled="true" follows="left|top"
65 font="SansSerifSmall" height="16" initial_value="false" 57 font="SansSerifSmall" height="16" initial_value="false"
66 label="Use HTTP texture fetching" left="12" mouse_opaque="true" 58 label="Use HTTP texture fetching" left="12" mouse_opaque="true"
@@ -94,7 +86,6 @@
94 mouse_opaque="true" name="language_is_public" 86 mouse_opaque="true" name="language_is_public"
95 radio_style="false" tool_tip="This lets in-world objects know your preferred language." 87 radio_style="false" tool_tip="This lets in-world objects know your preferred language."
96 width="256" /> 88 width="256" />
97
98 <check_box bottom_delta="-25" enabled="true" 89 <check_box bottom_delta="-25" enabled="true"
99 follows="left|top" font="SansSerifSmall" height="16" hidden="false" 90 follows="left|top" font="SansSerifSmall" height="16" hidden="false"
100 initial_value="false" label="Use MU* pose style chat and IM" left="12" 91 initial_value="false" label="Use MU* pose style chat and IM" left="12"
@@ -103,7 +94,7 @@
103 width="256" /> 94 width="256" />
104 <check_box bottom_delta="0" enabled="true" 95 <check_box bottom_delta="0" enabled="true"
105 follows="left|top" font="SansSerifSmall" height="16" hidden="false" 96 follows="left|top" font="SansSerifSmall" height="16" hidden="false"
106 initial_value="false" label="Auto-close OOC chat" left_delta="180" 97 initial_value="false" label="Auto-close OOC (( )) chat" left_delta="250"
107 mouse_opaque="true" name="auto_close_ooc" 98 mouse_opaque="true" name="auto_close_ooc"
108 radio_style="false" tool_tip="Auto-close OOC chat (i.e. add )) if not found and (( was used)." 99 radio_style="false" tool_tip="Auto-close OOC chat (i.e. add )) if not found and (( was used)."
109 width="256" /> 100 width="256" />
diff --git a/linden/indra/newview/skins/default/xui/en-us/panel_preferences_audio.xml b/linden/indra/newview/skins/default/xui/en-us/panel_preferences_audio.xml
index 400da56..c6bb938 100644
--- a/linden/indra/newview/skins/default/xui/en-us/panel_preferences_audio.xml
+++ b/linden/indra/newview/skins/default/xui/en-us/panel_preferences_audio.xml
@@ -20,10 +20,10 @@
20 mouse_opaque="true" name="audio_prefs_text" v_pad="0" width="128"> 20 mouse_opaque="true" name="audio_prefs_text" v_pad="0" width="128">
21 Audio: 21 Audio:
22 </text> 22 </text>
23 <panel border="true" bottom="-195" enabled="true" filename="panel_audio.xml" 23 <panel border="true" bottom="-187" enabled="true" filename="panel_audio.xml"
24 follows="left|top|right|bottom" height="180" label="Volume" left="148" 24 follows="left|top|right|bottom" height="180" label="Volume" left="148"
25 mouse_opaque="true" name="Volume Panel" width="260" /> 25 mouse_opaque="true" name="Volume Panel" width="260" />
26 <check_box bottom="-195" control_name="AudioStreamingMusic" enabled="true" 26 <check_box bottom="-205" control_name="AudioStreamingMusic" enabled="true"
27 follows="left|top" font="SansSerifSmall" height="16" initial_value="true" 27 follows="left|top" font="SansSerifSmall" height="16" initial_value="true"
28 label="Play streaming music when available (uses more bandwidth)" 28 label="Play streaming music when available (uses more bandwidth)"
29 left="142" mouse_opaque="true" name="streaming_music" radio_style="false" 29 left="142" mouse_opaque="true" name="streaming_music" radio_style="false"
@@ -42,7 +42,7 @@
42 initial_value="true" label="Automatically play media" left="162" 42 initial_value="true" label="Automatically play media" left="162"
43 mouse_opaque="true" name="auto_streaming_video" radio_style="false" 43 mouse_opaque="true" name="auto_streaming_video" radio_style="false"
44 width="338" /> 44 width="338" />
45 <check_box bottom_delta="-34" control_name="MuteWhenMinimized" enabled="true" 45 <check_box bottom_delta="-27" control_name="MuteWhenMinimized" enabled="true"
46 follows="left|top" font="SansSerifSmall" height="16" initial_value="true" 46 follows="left|top" font="SansSerifSmall" height="16" initial_value="true"
47 label="Mute audio when window minimized" left="142" mouse_opaque="true" 47 label="Mute audio when window minimized" left="142" mouse_opaque="true"
48 name="mute_when_minimized" radio_style="false" width="215" /> 48 name="mute_when_minimized" radio_style="false" width="215" />
@@ -57,7 +57,7 @@
57 label_width="158" left="148" max_val="10000" min_val="0" 57 label_width="158" left="148" max_val="10000" min_val="0"
58 mouse_opaque="true" name="Health change threshold" width="212" /> 58 mouse_opaque="true" name="Health change threshold" width="212" />
59 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false" 59 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
60 bottom_delta="-30" drop_shadow_visible="true" enabled="true" follows="left|top" 60 bottom_delta="-27" drop_shadow_visible="true" enabled="true" follows="left|top"
61 font="SansSerifSmall" h_pad="0" halign="left" height="12" left="10" 61 font="SansSerifSmall" h_pad="0" halign="left" height="12" left="10"
62 mouse_opaque="true" name="ambient_prefs_text" v_pad="0" width="128"> 62 mouse_opaque="true" name="ambient_prefs_text" v_pad="0" width="128">
63 Ambient: 63 Ambient:
diff --git a/linden/indra/newview/skins/default/xui/en-us/panel_preferences_general.xml b/linden/indra/newview/skins/default/xui/en-us/panel_preferences_general.xml
index 199f2a8..1357eb5 100644
--- a/linden/indra/newview/skins/default/xui/en-us/panel_preferences_general.xml
+++ b/linden/indra/newview/skins/default/xui/en-us/panel_preferences_general.xml
@@ -183,14 +183,14 @@
183 <combo_box allow_text_entry="false" bottom="-352" enabled="true" follows="left|top" 183 <combo_box allow_text_entry="false" bottom="-352" enabled="true" follows="left|top"
184 height="18" left="153" max_chars="20" mouse_opaque="true" 184 height="18" left="153" max_chars="20" mouse_opaque="true"
185 name="time_combobox" width="146"> 185 name="time_combobox" width="146">
186 <combo_item type="string" length="1" enabled="true" name="12HourTime" value="Use 12 Hour Sim Time"> 186 <combo_item type="string" name="12HourTime" value="PST 12">
187 Use 12 Hour Sim Time 187 12-hour PST/PDT
188 </combo_item> 188 </combo_item>
189 <combo_item type="string" length="1" enabled="true" name="24HourTime" value="Use 24 Hour Sim Time"> 189 <combo_item type="string" name="24HourTime" value="PST 24">
190 Use 24 Hour Sim Time 190 24-hour PST/PDT
191 </combo_item> 191 </combo_item>
192 <combo_item type="string" length="1" enabled="true" name="UTCTime" value="Use UTC Time"> 192 <combo_item type="string" name="UTCTime" value="UTC">
193 Use UTC Time 193 UTC
194 </combo_item> 194 </combo_item>
195 </combo_box> 195 </combo_box>
196 <combo_box allow_text_entry="true" bottom="-382" enabled="true" 196 <combo_box allow_text_entry="true" bottom="-382" enabled="true"
diff --git a/linden/indra/newview/skins/default/xui/en-us/panel_preferences_im.xml b/linden/indra/newview/skins/default/xui/en-us/panel_preferences_im.xml
index 58845ad..0904815 100644
--- a/linden/indra/newview/skins/default/xui/en-us/panel_preferences_im.xml
+++ b/linden/indra/newview/skins/default/xui/en-us/panel_preferences_im.xml
@@ -63,7 +63,7 @@
63 font="SansSerifSmall" height="70" left="148" max_length="255" 63 font="SansSerifSmall" height="70" left="148" max_length="255"
64 mouse_opaque="true" name="busy_response" width="330" word_wrap="true" /> 64 mouse_opaque="true" name="busy_response" width="330" word_wrap="true" />
65 <button bottom_delta="-25" follows="top|right" height="22" label="IM Response Options" 65 <button bottom_delta="-25" follows="top|right" height="22" label="IM Response Options"
66 left="164" name="busy_adv_btn" tool_tip="Auto response options" 66 left="164" name="busy_adv_btn" tool_tip="Instant message Auto-Response options"
67 width="180" /> 67 width="180" />
68 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false" 68 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
69 bottom_delta="-23" drop_shadow_visible="true" enabled="true" follows="left|top" 69 bottom_delta="-23" drop_shadow_visible="true" enabled="true" follows="left|top"