summaryrefslogtreecommitdiff
path: root/indra/newview
diff options
context:
space:
mode:
Diffstat (limited to 'indra/newview')
-rw-r--r--indra/newview/English.lproj/InfoPlist.strings4
-rw-r--r--indra/newview/Info-SecondLife.plist2
-rw-r--r--indra/newview/app_settings/shaders/class2/environment/waterF.glsl2
-rw-r--r--indra/newview/featuretable.txt188
-rw-r--r--indra/newview/featuretable_linux.txt125
-rw-r--r--indra/newview/featuretable_mac.txt182
-rw-r--r--indra/newview/gpu_table.txt18
-rw-r--r--indra/newview/llappearance.h12
-rw-r--r--indra/newview/llappviewerwin32.cpp30
-rw-r--r--indra/newview/llcompilequeue.cpp1
-rw-r--r--indra/newview/lldebugmessagebox.cpp1
-rw-r--r--indra/newview/lldynamictexture.cpp13
-rw-r--r--indra/newview/lldynamictexture.h4
-rw-r--r--indra/newview/llfasttimerview.cpp8
-rw-r--r--indra/newview/llfeaturemanager.cpp14
-rw-r--r--indra/newview/llfeaturemanager.h1
-rw-r--r--indra/newview/llfloaterbump.cpp11
-rw-r--r--indra/newview/llfloatermap.cpp2
-rw-r--r--indra/newview/llfloaterpostcard.cpp14
-rw-r--r--indra/newview/llfloaterpostcard.h5
-rw-r--r--indra/newview/llfloaterurlentry.cpp5
-rw-r--r--indra/newview/llfloaterworldmap.cpp8
-rw-r--r--indra/newview/llhudeffectlookat.h1
-rw-r--r--indra/newview/llhudobject.h1
-rw-r--r--indra/newview/llimview.cpp1
-rw-r--r--indra/newview/llinventorybridge.cpp25
-rw-r--r--indra/newview/llinventorymodel.h2
-rw-r--r--indra/newview/llmanipscale.cpp24
-rw-r--r--indra/newview/llmanipscale.h17
-rw-r--r--indra/newview/llmaniptranslate.cpp30
-rw-r--r--indra/newview/llmaniptranslate.h15
-rw-r--r--indra/newview/llmenucommands.cpp1
-rw-r--r--indra/newview/llmimetypes.cpp2
-rw-r--r--indra/newview/llmoveview.cpp1
-rw-r--r--indra/newview/llnamebox.h1
-rw-r--r--indra/newview/llnameeditor.h1
-rw-r--r--indra/newview/llnetmap.cpp1
-rw-r--r--indra/newview/lloverlaybar.cpp10
-rw-r--r--indra/newview/lloverlaybar.h1
-rw-r--r--indra/newview/llpanelavatar.h1
-rw-r--r--indra/newview/llpanelobject.cpp7
-rw-r--r--indra/newview/llpolymesh.cpp82
-rw-r--r--indra/newview/llpolymesh.h17
-rw-r--r--indra/newview/llpolymorph.cpp5
-rw-r--r--indra/newview/llpolymorph.h2
-rw-r--r--indra/newview/llselectmgr.cpp1
-rw-r--r--indra/newview/lltextureview.h1
-rw-r--r--indra/newview/lltoolbrush.cpp60
-rw-r--r--indra/newview/lltoolbrush.h9
-rw-r--r--indra/newview/lltoolmgr.cpp50
-rw-r--r--indra/newview/lltoolmgr.h4
-rw-r--r--indra/newview/lltoolmorph.cpp12
-rw-r--r--indra/newview/lltoolmorph.h6
-rw-r--r--indra/newview/lltoolview.cpp16
-rw-r--r--indra/newview/lltoolview.h5
-rw-r--r--indra/newview/lluploaddialog.cpp13
-rw-r--r--indra/newview/llurlhistory.cpp8
-rw-r--r--indra/newview/llviewermessage.cpp24
-rw-r--r--indra/newview/llviewermessage.h3
-rw-r--r--indra/newview/llviewerobject.cpp31
-rw-r--r--indra/newview/llviewerobject.h4
-rw-r--r--indra/newview/llviewerobjectlist.h2
-rw-r--r--indra/newview/llviewerpartsim.h1
-rw-r--r--indra/newview/llviewerprecompiledheaders.h10
-rw-r--r--indra/newview/llviewerregion.cpp11
-rw-r--r--indra/newview/llviewerregion.h4
-rw-r--r--indra/newview/llviewerwindow.cpp52
-rw-r--r--indra/newview/llviewerwindow.h1
-rw-r--r--indra/newview/llvovolume.cpp5
-rw-r--r--indra/newview/llwearable.cpp125
-rw-r--r--indra/newview/llwearable.h7
-rw-r--r--indra/newview/llwearablelist.cpp5
-rw-r--r--indra/newview/llwearablelist.h7
-rw-r--r--indra/newview/llwindebug.cpp194
-rw-r--r--indra/newview/llworldmapview.cpp1
-rw-r--r--indra/newview/pipeline.cpp5
-rw-r--r--indra/newview/pipeline.h3
77 files changed, 1093 insertions, 485 deletions
diff --git a/indra/newview/English.lproj/InfoPlist.strings b/indra/newview/English.lproj/InfoPlist.strings
index 608a6ad733..5bca4eab5e 100644
--- a/indra/newview/English.lproj/InfoPlist.strings
+++ b/indra/newview/English.lproj/InfoPlist.strings
@@ -1,5 +1,5 @@
/* Localized versions of Info.plist keys */
CFBundleName = "Second Life";
-CFBundleShortVersionString = "Second Life version 1.19.0.5";
-CFBundleGetInfoString = "Second Life version 1.19.0.5, Copyright 2004-2007 Linden Research, Inc.";
+CFBundleShortVersionString = "Second Life version 1.19.1.0";
+CFBundleGetInfoString = "Second Life version 1.19.1.0, Copyright 2004-2008 Linden Research, Inc.";
diff --git a/indra/newview/Info-SecondLife.plist b/indra/newview/Info-SecondLife.plist
index e257d6f3aa..6f8c464466 100644
--- a/indra/newview/Info-SecondLife.plist
+++ b/indra/newview/Info-SecondLife.plist
@@ -32,7 +32,7 @@
</dict>
</array>
<key>CFBundleVersion</key>
- <string>1.19.0.5</string>
+ <string>1.19.1.0</string>
<key>CSResourcesFileMapped</key>
<true/>
</dict>
diff --git a/indra/newview/app_settings/shaders/class2/environment/waterF.glsl b/indra/newview/app_settings/shaders/class2/environment/waterF.glsl
index 8f3d11badc..6ec3dc4788 100644
--- a/indra/newview/app_settings/shaders/class2/environment/waterF.glsl
+++ b/indra/newview/app_settings/shaders/class2/environment/waterF.glsl
@@ -48,7 +48,7 @@ void main()
vec3 df = vec3(
dot(viewVec, wave1),
- dot(viewVec, wave2),
+ dot(viewVec, (wave2 + wave3) * 0.5),
dot(viewVec, wave3)
) * fresnelScale + fresnelOffset;
df *= df;
diff --git a/indra/newview/featuretable.txt b/indra/newview/featuretable.txt
index 8a023de5f6..898751d3f1 100644
--- a/indra/newview/featuretable.txt
+++ b/indra/newview/featuretable.txt
@@ -49,6 +49,8 @@ UseOcclusion 1 1
VertexShaderEnable 1 1
WindLightUseAtmosShaders 1 1
WLSkyDetail 1 128
+Disregard128DefaultDrawDistance 1 1
+Disregard96DefaultDrawDistance 1 1
//
// Low Graphics Settings
@@ -238,8 +240,6 @@ RenderVBOEnable 1 0
list Intel
RenderAnisotropic 1 0
RenderLightingDetail 1 0
-RenderTerrainDetail 1 0
-RenderVBOEnable 1 0
list GeForce2
RenderAnisotropic 1 0
@@ -248,9 +248,78 @@ RenderMaxPartCount 1 2048
RenderTerrainDetail 1 0
RenderVBOEnable 1 1
+
+list Intel_830M
+RenderTerrainDetail 1 0
+RenderVBOEnable 1 0
+
+list Intel_845G
+RenderTerrainDetail 1 0
+RenderVBOEnable 1 0
+
+list Intel_855GM
+RenderTerrainDetail 1 0
+RenderVBOEnable 1 0
+
+list Intel_865G
+RenderTerrainDetail 1 0
+RenderVBOEnable 1 0
+
+list Intel_900
+RenderTerrainDetail 1 0
+RenderVBOEnable 1 0
+
+list Intel_915GM
+RenderTerrainDetail 1 0
+RenderVBOEnable 1 0
+
+list Intel_915G
+RenderTerrainDetail 1 0
+RenderVBOEnable 1 0
+
+list Intel_945GM
+RenderTerrainDetail 1 0
+RenderVBOEnable 1 0
+
+list Intel_945G
+RenderTerrainDetail 1 0
+RenderVBOEnable 1 0
+
+list Intel_950
+RenderTerrainDetail 1 0
+RenderVBOEnable 1 0
+
list Intel_965
+RenderTerrainDetail 1 0
+RenderVBOEnable 1 0
UseOcclusion 0 0
+list Intel_G33
+RenderTerrainDetail 1 0
+RenderVBOEnable 1 0
+
+list Intel_Bear_Lake
+RenderTerrainDetail 1 0
+RenderVBOEnable 1 0
+
+list Intel_Broadwater
+RenderTerrainDetail 1 0
+RenderVBOEnable 1 0
+
+list Intel_Brookdale
+RenderTerrainDetail 1 0
+RenderVBOEnable 1 0
+
+list Intel_Montara
+RenderTerrainDetail 1 0
+RenderVBOEnable 1 0
+
+list Intel_Springdale
+RenderTerrainDetail 1 0
+RenderVBOEnable 1 0
+
+
+
list ATI_Mobility_Radeon_9800
RenderAvatarCloth 0 0
VertexShaderEnable 0 0
@@ -265,29 +334,60 @@ list ATI_Mobility_Radeon_9600
RenderAvatarCloth 0 0
VertexShaderEnable 0 0
WindLightUseAtmosShaders 0 0
+Disregard96DefaultDrawDistance 1 0
+
+
+/// tweaked ATI to 96 Draw distance
+
+list ATI_Radeon_9000
+Disregard96DefaultDrawDistance 1 0
+list ATI_Radeon_9200
+Disregard96DefaultDrawDistance 1 0
+list ATI_Radeon_9500
+Disregard96DefaultDrawDistance 1 0
+list ATI_Radeon_9600
+Disregard96DefaultDrawDistance 1 0
+
+/// tweaked ATI to 128 draw distance
+
+list ATI_Radeon_X300
+Disregard128DefaultDrawDistance 1 0
+list ATI_Radeon_X400
+Disregard128DefaultDrawDistance 1 0
+list ATI_Radeon_X500
+Disregard128DefaultDrawDistance 1 0
+list ATI_Radeon_X600
+Disregard128DefaultDrawDistance 1 0
+list ATI_Radeon_X700
+Disregard128DefaultDrawDistance 1 0
+list ATI_Radeon_X1300
+Disregard128DefaultDrawDistance 1 0
+list ATI_Radeon_X1400
+Disregard128DefaultDrawDistance 1 0
+list ATI_Radeon_X1500
+Disregard128DefaultDrawDistance 1 0
+list ATI_Radeon_X1600
+Disregard128DefaultDrawDistance 1 0
+list ATI_Radeon_X1700
+Disregard128DefaultDrawDistance 1 0
+
+list ATI_Mobility_Radeon_X1xxx
+Disregard128DefaultDrawDistance 1 0
+
+
// Avatar hardware skinning causes
// invisible avatars on x2600... so I masked
-// out other possible bad ones till it's fixed
-list ATI_Radeon_X2400
-RenderAvatarVP 0 0
-RenderAvatarCloth 0 0
-list ATI_Radeon_X2600
-RenderAvatarVP 0 0
-RenderAvatarCloth 0 0
-list ATI_Radeon_X2900
-RenderAvatarVP 0 0
-RenderAvatarCloth 0 0
-list ATI_Radeon_X3800
-RenderAvatarVP 0 0
-RenderAvatarCloth 0 0
+// out other possible bad ones till it's fixed in 8.2
list ATI_Radeon_HD_2300
RenderAvatarVP 0 0
RenderAvatarCloth 0 0
+Disregard128DefaultDrawDistance 1 0
list ATI_Radeon_HD_2400
RenderAvatarVP 0 0
RenderAvatarCloth 0 0
+Disregard128DefaultDrawDistance 1 0
list ATI_Radeon_HD_2600
RenderAvatarVP 0 0
RenderAvatarCloth 0 0
@@ -301,6 +401,7 @@ RenderAvatarCloth 0 0
list ATI_ASUS_AH24xx
RenderAvatarVP 0 0
RenderAvatarCloth 0 0
+Disregard128DefaultDrawDistance 1 0
list ATI_ASUS_AH26xx
RenderAvatarVP 0 0
RenderAvatarCloth 0 0
@@ -314,17 +415,74 @@ list ATI_ASUS_EAH38xx
RenderAvatarVP 0 0
RenderAvatarCloth 0 0
+
+/// Tweaked NVIDIA
+
+list NVIDIA_GeForce_FX_5100
+Disregard96DefaultDrawDistance 1 0
+list NVIDIA_GeForce_FX_5200
+Disregard96DefaultDrawDistance 1 0
+list NVIDIA_GeForce_FX_5500
+Disregard96DefaultDrawDistance 1 0
+list NVIDIA_GeForce_FX_5600
+Disregard96DefaultDrawDistance 1 0
+
+list NVIDIA_GeForce_FX_Go5100
+Disregard96DefaultDrawDistance 1 0
+list NVIDIA_GeForce_FX_Go5200
+Disregard96DefaultDrawDistance 1 0
+list NVIDIA_GeForce_FX_Go5300
+Disregard96DefaultDrawDistance 1 0
+list NVIDIA_GeForce_FX_Go5500
+Disregard96DefaultDrawDistance 1 0
+list NVIDIA_GeForce_FX_Go5600
+Disregard96DefaultDrawDistance 1 0
+
+list NVIDIA_GeForce_6100
+Disregard128DefaultDrawDistance 1 0
+list NVIDIA_GeForce_6200
+Disregard128DefaultDrawDistance 1 0
+list NVIDIA_GeForce_6500
+Disregard128DefaultDrawDistance 1 0
+list NVIDIA_GeForce_6600
+Disregard128DefaultDrawDistance 1 0
+
+list NVIDIA_G73
+Disregard128DefaultDrawDistance 1 0
+
list NVIDIA_GeForce_Go_6100
RenderVBOEnable 1 0
+Disregard128DefaultDrawDistance 1 0
list NVIDIA_GeForce_Go_6200
RenderVBOEnable 1 0
+Disregard128DefaultDrawDistance 1 0
list NVIDIA_GeForce_Go_6500
RenderVBOEnable 1 0
+Disregard128DefaultDrawDistance 1 0
list NVIDIA_GeForce_Go_6600
RenderVBOEnable 1 0
+Disregard128DefaultDrawDistance 1 0
list NVIDIA_GeForce_Go_6700
RenderVBOEnable 1 0
+Disregard128DefaultDrawDistance 1 0
list NVIDIA_GeForce_Go_6800
RenderVBOEnable 1 0
+Disregard128DefaultDrawDistance 1 0
list NVIDIA_GeForce_Go_6
RenderVBOEnable 1 0
+Disregard128DefaultDrawDistance 1 0
+
+list NVIDIA_GeForce_7200
+Disregard128DefaultDrawDistance 1 0
+list NVIDIA_GeForce_7300
+Disregard128DefaultDrawDistance 1 0
+list NVIDIA_GeForce_7400
+Disregard128DefaultDrawDistance 1 0
+
+list NVIDIA_GeForce_Go_7200
+Disregard128DefaultDrawDistance 1 0
+list NVIDIA_GeForce_Go_7300
+Disregard128DefaultDrawDistance 1 0
+list NVIDIA_GeForce_Go_7400
+Disregard128DefaultDrawDistance 1 0
+
diff --git a/indra/newview/featuretable_linux.txt b/indra/newview/featuretable_linux.txt
index ccffc8d424..d7921ffb59 100644
--- a/indra/newview/featuretable_linux.txt
+++ b/indra/newview/featuretable_linux.txt
@@ -49,6 +49,8 @@ UseOcclusion 1 1
VertexShaderEnable 1 1
WindLightUseAtmosShaders 1 1
WLSkyDetail 1 128
+Disregard128DefaultDrawDistance 1 1
+Disregard96DefaultDrawDistance 1 1
//
// Low Graphics Settings
@@ -271,50 +273,153 @@ list ATI_Mobility_Radeon_9600
RenderAvatarCloth 0 0
VertexShaderEnable 0 0
WindLightUseAtmosShaders 0 0
+Disregard96DefaultDrawDistance 1 0
+
+
+/// tweaked ATI to 96 Draw distance
+
+list ATI_Radeon_9000
+Disregard96DefaultDrawDistance 1 0
+list ATI_Radeon_9200
+Disregard96DefaultDrawDistance 1 0
+list ATI_Radeon_9500
+Disregard96DefaultDrawDistance 1 0
+list ATI_Radeon_9600
+Disregard96DefaultDrawDistance 1 0
+
+/// tweaked ATI to 128 draw distance
+
+list ATI_Radeon_X300
+Disregard128DefaultDrawDistance 1 0
+list ATI_Radeon_X400
+Disregard128DefaultDrawDistance 1 0
+list ATI_Radeon_X500
+Disregard128DefaultDrawDistance 1 0
+list ATI_Radeon_X600
+Disregard128DefaultDrawDistance 1 0
+list ATI_Radeon_X700
+Disregard128DefaultDrawDistance 1 0
+list ATI_Radeon_X1300
+Disregard128DefaultDrawDistance 1 0
+list ATI_Radeon_X1400
+Disregard128DefaultDrawDistance 1 0
+list ATI_Radeon_X1500
+Disregard128DefaultDrawDistance 1 0
+list ATI_Radeon_X1600
+Disregard128DefaultDrawDistance 1 0
+list ATI_Radeon_X1700
+Disregard128DefaultDrawDistance 1 0
+list ATI_Mobility_Radeon_X1xxx
+Disregard128DefaultDrawDistance 1 0
+
+
+
// Avatar hardware skinning causes
-// invisible avatars on x2600... so I masked
+// invisible avatars on HD 2400... so I masked
// out other possible bad ones till it's fixed
-list ATI_Radeon_X2400
+
+list ATI_Radeon_HD_2300
RenderAvatarVP 0 0
RenderAvatarCloth 0 0
-list ATI_Radeon_X2600
+Disregard128DefaultDrawDistance 1 0
+list ATI_Radeon_HD_2400
RenderAvatarVP 0 0
RenderAvatarCloth 0 0
-list ATI_Radeon_X2900
+Disregard128DefaultDrawDistance 1 0
+list ATI_Radeon_HD_2600
+RenderAvatarVP 0 0
+RenderAvatarCloth 0 0
+list ATI_Radeon_HD_2900
RenderAvatarVP 0 0
RenderAvatarCloth 0 0
-list ATI_Radeon_X3800
+list ATI_Radeon_HD_3800
RenderAvatarVP 0 0
RenderAvatarCloth 0 0
-list ATI_Radeon_HD_2300
+list ATI_ASUS_AH24xx
RenderAvatarVP 0 0
RenderAvatarCloth 0 0
-list ATI_Radeon_HD_2400
+Disregard128DefaultDrawDistance 1 0
+list ATI_ASUS_AH26xx
RenderAvatarVP 0 0
RenderAvatarCloth 0 0
-list ATI_Radeon_HD_2600
+list ATI_ASUS_EAH24xx
RenderAvatarVP 0 0
RenderAvatarCloth 0 0
-list ATI_Radeon_HD_2900
+list ATI_ASUS_EAH26xx
RenderAvatarVP 0 0
RenderAvatarCloth 0 0
-list ATI_Radeon_HD_3800
+list ATI_ASUS_EAH38xx
RenderAvatarVP 0 0
RenderAvatarCloth 0 0
+
+/// Tweaked NVIDIA
+
+list NVIDIA_GeForce_FX_5100
+Disregard96DefaultDrawDistance 1 0
+list NVIDIA_GeForce_FX_5200
+Disregard96DefaultDrawDistance 1 0
+list NVIDIA_GeForce_FX_5500
+Disregard96DefaultDrawDistance 1 0
+list NVIDIA_GeForce_FX_5600
+Disregard96DefaultDrawDistance 1 0
+
+list NVIDIA_GeForce_FX_Go5100
+Disregard96DefaultDrawDistance 1 0
+list NVIDIA_GeForce_FX_Go5200
+Disregard96DefaultDrawDistance 1 0
+list NVIDIA_GeForce_FX_Go5300
+Disregard96DefaultDrawDistance 1 0
+list NVIDIA_GeForce_FX_Go5500
+Disregard96DefaultDrawDistance 1 0
+list NVIDIA_GeForce_FX_Go5600
+Disregard96DefaultDrawDistance 1 0
+
+list NVIDIA_GeForce_6100
+Disregard128DefaultDrawDistance 1 0
+list NVIDIA_GeForce_6200
+Disregard128DefaultDrawDistance 1 0
+list NVIDIA_GeForce_6500
+Disregard128DefaultDrawDistance 1 0
+list NVIDIA_GeForce_6600
+Disregard128DefaultDrawDistance 1 0
+
+
list NVIDIA_GeForce_Go_6100
RenderVBOEnable 1 0
+Disregard128DefaultDrawDistance 1 0
list NVIDIA_GeForce_Go_6200
RenderVBOEnable 1 0
+Disregard128DefaultDrawDistance 1 0
list NVIDIA_GeForce_Go_6500
RenderVBOEnable 1 0
+Disregard128DefaultDrawDistance 1 0
list NVIDIA_GeForce_Go_6600
RenderVBOEnable 1 0
+Disregard128DefaultDrawDistance 1 0
list NVIDIA_GeForce_Go_6700
RenderVBOEnable 1 0
+Disregard128DefaultDrawDistance 1 0
list NVIDIA_GeForce_Go_6800
RenderVBOEnable 1 0
+Disregard128DefaultDrawDistance 1 0
list NVIDIA_GeForce_Go_6
RenderVBOEnable 1 0
+Disregard128DefaultDrawDistance 1 0
+
+list NVIDIA_GeForce_7200
+Disregard128DefaultDrawDistance 1 0
+list NVIDIA_GeForce_7300
+Disregard128DefaultDrawDistance 1 0
+list NVIDIA_GeForce_7400
+Disregard128DefaultDrawDistance 1 0
+
+list NVIDIA_GeForce_Go_7200
+Disregard128DefaultDrawDistance 1 0
+list NVIDIA_GeForce_Go_7300
+Disregard128DefaultDrawDistance 1 0
+list NVIDIA_GeForce_Go_7400
+Disregard128DefaultDrawDistance 1 0
+
diff --git a/indra/newview/featuretable_mac.txt b/indra/newview/featuretable_mac.txt
index bebb51fc12..9645ff8abf 100644
--- a/indra/newview/featuretable_mac.txt
+++ b/indra/newview/featuretable_mac.txt
@@ -50,6 +50,8 @@ VertexShaderEnable 1 1
WindLightUseAtmosShaders 1 1
WLSkyDetail 1 128
RenderUseCleverUI 1 1
+Disregard128DefaultDrawDistance 1 1
+Disregard96DefaultDrawDistance 1 1
//
// Low Graphics Settings
@@ -239,8 +241,6 @@ RenderVBOEnable 1 0
list Intel
RenderAnisotropic 1 0
RenderLightingDetail 1 0
-RenderTerrainDetail 1 0
-RenderVBOEnable 1 0
list GeForce2
RenderAnisotropic 1 0
@@ -249,9 +249,78 @@ RenderMaxPartCount 1 2048
RenderTerrainDetail 1 0
RenderVBOEnable 1 1
+list Intel_830M
+RenderTerrainDetail 1 0
+RenderVBOEnable 1 0
+
+list Intel_845G
+RenderTerrainDetail 1 0
+RenderVBOEnable 1 0
+
+list Intel_855GM
+RenderTerrainDetail 1 0
+RenderVBOEnable 1 0
+
+list Intel_865G
+RenderTerrainDetail 1 0
+RenderVBOEnable 1 0
+
+list Intel_900
+RenderTerrainDetail 1 0
+RenderVBOEnable 1 0
+
+list Intel_915GM
+RenderTerrainDetail 1 0
+RenderVBOEnable 1 0
+
+list Intel_915G
+RenderTerrainDetail 1 0
+RenderVBOEnable 1 0
+
+list Intel_945GM
+RenderTerrainDetail 1 0
+RenderVBOEnable 1 0
+
+list Intel_945G
+RenderTerrainDetail 1 0
+RenderVBOEnable 1 0
+
+list Intel_950
+RenderTerrainDetail 1 0
+RenderVBOEnable 1 0
+
list Intel_965
+RenderTerrainDetail 1 0
+RenderVBOEnable 1 0
UseOcclusion 0 0
+list Intel_G33
+RenderTerrainDetail 1 0
+RenderVBOEnable 1 0
+
+list Intel_Bear_Lake
+RenderTerrainDetail 1 0
+RenderVBOEnable 1 0
+
+list Intel_Broadwater
+RenderTerrainDetail 1 0
+RenderVBOEnable 1 0
+
+list Intel_Brookdale
+RenderTerrainDetail 1 0
+RenderVBOEnable 1 0
+
+list Intel_X3100
+WindLightUseAtmosShaders 0 0
+
+list Intel_Montara
+RenderTerrainDetail 1 0
+RenderVBOEnable 1 0
+
+list Intel_Springdale
+RenderTerrainDetail 1 0
+RenderVBOEnable 1 0
+
list ATI_Mobility_Radeon_9800
RenderAvatarCloth 0 0
VertexShaderEnable 0 0
@@ -266,29 +335,60 @@ list ATI_Mobility_Radeon_9600
RenderAvatarCloth 0 0
VertexShaderEnable 0 0
WindLightUseAtmosShaders 0 0
+Disregard96DefaultDrawDistance 1 0
+
+
+/// tweaked ATI to 96 Draw distance
+
+list ATI_Radeon_9000
+Disregard96DefaultDrawDistance 1 0
+list ATI_Radeon_9200
+Disregard96DefaultDrawDistance 1 0
+list ATI_Radeon_9500
+Disregard96DefaultDrawDistance 1 0
+list ATI_Radeon_9600
+Disregard96DefaultDrawDistance 1 0
+
+/// tweaked ATI to 128 draw distance
+
+list ATI_Radeon_X300
+Disregard128DefaultDrawDistance 1 0
+list ATI_Radeon_X400
+Disregard128DefaultDrawDistance 1 0
+list ATI_Radeon_X500
+Disregard128DefaultDrawDistance 1 0
+list ATI_Radeon_X600
+Disregard128DefaultDrawDistance 1 0
+list ATI_Radeon_X700
+Disregard128DefaultDrawDistance 1 0
+list ATI_Radeon_X1300
+Disregard128DefaultDrawDistance 1 0
+list ATI_Radeon_X1400
+Disregard128DefaultDrawDistance 1 0
+list ATI_Radeon_X1500
+Disregard128DefaultDrawDistance 1 0
+list ATI_Radeon_X1600
+Disregard128DefaultDrawDistance 1 0
+list ATI_Radeon_X1700
+Disregard128DefaultDrawDistance 1 0
+list ATI_Mobility_Radeon_X1xxx
+Disregard128DefaultDrawDistance 1 0
+
+
+
// Avatar hardware skinning causes
-// invisible avatars on x2600... so I masked
+// invisible avatars on HD 2600... so I masked
// out other possible bad ones till it's fixed
-list ATI_Radeon_X2400
-RenderAvatarVP 0 0
-RenderAvatarCloth 0 0
-list ATI_Radeon_X2600
-RenderAvatarVP 0 0
-RenderAvatarCloth 0 0
-list ATI_Radeon_X2900
-RenderAvatarVP 0 0
-RenderAvatarCloth 0 0
-list ATI_Radeon_X3800
-RenderAvatarVP 0 0
-RenderAvatarCloth 0 0
list ATI_Radeon_HD_2300
RenderAvatarVP 0 0
RenderAvatarCloth 0 0
+Disregard128DefaultDrawDistance 1 0
list ATI_Radeon_HD_2400
RenderAvatarVP 0 0
RenderAvatarCloth 0 0
+Disregard128DefaultDrawDistance 1 0
list ATI_Radeon_HD_2600
RenderAvatarVP 0 0
RenderAvatarCloth 0 0
@@ -299,17 +399,69 @@ list ATI_Radeon_HD_3800
RenderAvatarVP 0 0
RenderAvatarCloth 0 0
+/// Tweaked NVIDIA
+
+list NVIDIA_GeForce_FX_5100
+Disregard96DefaultDrawDistance 1 0
+list NVIDIA_GeForce_FX_5200
+Disregard96DefaultDrawDistance 1 0
+list NVIDIA_GeForce_FX_5500
+Disregard96DefaultDrawDistance 1 0
+
+list NVIDIA_GeForce_FX_Go5100
+Disregard96DefaultDrawDistance 1 0
+list NVIDIA_GeForce_FX_Go5200
+Disregard96DefaultDrawDistance 1 0
+list NVIDIA_GeForce_FX_Go5300
+Disregard96DefaultDrawDistance 1 0
+list NVIDIA_GeForce_FX_Go5500
+Disregard96DefaultDrawDistance 1 0
+list NVIDIA_GeForce_FX_Go5600
+Disregard96DefaultDrawDistance 1 0
+
+list NVIDIA_GeForce_6100
+Disregard128DefaultDrawDistance 1 0
+list NVIDIA_GeForce_6200
+Disregard128DefaultDrawDistance 1 0
+list NVIDIA_GeForce_6500
+Disregard128DefaultDrawDistance 1 0
+list NVIDIA_GeForce_6600
+Disregard128DefaultDrawDistance 1 0
+
+
list NVIDIA_GeForce_Go_6100
RenderVBOEnable 1 0
+Disregard128DefaultDrawDistance 1 0
list NVIDIA_GeForce_Go_6200
RenderVBOEnable 1 0
+Disregard128DefaultDrawDistance 1 0
list NVIDIA_GeForce_Go_6500
RenderVBOEnable 1 0
+Disregard128DefaultDrawDistance 1 0
list NVIDIA_GeForce_Go_6600
RenderVBOEnable 1 0
+Disregard128DefaultDrawDistance 1 0
list NVIDIA_GeForce_Go_6700
RenderVBOEnable 1 0
+Disregard128DefaultDrawDistance 1 0
list NVIDIA_GeForce_Go_6800
RenderVBOEnable 1 0
+Disregard128DefaultDrawDistance 1 0
list NVIDIA_GeForce_Go_6
RenderVBOEnable 1 0
+Disregard128DefaultDrawDistance 1 0
+
+list NVIDIA_GeForce_7200
+Disregard128DefaultDrawDistance 1 0
+list NVIDIA_GeForce_7300
+Disregard128DefaultDrawDistance 1 0
+list NVIDIA_GeForce_7400
+Disregard128DefaultDrawDistance 1 0
+
+list NVIDIA_GeForce_Go_7200
+Disregard128DefaultDrawDistance 1 0
+list NVIDIA_GeForce_Go_7300
+Disregard128DefaultDrawDistance 1 0
+list NVIDIA_GeForce_Go_7400
+Disregard128DefaultDrawDistance 1 0
+
diff --git a/indra/newview/gpu_table.txt b/indra/newview/gpu_table.txt
index 5d73a70497..066cd980b6 100644
--- a/indra/newview/gpu_table.txt
+++ b/indra/newview/gpu_table.txt
@@ -28,7 +28,7 @@ ATI All-in-Wonder X800 .*ATI.*All-in-Wonder X8.* 2 1
ATI All-in-Wonder X1800 .*ATI.*All-in-Wonder X18.* 3 1
ATI All-in-Wonder X1900 .*ATI.*All-in-Wonder X19.* 3 1
ATI ASUS A9xxx .*ATI.*ASUS.*A9.* 1 1
-ATI ASUS AH24xx .*ATI.*ASUS.*AH24.* 3 1
+ATI ASUS AH24xx .*ATI.*ASUS.*AH24.* 1 1
ATI ASUS AH26xx .*ATI.*ASUS.*AH26.* 3 1
ATI ASUS AX3xx .*ATI.*ASUS.*AX3.* 1 1
ATI ASUS AX5xx .*ATI.*ASUS.*AX5.* 1 1
@@ -56,8 +56,8 @@ ATI Mobility Radeon X6xx .*ATI.*Mobility.*X6.* 1 1
ATI Mobility Radeon X7xx .*ATI.*Mobility.*X7.* 1 1
ATI Mobility Radeon Xxxx .*ATI.*Mobility.*X.* 1 1
ATI Mobility Radeon .*ATI.*Mobility.* 0 1
-ATI Radeon HD 2300 .*ATI.*Radeon HD 23.* 2 1
-ATI Radeon HD 2400 .*ATI.*Radeon HD 24.* 2 1
+ATI Radeon HD 2300 .*ATI.*Radeon HD 23.* 1 1
+ATI Radeon HD 2400 .*ATI.*Radeon HD 24.* 1 1
ATI Radeon HD 2600 .*ATI.*Radeon HD 26.* 2 1
ATI Radeon HD 2900 .*ATI.*Radeon HD 29.* 3 1
ATI Radeon HD 3800 .*ATI.*Radeon HD 38.* 3 1
@@ -76,7 +76,7 @@ ATI Radeon RX700 .*ATI.*RX70.* 1 1
ATI Radeon RX800 .*ATI.*Radeon *RX80.* 2 1
ATI Radeon VE .*ATI.*Radeon.*VE.* 0 0
ATI Radeon X1000 .*ATI.*Radeon *X10.* 0 1
-ATI Radeon X1200 .*ATI.*Radeon *X12.* 1 1
+ATI Radeon X1200 .*ATI.*Radeon *X12.* 0 1
ATI Radeon X1300 .*ATI.*Radeon *X13.* 1 1
ATI Radeon X1400 .*ATI.*Radeon X14.* 1 1
ATI Radeon X1500 .*ATI.*Radeon X15.* 1 1
@@ -84,9 +84,6 @@ ATI Radeon X1600 .*ATI.*Radeon X16.* 1 1
ATI Radeon X1700 .*ATI.*Radeon X17.* 1 1
ATI Radeon X1800 .*ATI.*Radeon X18.* 3 1
ATI Radeon X1900 .*ATI.*Radeon X19.* 3 1
-ATI Radeon X2400 .*ATI.*Radeon X24.* 3 1
-ATI Radeon X2600 .*ATI.*Radeon X26.* 3 1
-ATI Radeon X2900 .*ATI.*Radeon X29.* 3 1
ATI Radeon X300 .*ATI.*Radeon *X3.* 1 1
ATI Radeon X400 .*ATI.*Radeon X4.* 1 1
ATI Radeon X500 .*ATI.*Radeon X5.* 1 1
@@ -99,7 +96,7 @@ ATI Rage 128 .*ATI.*Rage 128.* 0 1
ATI RV250 .*ATI.*RV250.* 0 1
ATI RV530 .*ATI.*RV530.* 1 1
ATI RX700 .*ATI.*RX700.* 1 1
-Intel x3100 .*Intel.*x3100 0 1
+Intel X3100 .*Intel.*X3100.* 1 1
Intel 830M .*Intel.*830M 0 0
Intel 845G .*Intel.*845G 0 0
Intel 855GM .*Intel.*855GM 0 0
@@ -120,7 +117,7 @@ Intel Springdale .*Intel.*Springdale.* 0 0
Matrox .*Matrox.* 0 0
Mesa .*Mesa.* 0 0
NVIDIA G72 .*NVIDIA.*G72.* 1 1
-NVIDIA G73 .*NVIDIA.*G73.* 2 1
+NVIDIA G73 .*NVIDIA.*G73.* 1 1
NVIDIA GeForce .*GeForce 256.* 0 0
NVIDIA GeForce 2 .*GeForce2.* 0 1
NVIDIA GeForce 3 .*GeForce3.* 0 1
@@ -134,7 +131,7 @@ NVIDIA GeForce 6600 .*NVIDIA.*GeForce 66.* 1 1
NVIDIA GeForce 6700 .*NVIDIA.*GeForce 67.* 2 1
NVIDIA GeForce 6800 .*NVIDIA.*GeForce 68.* 2 1
NVIDIA GeForce 7000 .*NVIDIA.*GeForce 70.* 0 1
-NVIDIA GeForce 7100 .*NVIDIA.*GeForce 71.* 1 1
+NVIDIA GeForce 7100 .*NVIDIA.*GeForce 71.* 0 1
NVIDIA GeForce 7200 .*NVIDIA.*GeForce 72.* 1 1
NVIDIA GeForce 7300 .*NVIDIA.*GeForce 73.* 1 1
NVIDIA GeForce 7500 .*NVIDIA.*GeForce 75.* 1 1
@@ -178,6 +175,7 @@ NVIDIA GeForce Go 7900 .*NVIDIA.*GeForce Go 79.* 2 1
NVIDIA GeForce Go 6 .*GeForce Go 6.* 1 1
NVIDIA GeForce PCX .*GeForce PCX.* 0 1
NVIDIA Generic .*NVIDIA.*Unknown.* 0 0
+NVIDIA NV43 .*NVIDIA.*NV43.* 1 1
NVIDIA Quadro2 .*Quadro2.* 0 0
NVIDIA Quadro4 .*Quadro4.* 0 0
NVIDIA Quadro DCC .*Quadro DCC.* 0 0
diff --git a/indra/newview/llappearance.h b/indra/newview/llappearance.h
index 2a4c1759ca..07c0c0cb68 100644
--- a/indra/newview/llappearance.h
+++ b/indra/newview/llappearance.h
@@ -32,24 +32,24 @@
#ifndef LL_LLAPPEARANCE_H
#define LL_LLAPPEARANCE_H
-#include "llskiplist.h"
#include "lluuid.h"
class LLAppearance
{
public:
LLAppearance() {}
- ~LLAppearance() { mParamMap.deleteAllData(); }
+ ~LLAppearance() { mParamMap.clear(); }
- void addParam( S32 id, F32 value ) { mParamMap.addData( id, new F32(value) ); }
- F32* getParam( S32 id ) { F32* temp = mParamMap.getIfThere( id ); return temp; } // temp works around an invalid warning.
+ void addParam( S32 id, F32 value ) { mParamMap[id] = value; }
+ F32 getParam( S32 id, F32 defval ) { return get_if_there(mParamMap, id, defval ); }
void addTexture( S32 te, const LLUUID& uuid ) { if( te < LLVOAvatar::TEX_NUM_ENTRIES ) mTextures[te] = uuid; }
const LLUUID& getTexture( S32 te ) { return ( te < LLVOAvatar::TEX_NUM_ENTRIES ) ? mTextures[te] : LLUUID::null; }
- void clear() { mParamMap.deleteAllData(); for( S32 i=0; i<LLVOAvatar::TEX_NUM_ENTRIES; i++ ) mTextures[i].setNull(); }
+ void clear() { mParamMap.clear(); for( S32 i=0; i<LLVOAvatar::TEX_NUM_ENTRIES; i++ ) mTextures[i].setNull(); }
- LLPtrSkipMap<S32, F32*> mParamMap;
+ typedef std::map<S32, F32> param_map_t;
+ param_map_t mParamMap;
LLUUID mTextures[LLVOAvatar::TEX_NUM_ENTRIES];
};
diff --git a/indra/newview/llappviewerwin32.cpp b/indra/newview/llappviewerwin32.cpp
index 814c209e67..09bcf6f7cc 100644
--- a/indra/newview/llappviewerwin32.cpp
+++ b/indra/newview/llappviewerwin32.cpp
@@ -127,7 +127,14 @@ LONG WINAPI viewer_windows_exception_handler(struct _EXCEPTION_POINTERS *excepti
return retval;
}
-int APIENTRY WinMain(HINSTANCE hInstance,
+
+#if DEBUGGING_SEH_FILTER
+# define WINMAIN DebuggingWinMain
+#else
+# define WINMAIN WinMain
+#endif
+
+int APIENTRY WINMAIN(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow)
@@ -207,6 +214,27 @@ int APIENTRY WinMain(HINSTANCE hInstance,
return 0;
}
+#if DEBUGGING_SEH_FILTER
+// The compiler doesn't like it when you use __try/__except blocks
+// in a method that uses object destructors. Go figure.
+// This winmain just calls the real winmain inside __try.
+// The __except calls our exception filter function. For debugging purposes.
+int APIENTRY WinMain(HINSTANCE hInstance,
+ HINSTANCE hPrevInstance,
+ LPSTR lpCmdLine,
+ int nCmdShow)
+{
+ __try
+ {
+ WINMAIN(hInstance, hPrevInstance, lpCmdLine, nCmdShow);
+ }
+ __except( viewer_windows_exception_handler( GetExceptionInformation() ) )
+ {
+ _tprintf( _T("Exception handled.\n") );
+ }
+}
+#endif
+
void LLAppViewerWin32::disableWinErrorReporting()
{
const char win_xp_string[] = "Microsoft Windows XP";
diff --git a/indra/newview/llcompilequeue.cpp b/indra/newview/llcompilequeue.cpp
index 1a4d3c16fd..087f8ac673 100644
--- a/indra/newview/llcompilequeue.cpp
+++ b/indra/newview/llcompilequeue.cpp
@@ -44,7 +44,6 @@
#include "llagent.h"
#include "llchat.h"
#include "llviewerwindow.h"
-#include "llcallbacklist.h"
#include "llviewerobject.h"
#include "llviewerobjectlist.h"
#include "llviewerregion.h"
diff --git a/indra/newview/lldebugmessagebox.cpp b/indra/newview/lldebugmessagebox.cpp
index de185e280d..371426d56e 100644
--- a/indra/newview/lldebugmessagebox.cpp
+++ b/indra/newview/lldebugmessagebox.cpp
@@ -39,7 +39,6 @@
#include "llsliderctrl.h"
#include "llcheckboxctrl.h"
#include "lltextbox.h"
-#include "llcallbacklist.h"
#include "lllineeditor.h"
#include "llfocusmgr.h"
diff --git a/indra/newview/lldynamictexture.cpp b/indra/newview/lldynamictexture.cpp
index a4b3d259bb..c925cc058c 100644
--- a/indra/newview/lldynamictexture.cpp
+++ b/indra/newview/lldynamictexture.cpp
@@ -32,7 +32,6 @@
#include "llviewerprecompiledheaders.h"
#include "lldynamictexture.h"
-#include "linked_lists.h"
#include "llimagegl.h"
#include "llglheaders.h"
#include "llviewerwindow.h"
@@ -46,7 +45,7 @@
void render_ui_and_swap_if_needed();
// static
-LLLinkedList<LLDynamicTexture> LLDynamicTexture::sInstances[ LLDynamicTexture::ORDER_COUNT ];
+LLDynamicTexture::instance_list_t LLDynamicTexture::sInstances[ LLDynamicTexture::ORDER_COUNT ];
S32 LLDynamicTexture::sNumRenders = 0;
//-----------------------------------------------------------------------------
@@ -65,7 +64,7 @@ LLDynamicTexture::LLDynamicTexture(S32 width, S32 height, S32 components, EOrder
generateGLTexture();
llassert( 0 <= order && order < ORDER_COUNT );
- LLDynamicTexture::sInstances[ order ].addData(this);
+ LLDynamicTexture::sInstances[ order ].insert(this);
}
//-----------------------------------------------------------------------------
@@ -76,7 +75,7 @@ LLDynamicTexture::~LLDynamicTexture()
releaseGLTexture();
for( S32 order = 0; order < ORDER_COUNT; order++ )
{
- LLDynamicTexture::sInstances[order].removeData(this); // will fail in all but one case.
+ LLDynamicTexture::sInstances[order].erase(this); // will fail in all but one case.
}
}
@@ -214,10 +213,10 @@ BOOL LLDynamicTexture::updateAllInstances()
BOOL result = FALSE;
for( S32 order = 0; order < ORDER_COUNT; order++ )
{
- for (LLDynamicTexture *dynamicTexture = LLDynamicTexture::sInstances[order].getFirstData();
- dynamicTexture;
- dynamicTexture = LLDynamicTexture::sInstances[order].getNextData())
+ for (instance_list_t::iterator iter = LLDynamicTexture::sInstances[order].begin();
+ iter != LLDynamicTexture::sInstances[order].end(); ++iter)
{
+ LLDynamicTexture *dynamicTexture = *iter;
if (dynamicTexture->needsRender())
{
render_ui_and_swap_if_needed();
diff --git a/indra/newview/lldynamictexture.h b/indra/newview/lldynamictexture.h
index 49c8b0cdfb..9f647232c5 100644
--- a/indra/newview/lldynamictexture.h
+++ b/indra/newview/lldynamictexture.h
@@ -33,7 +33,6 @@
#define LL_LLDYNAMICTEXTURE_H
#include "llgl.h"
-#include "linked_lists.h"
#include "llcamera.h"
#include "llcoord.h"
#include "llimagegl.h"
@@ -84,7 +83,8 @@ protected:
LLCoordGL mOrigin;
LLCamera mCamera;
- static LLLinkedList<LLDynamicTexture> sInstances[ LLDynamicTexture::ORDER_COUNT ];
+ typedef std::set<LLDynamicTexture*> instance_list_t;
+ static instance_list_t sInstances[ LLDynamicTexture::ORDER_COUNT ];
static S32 sNumRenders;
};
diff --git a/indra/newview/llfasttimerview.cpp b/indra/newview/llfasttimerview.cpp
index e29d8fb40d..c1194fa99e 100644
--- a/indra/newview/llfasttimerview.cpp
+++ b/indra/newview/llfasttimerview.cpp
@@ -95,7 +95,7 @@ static struct ft_display_info ft_display_table[] =
{ LLFastTimer::FTM_UPDATE_MOVE, " Move Objects", &LLColor4::pink2, 0 },
{ LLFastTimer::FTM_OCTREE_BALANCE, " Octree Balance", &LLColor4::red3, 0 },
{ LLFastTimer::FTM_SIMULATE_PARTICLES, " Particle Sim", &LLColor4::blue4, 0 },
- { LLFastTimer::FTM_OBJECTLIST_UPDATE, " Object Update", &LLColor4::purple1, 0 },
+ { LLFastTimer::FTM_OBJECTLIST_UPDATE, " Object Update", &LLColor4::purple1, 1 },
{ LLFastTimer::FTM_AVATAR_UPDATE, " Avatars", &LLColor4::purple2, 0 },
{ LLFastTimer::FTM_JOINT_UPDATE, " Joints", &LLColor4::purple3, 0 },
{ LLFastTimer::FTM_ATTACHMENT_UPDATE, " Attachments", &LLColor4::purple4, 0 },
@@ -124,7 +124,7 @@ static struct ft_display_info ft_display_table[] =
{ LLFastTimer::FTM_HUD_UPDATE, " HUD Update", &LLColor4::orange2, 0 },
{ LLFastTimer::FTM_UPDATE_SKY, " Sky Update", &LLColor4::cyan1, 0 },
{ LLFastTimer::FTM_UPDATE_TEXTURES, " Textures", &LLColor4::pink2, 0 },
- { LLFastTimer::FTM_GEO_UPDATE, " Geo Update", &LLColor4::blue3, 0 },
+ { LLFastTimer::FTM_GEO_UPDATE, " Geo Update", &LLColor4::blue3, 1 },
{ LLFastTimer::FTM_UPDATE_PRIMITIVES, " Volumes", &LLColor4::blue4, 0 },
{ LLFastTimer::FTM_GEN_VOLUME, " Gen Volume", &LLColor4::yellow3, 0 },
{ LLFastTimer::FTM_GEN_FLEX, " Flexible", &LLColor4::yellow4, 0 },
@@ -189,6 +189,7 @@ static struct ft_display_info ft_display_table[] =
{ LLFastTimer::FTM_SWAP, " Swap", &LLColor4::pink1, 0 },
{ LLFastTimer::FTM_CLIENT_COPY, " Client Copy", &LLColor4::red1, 1},
+#if 0 || !LL_RELEASE_FOR_DOWNLOAD
{ LLFastTimer::FTM_TEMP1, " Temp1", &LLColor4::red1, 0 },
{ LLFastTimer::FTM_TEMP2, " Temp2", &LLColor4::magenta1, 0 },
{ LLFastTimer::FTM_TEMP3, " Temp3", &LLColor4::red2, 0 },
@@ -197,7 +198,8 @@ static struct ft_display_info ft_display_table[] =
{ LLFastTimer::FTM_TEMP6, " Temp6", &LLColor4::magenta3, 0 },
{ LLFastTimer::FTM_TEMP7, " Temp7", &LLColor4::red4, 0 },
{ LLFastTimer::FTM_TEMP8, " Temp8", &LLColor4::magenta4, 0 },
-
+#endif
+
{ LLFastTimer::FTM_OTHER, " Other", &red0 }
};
static int ft_display_didcalc = 0;
diff --git a/indra/newview/llfeaturemanager.cpp b/indra/newview/llfeaturemanager.cpp
index 561d96d281..bf7d48f911 100644
--- a/indra/newview/llfeaturemanager.cpp
+++ b/indra/newview/llfeaturemanager.cpp
@@ -443,6 +443,20 @@ void LLFeatureManager::applyRecommendedSettings()
gSavedSettings.setU32("RenderQualityPerformance", level);
gSavedSettings.setBOOL("RenderCustomSettings", FALSE);
+ // now apply the tweaks to draw distance
+ // these are double negatives, because feature masks only work by
+ // downgrading values, so i needed to make a true value go to false
+ // for certain cards, thus the awkward name, "Disregard..."
+ if(!gSavedSettings.getBOOL("Disregard96DefaultDrawDistance"))
+ {
+ gSavedSettings.setF32("RenderFarClip", 96.0f);
+ }
+ else if(!gSavedSettings.getBOOL("Disregard128DefaultDrawDistance"))
+ {
+ gSavedSettings.setF32("RenderFarClip", 128.0f);
+ }
+
+
}
void LLFeatureManager::applyFeatures(bool skipFeatures)
diff --git a/indra/newview/llfeaturemanager.h b/indra/newview/llfeaturemanager.h
index 26d491b96f..3d05bbe2e0 100644
--- a/indra/newview/llfeaturemanager.h
+++ b/indra/newview/llfeaturemanager.h
@@ -35,7 +35,6 @@
#include "stdtypes.h"
#include "llstring.h"
-#include "llskipmap.h"
#include <map>
typedef enum EGPUClass
diff --git a/indra/newview/llfloaterbump.cpp b/indra/newview/llfloaterbump.cpp
index 3f6ed92868..2cf1f555ea 100644
--- a/indra/newview/llfloaterbump.cpp
+++ b/indra/newview/llfloaterbump.cpp
@@ -37,13 +37,12 @@
#include "llscrolllistctrl.h"
#include "llvieweruictrlfactory.h"
+#include "llviewermessage.h"
#include "llappviewer.h" // gPacificDaylightTime
///----------------------------------------------------------------------------
/// Local function declarations, constants, enums, and typedefs
///----------------------------------------------------------------------------
-extern LLLinkedList<LLMeanCollisionData> gMeanCollisionList;
-
LLFloaterBump* LLFloaterBump::sInstance = NULL;
///----------------------------------------------------------------------------
@@ -83,7 +82,7 @@ void LLFloaterBump::show(void *contents)
if (!list) return;
list->deleteAllItems();
- if (gMeanCollisionList.isEmpty())
+ if (gMeanCollisionList.empty())
{
LLString none_detected = sInstance->getString("none_detected");
LLSD row;
@@ -93,10 +92,10 @@ void LLFloaterBump::show(void *contents)
}
else
{
- for (LLMeanCollisionData* mcd = gMeanCollisionList.getFirstData();
- mcd;
- mcd = gMeanCollisionList.getNextData())
+ for (mean_collision_list_t::iterator iter = gMeanCollisionList.begin();
+ iter != gMeanCollisionList.end(); ++iter)
{
+ LLMeanCollisionData *mcd = *iter;
LLFloaterBump::add(list, mcd);
}
}
diff --git a/indra/newview/llfloatermap.cpp b/indra/newview/llfloatermap.cpp
index 4097abc22d..7de980a075 100644
--- a/indra/newview/llfloatermap.cpp
+++ b/indra/newview/llfloatermap.cpp
@@ -118,7 +118,7 @@ LLFloaterMap *gFloaterMap = NULL;
LLFloaterMap::LLFloaterMap(const std::string& name)
:
LLFloater(name,
- "FloaterMapRect",
+ "FloaterMiniMapRect",
MAP_TITLE,
TRUE,
FLOATERMAP_MIN_WIDTH,
diff --git a/indra/newview/llfloaterpostcard.cpp b/indra/newview/llfloaterpostcard.cpp
index 044c8c9d90..4d97688b2a 100644
--- a/indra/newview/llfloaterpostcard.cpp
+++ b/indra/newview/llfloaterpostcard.cpp
@@ -67,7 +67,8 @@
/// Local function declarations, constants, enums, and typedefs
///----------------------------------------------------------------------------
-LLLinkedList<LLFloaterPostcard> LLFloaterPostcard::sInstances;
+//static
+LLFloaterPostcard::instance_list_t LLFloaterPostcard::sInstances;
///----------------------------------------------------------------------------
/// Class LLFloaterPostcard
@@ -97,13 +98,13 @@ void LLFloaterPostcard::init()
gAgent.sendReliableMessage();
}
- sInstances.addData(this);
+ sInstances.insert(this);
}
// Destroys the object
LLFloaterPostcard::~LLFloaterPostcard()
{
- sInstances.removeData(this);
+ sInstances.erase(this);
mJPEGImage = NULL; // deletes image
}
@@ -313,11 +314,10 @@ void LLFloaterPostcard::uploadCallback(const LLUUID& asset_id, void *user_data,
// static
void LLFloaterPostcard::updateUserInfo(const char *email)
{
- LLFloaterPostcard *instance;
-
- sInstances.resetList();
- while ((instance = sInstances.getNextData()))
+ for (instance_list_t::iterator iter = sInstances.begin();
+ iter != sInstances.end(); ++iter)
{
+ LLFloaterPostcard *instance = *iter;
const LLString& text = instance->childGetValue("from_form").asString();
if (text.empty())
{
diff --git a/indra/newview/llfloaterpostcard.h b/indra/newview/llfloaterpostcard.h
index 5e0efa0ccb..2e2fffb18a 100644
--- a/indra/newview/llfloaterpostcard.h
+++ b/indra/newview/llfloaterpostcard.h
@@ -78,8 +78,9 @@ protected:
LLVector2 mImageScale;
LLVector3d mPosTakenGlobal;
boolean mHasFirstMsgFocus;
-
- static LLLinkedList<LLFloaterPostcard> sInstances;
+
+ typedef std::set<LLFloaterPostcard*> instance_list_t;
+ static instance_list_t sInstances;
};
diff --git a/indra/newview/llfloaterurlentry.cpp b/indra/newview/llfloaterurlentry.cpp
index 16d869ea6f..e9e2584b17 100644
--- a/indra/newview/llfloaterurlentry.cpp
+++ b/indra/newview/llfloaterurlentry.cpp
@@ -72,9 +72,12 @@ public:
void completeAny(U32 status, const std::string& mime_type)
{
+ // Set empty type to none/none. Empty string is reserved for legacy parcels
+ // which have no mime type set.
+ std::string resolved_mime_type = ! mime_type.empty() ? mime_type : "none/none";
LLFloaterURLEntry* floater_url_entry = (LLFloaterURLEntry*)mParent.get();
if ( floater_url_entry )
- floater_url_entry->headerFetchComplete( status, mime_type );
+ floater_url_entry->headerFetchComplete( status, resolved_mime_type );
}
};
diff --git a/indra/newview/llfloaterworldmap.cpp b/indra/newview/llfloaterworldmap.cpp
index ebc6dc2322..8a40cdd062 100644
--- a/indra/newview/llfloaterworldmap.cpp
+++ b/indra/newview/llfloaterworldmap.cpp
@@ -150,13 +150,7 @@ const LLUUID LLFloaterWorldMap::sHomeID( "10000000-0000-0000-0000-000000000001"
LLFloaterWorldMap::LLFloaterWorldMap()
-: LLFloater("worldmap", "FloaterWorldMapRect", "World Map",
- TRUE, // resize
- 410, // min-width
- 520, // min-height
- FALSE, // drag on left
- TRUE, // minimize
- TRUE), // close
+: LLFloater("worldmap"),
mInventory(NULL),
mInventoryObserver(NULL),
mFriendObserver(NULL),
diff --git a/indra/newview/llhudeffectlookat.h b/indra/newview/llhudeffectlookat.h
index 4295078681..ef3691d8d7 100644
--- a/indra/newview/llhudeffectlookat.h
+++ b/indra/newview/llhudeffectlookat.h
@@ -33,7 +33,6 @@
#define LL_LLHUDEFFECTLOOKAT_H
#include "llhudeffect.h"
-#include "llskiplist.h"
class LLViewerObject;
class LLVOAvatar;
diff --git a/indra/newview/llhudobject.h b/indra/newview/llhudobject.h
index 5e2c300d2c..11d9f43fcc 100644
--- a/indra/newview/llhudobject.h
+++ b/indra/newview/llhudobject.h
@@ -41,7 +41,6 @@
#include "v4color.h"
#include "v3math.h"
#include "v3dmath.h"
-#include "linked_lists.h"
#include "lldrawpool.h"
#include <list>
diff --git a/indra/newview/llimview.cpp b/indra/newview/llimview.cpp
index 58139e41aa..4dc5bfddec 100644
--- a/indra/newview/llimview.cpp
+++ b/indra/newview/llimview.cpp
@@ -40,7 +40,6 @@
#include "llhttpclient.h"
#include "llsdutil.h"
#include "llstring.h"
-#include "linked_lists.h"
#include "llvieweruictrlfactory.h"
#include "llagent.h"
diff --git a/indra/newview/llinventorybridge.cpp b/indra/newview/llinventorybridge.cpp
index 0e17d8503d..a0fa0e083c 100644
--- a/indra/newview/llinventorybridge.cpp
+++ b/indra/newview/llinventorybridge.cpp
@@ -3522,8 +3522,13 @@ struct LLFoundData
struct LLWearableHoldingPattern
{
LLWearableHoldingPattern() : mResolved(0) {}
- ~LLWearableHoldingPattern() { mFoundList.deleteAllData(); }
- LLDoubleLinkedList<LLFoundData> mFoundList;
+ ~LLWearableHoldingPattern()
+ {
+ for_each(mFoundList.begin(), mFoundList.end(), DeletePointer());
+ mFoundList.clear();
+ }
+ typedef std::list<LLFoundData*> found_list_t;
+ found_list_t mFoundList;
S32 mResolved;
};
@@ -3913,7 +3918,7 @@ void wear_inventory_category_on_avatar_step2( BOOL proceed, void* userdata )
item_array.get(i)->getAssetUUID(),
item_array.get(i)->getName(),
item_array.get(i)->getType());
- holder->mFoundList.addData(found);
+ holder->mFoundList.push_front(found);
found_container.put(found);
}
for(i = 0; i < wearable_count; ++i)
@@ -4004,10 +4009,10 @@ void wear_inventory_category_on_avatar_loop(LLWearable* wearable, void* data)
if(wearable)
{
- for(LLFoundData* data = holder->mFoundList.getFirstData();
- data;
- data = holder->mFoundList.getNextData() )
+ for (LLWearableHoldingPattern::found_list_t::iterator iter = holder->mFoundList.begin();
+ iter != holder->mFoundList.end(); ++iter)
{
+ LLFoundData* data = *iter;
if(wearable->getID() == data->mAssetID)
{
data->mWearable = wearable;
@@ -4016,7 +4021,7 @@ void wear_inventory_category_on_avatar_loop(LLWearable* wearable, void* data)
}
}
holder->mResolved += 1;
- if(holder->mResolved >= holder->mFoundList.getLength())
+ if(holder->mResolved >= (S32)holder->mFoundList.size())
{
wear_inventory_category_on_avatar_step3(holder, append);
}
@@ -4032,10 +4037,10 @@ void wear_inventory_category_on_avatar_step3(LLWearableHoldingPattern* holder, B
// that we recursed through.
for( S32 i = 0; i < WT_COUNT; i++ )
{
- for(LLFoundData* data = holder->mFoundList.getFirstData();
- data;
- data = holder->mFoundList.getNextData())
+ for (LLWearableHoldingPattern::found_list_t::iterator iter = holder->mFoundList.begin();
+ iter != holder->mFoundList.end(); ++iter)
{
+ LLFoundData* data = *iter;
LLWearable* wearable = data->mWearable;
if( wearable && ((S32)wearable->getType() == i) )
{
diff --git a/indra/newview/llinventorymodel.h b/indra/newview/llinventorymodel.h
index 79a35f78ea..c2ec01a1a0 100644
--- a/indra/newview/llinventorymodel.h
+++ b/indra/newview/llinventorymodel.h
@@ -439,8 +439,6 @@ protected:
mutable LLPointer<LLViewerInventoryItem> mLastItem;
// This last set of indices is used to map parents to children.
- //LLPtrSkipMap<const LLUUID, cat_array_t*> mParentChildCategoryTree;
- //LLPtrSkipMap<const LLUUID, item_array_t*> mParentChildItemTree;
typedef std::map<LLUUID, cat_array_t*> parent_cat_map_t;
typedef std::map<LLUUID, item_array_t*> parent_item_map_t;
parent_cat_map_t mParentChildCategoryTree;
diff --git a/indra/newview/llmanipscale.cpp b/indra/newview/llmanipscale.cpp
index 457682a154..5252e3e3c6 100644
--- a/indra/newview/llmanipscale.cpp
+++ b/indra/newview/llmanipscale.cpp
@@ -173,11 +173,6 @@ void LLManipScale::handleDeselect()
LLManip::handleDeselect();
}
-BOOL sort_manip_by_z(LLManipScale::ManipulatorHandle *new_manip, LLManipScale::ManipulatorHandle *test_manip)
-{
- return ((new_manip->mType < test_manip->mType) || (new_manip->mPosition.mV[VZ] < test_manip->mPosition.mV[VZ]));
-}
-
LLManipScale::LLManipScale( LLToolComposite* composite )
:
LLManip( "Scale", composite ),
@@ -194,7 +189,6 @@ LLManipScale::LLManipScale( LLToolComposite* composite )
mSnapGuideLength(0.f),
mScaleSnapValue(0.f)
{
- mProjectedManipulators.setInsertBefore(sort_manip_by_z);
mManipulatorScales = new F32[NUM_MANIPULATORS];
for (S32 i = 0; i < NUM_MANIPULATORS; i++)
{
@@ -204,7 +198,8 @@ LLManipScale::LLManipScale( LLToolComposite* composite )
LLManipScale::~LLManipScale()
{
- delete []mManipulatorScales;
+ for_each(mProjectedManipulators.begin(), mProjectedManipulators.end(), DeletePointer());
+ delete[] mManipulatorScales;
}
void LLManipScale::render()
@@ -471,8 +466,6 @@ void LLManipScale::highlightManipulators(S32 x, S32 y)
LLVector3 max = bbox.getMaxLocal();
LLVector3 ctr = bbox.getCenterLocal();
- mProjectedManipulators.deleteAllData();
-
S32 numManips = 0;
// corners
mManipulatorVertices[numManips++] = LLVector4(min.mV[VX], min.mV[VY], min.mV[VZ], 1.f);
@@ -496,6 +489,9 @@ void LLManipScale::highlightManipulators(S32 x, S32 y)
mManipulatorVertices[numManips++] = LLVector4(ctr.mV[VX], ctr.mV[VY], min.mV[VZ], 1.f);
}
+ for_each(mProjectedManipulators.begin(), mProjectedManipulators.end(), DeletePointer());
+ mProjectedManipulators.clear();
+
for (S32 i = 0; i < numManips; i++)
{
LLVector4 projectedVertex = mManipulatorVertices[i] * transform;
@@ -503,7 +499,7 @@ void LLManipScale::highlightManipulators(S32 x, S32 y)
ManipulatorHandle* projManipulator = new ManipulatorHandle(LLVector3(projectedVertex.mV[VX], projectedVertex.mV[VY],
projectedVertex.mV[VZ]), MANIPULATOR_IDS[i], (i < 7) ? SCALE_MANIP_CORNER : SCALE_MANIP_FACE);
- mProjectedManipulators.addDataSorted(projManipulator);
+ mProjectedManipulators.insert(projManipulator);
}
F32 half_width = (F32)gViewerWindow->getWindowWidth() / 2.f;
@@ -514,9 +510,10 @@ void LLManipScale::highlightManipulators(S32 x, S32 y)
mHighlightedPart = LL_NO_PART;
- for (ManipulatorHandle* manipulator = mProjectedManipulators.getFirstData();
- manipulator;
- manipulator = mProjectedManipulators.getNextData())
+ for (minpulator_list_t::iterator iter = mProjectedManipulators.begin();
+ iter != mProjectedManipulators.end(); ++iter)
+ {
+ ManipulatorHandle* manipulator = *iter;
{
manip2d.setVec(manipulator->mPosition.mV[VX] * half_width, manipulator->mPosition.mV[VY] * half_height);
@@ -529,6 +526,7 @@ void LLManipScale::highlightManipulators(S32 x, S32 y)
break;
}
}
+ }
}
for (S32 i = 0; i < NUM_MANIPULATORS; i++)
diff --git a/indra/newview/llmanipscale.h b/indra/newview/llmanipscale.h
index 3ea5ee7d7a..c02845e358 100644
--- a/indra/newview/llmanipscale.h
+++ b/indra/newview/llmanipscale.h
@@ -124,6 +124,20 @@ private:
void updateSnapGuides(const LLBBox& bbox);
private:
+ struct compare_manipulators
+ {
+ bool operator() (const ManipulatorHandle* const a, const ManipulatorHandle* const b) const
+ {
+ if (a->mType != b->mType)
+ return a->mType < b->mType;
+ else if (a->mPosition.mV[VZ] != b->mPosition.mV[VZ])
+ return a->mPosition.mV[VZ] < b->mPosition.mV[VZ];
+ else
+ return a->mManipID < b->mManipID;
+ }
+ };
+
+
F32 mBoxHandleSize; // The size of the handles at the corners of the bounding box
F32 mScaledBoxHandleSize; // handle size after scaling for selection feedback
EManipPart mManipPart;
@@ -135,7 +149,8 @@ private:
S32 mLastMouseY;
BOOL mSendUpdateOnMouseUp;
U32 mLastUpdateFlags;
- LLLinkedList<ManipulatorHandle> mProjectedManipulators;
+ typedef std::set<ManipulatorHandle*, compare_manipulators> minpulator_list_t;
+ minpulator_list_t mProjectedManipulators;
LLVector4 mManipulatorVertices[14];
F32 mScaleSnapUnit1; // size of snap multiples for axis 1
F32 mScaleSnapUnit2; // size of snap multiples for axis 2
diff --git a/indra/newview/llmaniptranslate.cpp b/indra/newview/llmaniptranslate.cpp
index 3182f14951..98d67f3804 100644
--- a/indra/newview/llmaniptranslate.cpp
+++ b/indra/newview/llmaniptranslate.cpp
@@ -100,11 +100,6 @@ const U32 ARROW_TO_AXIS[4] =
VZ
};
-BOOL sort_manip_by_end_z(LLManipTranslate::ManipulatorHandle *new_manip, LLManipTranslate::ManipulatorHandle *test_manip)
-{
- return (new_manip->mEndPosition.mV[VZ] < test_manip->mEndPosition.mV[VZ]);
-}
-
LLManipTranslate::LLManipTranslate( LLToolComposite* composite )
: LLManip( "Move", composite ),
mLastHoverMouseX(-1),
@@ -125,8 +120,6 @@ LLManipTranslate::LLManipTranslate( LLToolComposite* composite )
mPlaneScales(1.f, 1.f, 1.f),
mPlaneManipPositions(1.f, 1.f, 1.f, 1.f)
{
- mProjectedManipulators.setInsertBefore(sort_manip_by_end_z);
-
if (sGridTex == 0)
{
restoreGL();
@@ -253,7 +246,7 @@ void LLManipTranslate::restoreGL()
LLManipTranslate::~LLManipTranslate()
{
- mProjectedManipulators.deleteAllData();
+ for_each(mProjectedManipulators.begin(), mProjectedManipulators.end(), DeletePointer());
}
@@ -841,8 +834,6 @@ void LLManipTranslate::highlightManipulators(S32 x, S32 y)
transform *= projMatrix;
}
- mProjectedManipulators.deleteAllData();
-
S32 numManips = 0;
// edges
@@ -898,6 +889,9 @@ void LLManipTranslate::highlightManipulators(S32 x, S32 y)
planar_manip_xy_visible = TRUE;
}
+ for_each(mProjectedManipulators.begin(), mProjectedManipulators.end(), DeletePointer());
+ mProjectedManipulators.clear();
+
for (S32 i = 0; i < num_arrow_manips; i+= 2)
{
LLVector4 projected_start = mManipulatorVertices[i] * transform;
@@ -911,7 +905,7 @@ void LLManipTranslate::highlightManipulators(S32 x, S32 y)
LLVector3(projected_end.mV[VX], projected_end.mV[VY], projected_end.mV[VZ]),
MANIPULATOR_IDS[i / 2],
10.f); // 10 pixel hotspot for arrows
- mProjectedManipulators.addDataSorted(projManipulator);
+ mProjectedManipulators.insert(projManipulator);
}
if (planar_manip_yz_visible)
@@ -928,7 +922,7 @@ void LLManipTranslate::highlightManipulators(S32 x, S32 y)
LLVector3(projected_end.mV[VX], projected_end.mV[VY], projected_end.mV[VZ]),
MANIPULATOR_IDS[i / 2],
20.f); // 20 pixels for planar manipulators
- mProjectedManipulators.addDataSorted(projManipulator);
+ mProjectedManipulators.insert(projManipulator);
}
if (planar_manip_xz_visible)
@@ -945,7 +939,7 @@ void LLManipTranslate::highlightManipulators(S32 x, S32 y)
LLVector3(projected_end.mV[VX], projected_end.mV[VY], projected_end.mV[VZ]),
MANIPULATOR_IDS[i / 2],
20.f); // 20 pixels for planar manipulators
- mProjectedManipulators.addDataSorted(projManipulator);
+ mProjectedManipulators.insert(projManipulator);
}
if (planar_manip_xy_visible)
@@ -962,7 +956,7 @@ void LLManipTranslate::highlightManipulators(S32 x, S32 y)
LLVector3(projected_end.mV[VX], projected_end.mV[VY], projected_end.mV[VZ]),
MANIPULATOR_IDS[i / 2],
20.f); // 20 pixels for planar manipulators
- mProjectedManipulators.addDataSorted(projManipulator);
+ mProjectedManipulators.insert(projManipulator);
}
LLVector2 manip_start_2d;
@@ -973,9 +967,10 @@ void LLManipTranslate::highlightManipulators(S32 x, S32 y)
LLVector2 mousePos((F32)x - half_width, (F32)y - half_height);
LLVector2 mouse_delta;
- for (ManipulatorHandle* manipulator = mProjectedManipulators.getFirstData();
- manipulator;
- manipulator = mProjectedManipulators.getNextData())
+ for (minpulator_list_t::iterator iter = mProjectedManipulators.begin();
+ iter != mProjectedManipulators.end(); ++iter)
+ {
+ ManipulatorHandle* manipulator = *iter;
{
manip_start_2d.setVec(manipulator->mStartPosition.mV[VX] * half_width, manipulator->mStartPosition.mV[VY] * half_height);
manip_end_2d.setVec(manipulator->mEndPosition.mV[VX] * half_width, manipulator->mEndPosition.mV[VY] * half_height);
@@ -996,6 +991,7 @@ void LLManipTranslate::highlightManipulators(S32 x, S32 y)
break;
}
}
+ }
}
F32 LLManipTranslate::getMinGridScale()
diff --git a/indra/newview/llmaniptranslate.h b/indra/newview/llmaniptranslate.h
index 8821b64c90..c9f98e9c7d 100644
--- a/indra/newview/llmaniptranslate.h
+++ b/indra/newview/llmaniptranslate.h
@@ -35,7 +35,6 @@
#include "llmanip.h"
#include "lltimer.h"
#include "v4math.h"
-#include "linked_lists.h"
#include "llquaternion.h"
class LLManipTranslate : public LLManip
@@ -88,6 +87,17 @@ protected:
F32 getMinGridScale();
private:
+ struct compare_manipulators
+ {
+ bool operator() (const ManipulatorHandle* const a, const ManipulatorHandle* const b) const
+ {
+ if (a->mEndPosition.mV[VZ] != b->mEndPosition.mV[VZ])
+ return (a->mEndPosition.mV[VZ] < b->mEndPosition.mV[VZ]);
+ else
+ return a->mManipID < b->mManipID;
+ }
+ };
+
S32 mLastHoverMouseX;
S32 mLastHoverMouseY;
BOOL mSendUpdateOnMouseUp;
@@ -105,7 +115,8 @@ private:
LLVector3d mDragCursorStartGlobal;
LLVector3d mDragSelectionStartGlobal;
LLTimer mUpdateTimer;
- LLLinkedList<ManipulatorHandle> mProjectedManipulators;
+ typedef std::set<ManipulatorHandle*, compare_manipulators> minpulator_list_t;
+ minpulator_list_t mProjectedManipulators;
LLVector4 mManipulatorVertices[18];
F32 mSnapOffsetMeters;
LLVector3 mSnapOffsetAxis;
diff --git a/indra/newview/llmenucommands.cpp b/indra/newview/llmenucommands.cpp
index 68bbe53090..080413bb56 100644
--- a/indra/newview/llmenucommands.cpp
+++ b/indra/newview/llmenucommands.cpp
@@ -41,7 +41,6 @@
#include "message.h"
#include "llagent.h"
-#include "llcallbacklist.h"
#include "llcallingcard.h"
#include "llchatbar.h"
#include "llviewercontrol.h"
diff --git a/indra/newview/llmimetypes.cpp b/indra/newview/llmimetypes.cpp
index 67f7532ff6..e1bc3dbf11 100644
--- a/indra/newview/llmimetypes.cpp
+++ b/indra/newview/llmimetypes.cpp
@@ -53,7 +53,7 @@ bool LLMIMETypes::parseMIMETypes(const LLString& xml_filename)
{
LLXMLNodePtr root;
bool success = LLViewerUICtrlFactory::getLayeredXMLNode(xml_filename, root);
- if ( ! success || ! root.isNull() || ! root->hasName( "mimetypes" ) )
+ if ( ! success || root.isNull() || ! root->hasName( "mimetypes" ) )
{
llwarns << "Unable to read MIME type file: "
<< xml_filename << llendl;
diff --git a/indra/newview/llmoveview.cpp b/indra/newview/llmoveview.cpp
index 4f1d7bb514..4963b42a62 100644
--- a/indra/newview/llmoveview.cpp
+++ b/indra/newview/llmoveview.cpp
@@ -38,7 +38,6 @@
// Viewer includes
#include "llagent.h"
-#include "llcallbacklist.h"
#include "llviewercontrol.h"
#include "llfontgl.h"
#include "llbutton.h"
diff --git a/indra/newview/llnamebox.h b/indra/newview/llnamebox.h
index 5fd92f5daa..da8df5c225 100644
--- a/indra/newview/llnamebox.h
+++ b/indra/newview/llnamebox.h
@@ -37,7 +37,6 @@
#include "llview.h"
#include "llstring.h"
#include "llfontgl.h"
-#include "linked_lists.h"
#include "lltextbox.h"
class LLNameBox
diff --git a/indra/newview/llnameeditor.h b/indra/newview/llnameeditor.h
index 9c89454c33..a5a0c5d9c8 100644
--- a/indra/newview/llnameeditor.h
+++ b/indra/newview/llnameeditor.h
@@ -38,7 +38,6 @@
#include "v4color.h"
#include "llstring.h"
#include "llfontgl.h"
-#include "linked_lists.h"
#include "lllineeditor.h"
diff --git a/indra/newview/llnetmap.cpp b/indra/newview/llnetmap.cpp
index 0a078e1058..7ceb40499f 100644
--- a/indra/newview/llnetmap.cpp
+++ b/indra/newview/llnetmap.cpp
@@ -36,7 +36,6 @@
#include "indra_constants.h"
#include "llui.h"
-#include "linked_lists.h"
#include "llmath.h" // clampf()
#include "llfocusmgr.h"
#include "llglimmediate.h"
diff --git a/indra/newview/lloverlaybar.cpp b/indra/newview/lloverlaybar.cpp
index cda921ab8f..237826cb7a 100644
--- a/indra/newview/lloverlaybar.cpp
+++ b/indra/newview/lloverlaybar.cpp
@@ -331,7 +331,15 @@ void LLOverlayBar::onClickStandUp(void*)
////////////////////////////////////////////////////////////////////////////////
// static media helpers
// *TODO: Move this into an audio manager abstraction
-
+//static
+void LLOverlayBar::mediaStop(void*)
+{
+ if (!gOverlayBar)
+ {
+ return;
+ }
+ LLViewerParcelMedia::stop();
+}
//static
void LLOverlayBar::toggleMediaPlay(void*)
{
diff --git a/indra/newview/lloverlaybar.h b/indra/newview/lloverlaybar.h
index 741095e408..4fb438a712 100644
--- a/indra/newview/lloverlaybar.h
+++ b/indra/newview/lloverlaybar.h
@@ -81,6 +81,7 @@ public:
static void toggleMusicPlay(void*);
static void musicPause(void*);
static void musicStop(void*);
+ static void mediaStop(void*);
static void toggleAudioVolumeFloater(void*);
diff --git a/indra/newview/llpanelavatar.h b/indra/newview/llpanelavatar.h
index 6e5b7bfb41..a598dfebf5 100644
--- a/indra/newview/llpanelavatar.h
+++ b/indra/newview/llpanelavatar.h
@@ -35,7 +35,6 @@
#include "llpanel.h"
#include "v3dmath.h"
#include "lluuid.h"
-#include "linked_lists.h"
#include "llwebbrowserctrl.h"
class LLButton;
diff --git a/indra/newview/llpanelobject.cpp b/indra/newview/llpanelobject.cpp
index f0acbf4b22..1ad71075ae 100644
--- a/indra/newview/llpanelobject.cpp
+++ b/indra/newview/llpanelobject.cpp
@@ -164,11 +164,10 @@ BOOL LLPanelObject::postBuild()
childSetCommitCallback("material",onCommitMaterial,this);
mComboMaterial->removeall();
// *TODO:translate
- LLMaterialInfo *minfop;
- for (minfop = LLMaterialTable::basic.mMaterialInfoList.getFirstData();
- minfop != NULL;
- minfop = LLMaterialTable::basic.mMaterialInfoList.getNextData())
+ for (LLMaterialTable::info_list_t::iterator iter = LLMaterialTable::basic.mMaterialInfoList.begin();
+ iter != LLMaterialTable::basic.mMaterialInfoList.end(); ++iter)
{
+ LLMaterialInfo* minfop = *iter;
if (minfop->mMCode != LL_MCODE_LIGHT)
{
mComboMaterial->add(minfop->mName);
diff --git a/indra/newview/llpolymesh.cpp b/indra/newview/llpolymesh.cpp
index dc67ff48ea..85d5def673 100644
--- a/indra/newview/llpolymesh.cpp
+++ b/indra/newview/llpolymesh.cpp
@@ -90,7 +90,8 @@ LLPolyMeshSharedData::LLPolyMeshSharedData()
LLPolyMeshSharedData::~LLPolyMeshSharedData()
{
freeMeshData();
- mMorphData.deleteAllData();
+ for_each(mMorphData.begin(), mMorphData.end(), DeletePointer());
+ mMorphData.clear();
}
//-----------------------------------------------------------------------------
@@ -604,7 +605,7 @@ BOOL LLPolyMeshSharedData::loadMesh( const char *fileName )
continue;
}
- mMorphData.addData(morph_data);
+ mMorphData.insert(morph_data);
}
S32 numRemaps;
@@ -759,11 +760,11 @@ LLPolyMesh *LLPolyMesh::getMesh(const LLString &name, LLPolyMesh* reference_mesh
//-------------------------------------------------------------------------
// search for an existing mesh by this name
//-------------------------------------------------------------------------
- LLPolyMeshSharedData **meshSharedData = sGlobalSharedMeshList.getValue(name);
+ LLPolyMeshSharedData* meshSharedData = get_if_there(sGlobalSharedMeshList, name, (LLPolyMeshSharedData*)NULL);
if (meshSharedData)
{
// llinfos << "Polymesh " << name << " found in global mesh table." << llendl;
- LLPolyMesh *poly_mesh = new LLPolyMesh(*meshSharedData, reference_mesh);
+ LLPolyMesh *poly_mesh = new LLPolyMesh(meshSharedData, reference_mesh);
return poly_mesh;
}
@@ -787,7 +788,7 @@ LLPolyMesh *LLPolyMesh::getMesh(const LLString &name, LLPolyMesh* reference_mesh
LLPolyMesh *poly_mesh = new LLPolyMesh(mesh_data, reference_mesh);
// llinfos << "Polymesh " << name << " added to global mesh table." << llendl;
- sGlobalSharedMeshList.addToTail(name, poly_mesh->mSharedData);
+ sGlobalSharedMeshList[name] = poly_mesh->mSharedData;
return poly_mesh;
}
@@ -797,21 +798,9 @@ LLPolyMesh *LLPolyMesh::getMesh(const LLString &name, LLPolyMesh* reference_mesh
//-----------------------------------------------------------------------------
void LLPolyMesh::freeAllMeshes()
{
- U32 i;
-
// delete each item in the global lists
- for (i=0; i<sGlobalSharedMeshList.length(); i++)
- {
- // returns a pointer to the value, which is the pointer
- // to the mesh
- LLPolyMeshSharedData **shared_mesh_pp = sGlobalSharedMeshList.getValueAt(i);
-
- // delete the mesh
- delete *shared_mesh_pp;
- }
-
- // empty the lists
- sGlobalSharedMeshList.removeAll();
+ for_each(sGlobalSharedMeshList.begin(), sGlobalSharedMeshList.end(), DeletePairedPointer());
+ sGlobalSharedMeshList.clear();
}
LLPolyMeshSharedData *LLPolyMesh::getSharedData() const
@@ -830,7 +819,7 @@ void LLPolyMesh::dumpDiagInfo()
U32 total_faces = 0;
U32 total_kb = 0;
- char buf[1024]; /*Flawfinder: ignore*/
+ std::string buf;
llinfos << "-----------------------------------------------------" << llendl;
llinfos << " Global PolyMesh Table (DEBUG only)" << llendl;
@@ -838,18 +827,17 @@ void LLPolyMesh::dumpDiagInfo()
llinfos << "-----------------------------------------------------" << llendl;
// print each loaded mesh, and it's memory usage
- for (U32 i=0; i<sGlobalSharedMeshList.length(); i++)
+ for(LLPolyMeshSharedDataTable::iterator iter = sGlobalSharedMeshList.begin();
+ iter != sGlobalSharedMeshList.end(); ++iter)
{
- std::string *mesh_name_p = sGlobalSharedMeshList.getIndexAt(i);
-
- LLPolyMeshSharedData **mesh_pp = sGlobalSharedMeshList.getValueAt(i);
- LLPolyMeshSharedData &mesh = **mesh_pp;
+ const std::string& mesh_name = iter->first;
+ LLPolyMeshSharedData* mesh = iter->second;
- S32 num_verts = mesh.mNumVertices;
- S32 num_faces = mesh.mNumFaces;
- U32 num_kb = mesh.getNumKB();
+ S32 num_verts = mesh->mNumVertices;
+ S32 num_faces = mesh->mNumFaces;
+ U32 num_kb = mesh->getNumKB();
- snprintf(buf, sizeof(buf), "%8d %8d %8d %s", num_verts, num_faces, num_kb, mesh_name_p->c_str()); /* Flawfinder: ignore */
+ buf = llformat("%8d %8d %8d %s", num_verts, num_faces, num_kb, mesh_name.c_str());
llinfos << buf << llendl;
total_verts += num_verts;
@@ -858,7 +846,7 @@ void LLPolyMesh::dumpDiagInfo()
}
llinfos << "-----------------------------------------------------" << llendl;
- snprintf(buf, sizeof(buf), "%8d %8d %8d TOTAL", total_verts, total_faces, total_kb ); /* Flawfinder: ignore */
+ buf = llformat("%8d %8d %8d TOTAL", total_verts, total_faces, total_kb );
llinfos << buf << llendl;
llinfos << "-----------------------------------------------------" << llendl;
}
@@ -943,11 +931,12 @@ void LLPolyMesh::initializeForMorph()
//-----------------------------------------------------------------------------
LLPolyMorphData* LLPolyMesh::getMorphData(const char *morph_name)
{
- if (!mSharedData) return NULL;
- for (LLPolyMorphData *morph_data = mSharedData->mMorphData.getFirstData();
- morph_data;
- morph_data = mSharedData->mMorphData.getNextData())
+ if (!mSharedData)
+ return NULL;
+ for (LLPolyMeshSharedData::morphdata_list_t::iterator iter = mSharedData->mMorphData.begin();
+ iter != mSharedData->mMorphData.end(); ++iter)
{
+ LLPolyMorphData *morph_data = *iter;
if (!strcmp(morph_data->getName(), morph_name))
{
return morph_data;
@@ -959,22 +948,25 @@ LLPolyMorphData* LLPolyMesh::getMorphData(const char *morph_name)
//-----------------------------------------------------------------------------
// removeMorphData()
//-----------------------------------------------------------------------------
-void LLPolyMesh::removeMorphData(LLPolyMorphData *morph_target)
-{
- if (!mSharedData) return;
-
- mSharedData->mMorphData.removeData(morph_target);
-}
+// // erasing but not deleting seems bad, but fortunately we don't actually use this...
+// void LLPolyMesh::removeMorphData(LLPolyMorphData *morph_target)
+// {
+// if (!mSharedData)
+// return;
+// mSharedData->mMorphData.erase(morph_target);
+// }
//-----------------------------------------------------------------------------
// deleteAllMorphData()
//-----------------------------------------------------------------------------
-void LLPolyMesh::deleteAllMorphData()
-{
- if (!mSharedData) return;
+// void LLPolyMesh::deleteAllMorphData()
+// {
+// if (!mSharedData)
+// return;
- mSharedData->mMorphData.deleteAllData();
-}
+// for_each(mSharedData->mMorphData.begin(), mSharedData->mMorphData.end(), DeletePointer());
+// mSharedData->mMorphData.clear();
+// }
//-----------------------------------------------------------------------------
// getWritableWeights()
diff --git a/indra/newview/llpolymesh.h b/indra/newview/llpolymesh.h
index 8003c4a89d..32e500e19d 100644
--- a/indra/newview/llpolymesh.h
+++ b/indra/newview/llpolymesh.h
@@ -39,10 +39,7 @@
#include "v3math.h"
#include "v2math.h"
#include "llquaternion.h"
-#include "llskipmap.h"
-#include "llassoclist.h"
#include "llpolymorph.h"
-#include "llptrskipmap.h"
#include "lljoint.h"
//#include "lldarray.h"
@@ -99,8 +96,8 @@ private:
std::string* mJointNames;
// morph targets
- typedef LLLinkedList<LLPolyMorphData> LLPolyMorphDataList;
- LLPolyMorphDataList mMorphData;
+ typedef std::set<LLPolyMorphData*> morphdata_list_t;
+ morphdata_list_t mMorphData;
std::map<S32, S32> mSharedVerts;
@@ -113,11 +110,11 @@ public:
U32 mNumTriangleIndices;
U32 *mTriangleIndices;
-private:
+public:
LLPolyMeshSharedData();
-
~LLPolyMeshSharedData();
+private:
void setupLOD(LLPolyMeshSharedData* reference_data);
// Frees all mesh memory resources
@@ -315,8 +312,8 @@ public:
}
LLPolyMorphData* getMorphData(const char *morph_name);
- void removeMorphData(LLPolyMorphData *morph_target);
- void deleteAllMorphData();
+// void removeMorphData(LLPolyMorphData *morph_target);
+// void deleteAllMorphData();
LLPolyMeshSharedData *getSharedData() const;
LLPolyMesh *getReferenceMesh() { return mReferenceMesh ? mReferenceMesh : this; }
@@ -365,7 +362,7 @@ protected:
LLPolyMesh *mReferenceMesh;
// global mesh list
- typedef LLAssocList<std::string, LLPolyMeshSharedData*> LLPolyMeshSharedDataTable;
+ typedef std::map<LLString, LLPolyMeshSharedData*> LLPolyMeshSharedDataTable;
static LLPolyMeshSharedDataTable sGlobalSharedMeshList;
// Backlink only; don't make this an LLPointer.
diff --git a/indra/newview/llpolymorph.cpp b/indra/newview/llpolymorph.cpp
index 107b51d032..5574ec67c7 100644
--- a/indra/newview/llpolymorph.cpp
+++ b/indra/newview/llpolymorph.cpp
@@ -35,7 +35,6 @@
#include "llviewerprecompiledheaders.h"
#include "llpolymorph.h"
-#include "linked_lists.h"
#include "llvoavatar.h"
#include "llxmltree.h"
#include "llendianswizzle.h"
@@ -44,8 +43,6 @@
const F32 NORMAL_SOFTEN_FACTOR = 0.65f;
-LLLinkedList<LLPolyMorphData> gLoadedMorphs;
-
//-----------------------------------------------------------------------------
// LLPolyMorphData()
//-----------------------------------------------------------------------------
@@ -184,8 +181,6 @@ BOOL LLPolyMorphData::loadBinary(FILE *fp, LLPolyMeshSharedData *mesh)
mAvgDistortion = mAvgDistortion * (1.f/(F32)mNumIndices);
mAvgDistortion.normVec();
- gLoadedMorphs.addData(this);
-
return TRUE;
}
diff --git a/indra/newview/llpolymorph.h b/indra/newview/llpolymorph.h
index 0d6ebc304b..088963584e 100644
--- a/indra/newview/llpolymorph.h
+++ b/indra/newview/llpolymorph.h
@@ -36,8 +36,6 @@
#include <vector>
#include "llviewervisualparam.h"
-#include "llskiplist.h"
-#include "linked_lists.h"
class LLPolyMeshSharedData;
class LLVOAvatar;
diff --git a/indra/newview/llselectmgr.cpp b/indra/newview/llselectmgr.cpp
index d2e3dc1ed9..f6556ffbd5 100644
--- a/indra/newview/llselectmgr.cpp
+++ b/indra/newview/llselectmgr.cpp
@@ -42,7 +42,6 @@
#include "llglimmediate.h"
#include "llpermissions.h"
#include "llpermissionsflags.h"
-#include "llptrskiplist.h"
#include "llundo.h"
#include "lluuid.h"
#include "llvolume.h"
diff --git a/indra/newview/lltextureview.h b/indra/newview/lltextureview.h
index 60bf63479b..4c5fb1ce68 100644
--- a/indra/newview/lltextureview.h
+++ b/indra/newview/lltextureview.h
@@ -33,7 +33,6 @@
#define LL_LLTEXTUREVIEW_H
#include "llcontainerview.h"
-#include "linked_lists.h"
class LLViewerImage;
class LLTextureBar;
diff --git a/indra/newview/lltoolbrush.cpp b/indra/newview/lltoolbrush.cpp
index 5a637a6346..d39ce57e56 100644
--- a/indra/newview/lltoolbrush.cpp
+++ b/indra/newview/lltoolbrush.cpp
@@ -108,10 +108,10 @@ void LLToolBrushLand::modifyLandAtPointGlobal(const LLVector3d &pos_global,
S32 radioAction = gSavedSettings.getS32("RadioLandBrushAction");
determineAffectedRegions(mLastAffectedRegions, pos_global);
- for(LLViewerRegion* regionp = mLastAffectedRegions.getFirstData();
- regionp != NULL;
- regionp = mLastAffectedRegions.getNextData())
+ for(region_list_t::iterator iter = mLastAffectedRegions.begin();
+ iter != mLastAffectedRegions.end(); ++iter)
{
+ LLViewerRegion* regionp = *iter;
//BOOL is_changed = FALSE;
LLVector3 pos_region = regionp->getPosRegionFromGlobal(pos_global);
LLSurface &land = regionp->getLand();
@@ -200,7 +200,7 @@ void LLToolBrushLand::modifyLandInSelectionGlobal()
S32 radioAction = gSavedSettings.getS32("RadioLandBrushAction");
- mLastAffectedRegions.removeAllNodes();
+ mLastAffectedRegions.clear();
determineAffectedRegions(mLastAffectedRegions, LLVector3d(min.mdV[VX], min.mdV[VY], 0));
determineAffectedRegions(mLastAffectedRegions, LLVector3d(min.mdV[VX], max.mdV[VY], 0));
@@ -223,10 +223,10 @@ void LLToolBrushLand::modifyLandInSelectionGlobal()
}
// Stop if our selection include a no-terraform region
- for(LLViewerRegion* regionp = mLastAffectedRegions.getFirstData();
- regionp != NULL;
- regionp = mLastAffectedRegions.getNextData())
+ for(region_list_t::iterator iter = mLastAffectedRegions.begin();
+ iter != mLastAffectedRegions.end(); ++iter)
{
+ LLViewerRegion* regionp = *iter;
if (!canTerraform(regionp))
{
alertNoTerraform(regionp);
@@ -234,10 +234,10 @@ void LLToolBrushLand::modifyLandInSelectionGlobal()
}
}
- for(LLViewerRegion* regionp = mLastAffectedRegions.getFirstData();
- regionp != NULL;
- regionp = mLastAffectedRegions.getNextData())
+ for(region_list_t::iterator iter = mLastAffectedRegions.begin();
+ iter != mLastAffectedRegions.end(); ++iter)
{
+ LLViewerRegion* regionp = *iter;
//BOOL is_changed = FALSE;
LLVector3 min_region = regionp->getPosRegionFromGlobal(min);
LLVector3 max_region = regionp->getPosRegionFromGlobal(max);
@@ -398,7 +398,7 @@ BOOL LLToolBrushLand::handleHover( S32 x, S32 y, MASK mask )
BOOL LLToolBrushLand::handleMouseUp(S32 x, S32 y, MASK mask)
{
BOOL handled = FALSE;
- mLastAffectedRegions.removeAllNodes();
+ mLastAffectedRegions.clear();
if( hasMouseCapture() )
{
// Release the mouse
@@ -452,15 +452,15 @@ void LLToolBrushLand::render()
spot.mdV[VY] = floor( spot.mdV[VY] + 0.5 );
mBrushIndex = gSavedSettings.getS32("RadioLandBrushSize");
- LLLinkedList<LLViewerRegion> regions;
+ region_list_t regions;
determineAffectedRegions(regions, spot);
// Now, for each region, render the overlay
LLVector3 pos_world = gAgent.getRegion()->getPosRegionFromGlobal(spot);
- for(LLViewerRegion* region = regions.getFirstData();
- region != NULL;
- region = regions.getNextData())
+ for(region_list_t::iterator iter = regions.begin();
+ iter != regions.end(); ++iter)
{
+ LLViewerRegion* region = *iter;
renderOverlay(region->getLand(),
region->getPosRegionFromGlobal(spot),
pos_world);
@@ -499,7 +499,7 @@ void LLToolBrushLand::renderOverlay(LLSurface& land, const LLVector3& pos_region
glPopMatrix();
}
-void LLToolBrushLand::determineAffectedRegions(LLLinkedList<LLViewerRegion>& regions,
+void LLToolBrushLand::determineAffectedRegions(region_list_t& regions,
const LLVector3d& spot ) const
{
LLVector3d corner(spot);
@@ -507,27 +507,27 @@ void LLToolBrushLand::determineAffectedRegions(LLLinkedList<LLViewerRegion>& reg
corner.mdV[VY] -= (LAND_BRUSH_SIZE[mBrushIndex] / 2);
LLViewerRegion* region = NULL;
region = gWorldPointer->getRegionFromPosGlobal(corner);
- if(region && !regions.checkData(region))
+ if(region && regions.find(region) == regions.end())
{
- regions.addData(region);
+ regions.insert(region);
}
corner.mdV[VY] += LAND_BRUSH_SIZE[mBrushIndex];
region = gWorldPointer->getRegionFromPosGlobal(corner);
- if(region && !regions.checkData(region))
+ if(region && regions.find(region) == regions.end())
{
- regions.addData(region);
+ regions.insert(region);
}
corner.mdV[VX] += LAND_BRUSH_SIZE[mBrushIndex];
region = gWorldPointer->getRegionFromPosGlobal(corner);
- if(region && !regions.checkData(region))
+ if(region && regions.find(region) == regions.end())
{
- regions.addData(region);
+ regions.insert(region);
}
corner.mdV[VY] -= LAND_BRUSH_SIZE[mBrushIndex];
region = gWorldPointer->getRegionFromPosGlobal(corner);
- if(region && !regions.checkData(region))
+ if(region && regions.find(region) == regions.end())
{
- regions.addData(region);
+ regions.insert(region);
}
}
@@ -554,10 +554,10 @@ void LLToolBrushLand::onMouseCaptureLost()
// static
void LLToolBrushLand::undo()
{
- for(LLViewerRegion* regionp = mLastAffectedRegions.getFirstData();
- regionp != NULL;
- regionp = mLastAffectedRegions.getNextData())
+ for(region_list_t::iterator iter = mLastAffectedRegions.begin();
+ iter != mLastAffectedRegions.end(); ++iter)
{
+ LLViewerRegion* regionp = *iter;
gMessageSystem->newMessageFast(_PREHASH_UndoLand);
gMessageSystem->nextBlockFast(_PREHASH_AgentData);
gMessageSystem->addUUIDFast(_PREHASH_AgentID, gAgent.getID() );
@@ -570,10 +570,10 @@ void LLToolBrushLand::undo()
/*
void LLToolBrushLand::redo()
{
- for(LLViewerRegion* regionp = mLastAffectedRegions.getFirstData();
- regionp != NULL;
- regionp = mLastAffectedRegions.getNextData())
+ for(region_list_t::iterator iter = mLastAffectedRegions.begin();
+ iter != mLastAffectedRegions.end(); ++iter)
{
+ LLViewerRegion* regionp = *iter;
gMessageSystem->newMessageFast(_PREHASH_RedoLand);
gMessageSystem->nextBlockFast(_PREHASH_AgentData);
gMessageSystem->addUUIDFast(_PREHASH_AgentID, gAgent.getID() );
diff --git a/indra/newview/lltoolbrush.h b/indra/newview/lltoolbrush.h
index 738934ebb1..c46037a8f7 100644
--- a/indra/newview/lltoolbrush.h
+++ b/indra/newview/lltoolbrush.h
@@ -40,8 +40,6 @@ class LLSurface;
class LLVector3d;
class LLViewerRegion;
-template<class DATA_TYPE> class LLLinkedList;
-
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// Class LLToolBrushLand
//
@@ -50,6 +48,8 @@ template<class DATA_TYPE> class LLLinkedList;
class LLToolBrushLand : public LLTool, public LLEditMenuHandler
{
+ typedef std::set<LLViewerRegion*> region_list_t;
+
public:
LLToolBrushLand();
@@ -80,7 +80,7 @@ protected:
void brush( void );
void modifyLandAtPointGlobal( const LLVector3d &spot, MASK mask );
- void determineAffectedRegions(LLLinkedList<LLViewerRegion>& regions,
+ void determineAffectedRegions(region_list_t& regions,
const LLVector3d& spot) const;
void renderOverlay(LLSurface& land, const LLVector3& pos_region,
const LLVector3& pos_world);
@@ -99,7 +99,8 @@ protected:
BOOL mGotHover;
BOOL mLastShowParcelOwners;
BOOL mBrushSelected;
- LLLinkedList<LLViewerRegion> mLastAffectedRegions;
+ // Order doesn't matter and we do check for existance of regions, so use a set
+ region_list_t mLastAffectedRegions;
};
extern LLToolBrushLand *gToolLand;
diff --git a/indra/newview/lltoolmgr.cpp b/indra/newview/lltoolmgr.cpp
index 0e46ece794..c365f14674 100644
--- a/indra/newview/lltoolmgr.cpp
+++ b/indra/newview/lltoolmgr.cpp
@@ -438,9 +438,7 @@ void LLToolMgr::clearSavedTool()
void LLToolset::addTool(LLTool* tool)
{
- llassert( !mToolList.checkData( tool ) ); // check for duplicates
-
- mToolList.addDataAtEnd( tool );
+ mToolList.push_back( tool );
if( !mSelectedTool )
{
mSelectedTool = tool;
@@ -457,7 +455,7 @@ void LLToolset::selectTool(LLTool* tool)
void LLToolset::selectToolByIndex( S32 index )
{
- LLTool *tool = mToolList.getNthData( index );
+ LLTool *tool = (index >= 0 && index < (S32)mToolList.size()) ? mToolList[index] : NULL;
if (tool)
{
mSelectedTool = tool;
@@ -467,13 +465,14 @@ void LLToolset::selectToolByIndex( S32 index )
BOOL LLToolset::isToolSelected( S32 index )
{
- return (mToolList.getNthData( index ) == mSelectedTool);
+ LLTool *tool = (index >= 0 && index < (S32)mToolList.size()) ? mToolList[index] : NULL;
+ return (tool == mSelectedTool);
}
void LLToolset::selectFirstTool()
{
- mSelectedTool = mToolList.getFirstData();
+ mSelectedTool = (0 < mToolList.size()) ? mToolList[0] : NULL;
if (gToolMgr)
{
gToolMgr->setCurrentTool( mSelectedTool );
@@ -484,43 +483,52 @@ void LLToolset::selectFirstTool()
void LLToolset::selectNextTool()
{
LLTool* next = NULL;
- for( LLTool* cur = mToolList.getFirstData(); cur; cur = mToolList.getNextData() )
+ for( tool_list_t::iterator iter = mToolList.begin();
+ iter != mToolList.end(); )
{
- if( cur == mSelectedTool )
+ LLTool* cur = *iter++;
+ if( cur == mSelectedTool && iter != mToolList.end() )
{
- next = mToolList.getNextData();
+ next = *iter;
break;
}
}
- if( !next )
+ if( next )
{
- next = mToolList.getFirstData();
+ mSelectedTool = next;
+ gToolMgr->setCurrentTool( mSelectedTool );
+ }
+ else
+ {
+ selectFirstTool();
}
-
- mSelectedTool = next;
- gToolMgr->setCurrentTool( mSelectedTool );
}
void LLToolset::selectPrevTool()
{
LLTool* prev = NULL;
- for( LLTool* cur = mToolList.getLastData(); cur; cur = mToolList.getPreviousData() )
+ for( tool_list_t::reverse_iterator iter = mToolList.rbegin();
+ iter != mToolList.rend(); )
{
- if( cur == mSelectedTool )
+ LLTool* cur = *iter++;
+ if( cur == mSelectedTool && iter != mToolList.rend() )
{
- prev = mToolList.getPreviousData();
+ prev = *iter;
break;
}
}
- if( !prev )
+ if( prev )
{
- prev = mToolList.getLastData();
+ mSelectedTool = prev;
+ gToolMgr->setCurrentTool( mSelectedTool );
+ }
+ else if (mToolList.size() > 0)
+ {
+ selectToolByIndex((S32)mToolList.size()-1);
}
- mSelectedTool = prev;
- gToolMgr->setCurrentTool( mSelectedTool );
}
void select_tool( void *tool_pointer )
diff --git a/indra/newview/lltoolmgr.h b/indra/newview/lltoolmgr.h
index 557208be7b..c1e144b252 100644
--- a/indra/newview/lltoolmgr.h
+++ b/indra/newview/lltoolmgr.h
@@ -32,7 +32,6 @@
#ifndef LL_TOOLMGR_H
#define LL_TOOLMGR_H
-#include "doublelinkedlist.h"
#include "llkeyboard.h"
class LLTool;
@@ -108,7 +107,8 @@ public:
protected:
LLTool* mSelectedTool;
- LLDoubleLinkedList<LLTool> mToolList;
+ typedef std::vector<LLTool*> tool_list_t;
+ tool_list_t mToolList;
};
// Handy callbacks for switching tools
diff --git a/indra/newview/lltoolmorph.cpp b/indra/newview/lltoolmorph.cpp
index e32f9bfcc1..25d20f96aa 100644
--- a/indra/newview/lltoolmorph.cpp
+++ b/indra/newview/lltoolmorph.cpp
@@ -67,7 +67,7 @@
//LLToolMorph *gToolMorph = NULL;
//static
-LLLinkedList<LLVisualParamHint> LLVisualParamHint::sInstances;
+LLVisualParamHint::instance_list_t LLVisualParamHint::sInstances;
BOOL LLVisualParamReset::sDirty = FALSE;
//-----------------------------------------------------------------------------
@@ -93,7 +93,7 @@ LLVisualParamHint::LLVisualParamHint(
mRect( pos_x, pos_y + height, pos_x + width, pos_y ),
mLastParamWeight(0.f)
{
- LLVisualParamHint::sInstances.addData( this );
+ LLVisualParamHint::sInstances.insert( this );
LLUUID id;
id.set( gViewerArt.getString("avatar_thumb_bkgrnd.tga") );
mBackgroundp = gImageList.getImage(id, FALSE, TRUE);
@@ -108,7 +108,7 @@ LLVisualParamHint::LLVisualParamHint(
//-----------------------------------------------------------------------------
LLVisualParamHint::~LLVisualParamHint()
{
- LLVisualParamHint::sInstances.removeData( this );
+ LLVisualParamHint::sInstances.erase( this );
}
//-----------------------------------------------------------------------------
@@ -119,10 +119,10 @@ LLVisualParamHint::~LLVisualParamHint()
void LLVisualParamHint::requestHintUpdates( LLVisualParamHint* exception1, LLVisualParamHint* exception2 )
{
S32 delay_frames = 0;
- for(LLVisualParamHint* instance = sInstances.getFirstData();
- instance;
- instance = sInstances.getNextData())
+ for (instance_list_t::iterator iter = sInstances.begin();
+ iter != sInstances.end(); ++iter)
{
+ LLVisualParamHint* instance = *iter;
if( (instance != exception1) && (instance != exception2) )
{
if( instance->mAllowsUpdates )
diff --git a/indra/newview/lltoolmorph.h b/indra/newview/lltoolmorph.h
index 72e73b0934..4c3489b35f 100644
--- a/indra/newview/lltoolmorph.h
+++ b/indra/newview/lltoolmorph.h
@@ -35,7 +35,6 @@
#include "lltool.h"
#include "m4math.h"
#include "v2math.h"
-#include "linked_lists.h"
#include "lldynamictexture.h"
#include "llundo.h"
#include "lltextbox.h"
@@ -93,8 +92,9 @@ protected:
F32 mLastParamWeight;
LLPointer<LLViewerImage> mBackgroundp;
-
- static LLLinkedList<LLVisualParamHint> sInstances;
+
+ typedef std::set<LLVisualParamHint*> instance_list_t;
+ static instance_list_t sInstances;
};
// this class resets avatar data at the end of an update cycle
diff --git a/indra/newview/lltoolview.cpp b/indra/newview/lltoolview.cpp
index 93729a5b91..ad7a980091 100644
--- a/indra/newview/lltoolview.cpp
+++ b/indra/newview/lltoolview.cpp
@@ -72,7 +72,8 @@ LLToolView::LLToolView(const std::string& name, const LLRect& rect)
LLToolView::~LLToolView()
{
- mContainList.deleteAllData();
+ for_each(mContainList.begin(), mContainList.end(), DeletePointer());
+ mContainList.clear();
}
//*TODO:translate?
@@ -118,7 +119,7 @@ void LLToolView::addTool(const LLString& icon_off, const LLString& icon_on, LLPa
addChild(contain->mPanel);
}
- mContainList.addData(contain);
+ mContainList.push_back(contain);
}
@@ -153,11 +154,10 @@ void LLToolView::draw()
// turn off highlighting for all containers
// and hide all option panels except for the selected one.
LLTool* selected = gToolMgr->getCurrentToolset()->getSelectedTool();
- for( LLToolContainer* contain = mContainList.getFirstData();
- contain != NULL;
- contain = mContainList.getNextData()
- )
+ for (contain_list_t::iterator iter = mContainList.begin();
+ iter != mContainList.end(); ++iter)
{
+ LLToolContainer* contain = *iter;
BOOL state = (contain->mTool == selected);
contain->mButton->setToggleState( state );
if (contain->mPanel)
@@ -175,8 +175,10 @@ LLToolContainer* LLToolView::findToolContainer( LLTool *tool )
{
// Find the container for this tool
llassert( tool );
- for( LLToolContainer* contain = mContainList.getFirstData(); contain; contain = mContainList.getNextData() )
+ for (contain_list_t::iterator iter = mContainList.begin();
+ iter != mContainList.end(); ++iter)
{
+ LLToolContainer* contain = *iter;
if( contain->mTool == tool )
{
return contain;
diff --git a/indra/newview/lltoolview.h b/indra/newview/lltoolview.h
index bde0010466..23f4263602 100644
--- a/indra/newview/lltoolview.h
+++ b/indra/newview/lltoolview.h
@@ -33,7 +33,6 @@
#define LL_LLTOOLVIEW_H
// requires stdtypes.h
-#include "linked_lists.h"
#include "llpanel.h"
// forward declares
@@ -84,8 +83,8 @@ private:
private:
- LLLinkedList
- <LLToolContainer> mContainList;
+ typedef std::vector<LLToolContainer*> contain_list_t;
+ contain_list_t mContainList;
S32 mButtonCount; // used to compute rectangles
};
diff --git a/indra/newview/lluploaddialog.cpp b/indra/newview/lluploaddialog.cpp
index b9f2ef2ddf..ac41e02744 100644
--- a/indra/newview/lluploaddialog.cpp
+++ b/indra/newview/lluploaddialog.cpp
@@ -100,7 +100,7 @@ void LLUploadDialog::setMessage( const std::string& msg)
// Split message into lines, separated by '\n'
S32 max_msg_width = 0;
- LLDoubleLinkedList<LLString> msg_lines;
+ std::list<std::string> msg_lines;
S32 size = msg.size() + 1;// + strlen("Uploading...\n\n");
char* temp_msg = new char[size];
@@ -118,7 +118,7 @@ void LLUploadDialog::setMessage( const std::string& msg)
{
S32 cur_width = S32(font->getWidth(token) + 0.99f) + TEXT_PAD;
max_msg_width = llmax( max_msg_width, cur_width );
- msg_lines.addDataAtEnd( new LLString( token ) );
+ msg_lines.push_back( std::string( token ) );
token = strtok( NULL, "\n" );
}
delete[] temp_msg;
@@ -126,7 +126,7 @@ void LLUploadDialog::setMessage( const std::string& msg)
S32 line_height = S32( font->getLineHeight() + 0.99f );
S32 dialog_width = max_msg_width + 2 * HPAD;
- S32 dialog_height = line_height * msg_lines.getLength() + 2 * VPAD;
+ S32 dialog_height = line_height * msg_lines.size() + 2 * VPAD;
reshape( dialog_width, dialog_height, FALSE );
@@ -139,18 +139,19 @@ void LLUploadDialog::setMessage( const std::string& msg)
mLabelBox[line_num]->setVisible(FALSE);
}
line_num = 0;
- for( LLString* cur_line = msg_lines.getFirstData(); cur_line; cur_line = msg_lines.getNextData() )
+ for (std::list<std::string>::iterator iter = msg_lines.begin();
+ iter != msg_lines.end(); ++iter)
{
+ std::string& cur_line = *iter;
LLRect msg_rect;
msg_rect.setOriginAndSize( msg_x, msg_y, max_msg_width, line_height );
mLabelBox[line_num]->setRect(msg_rect);
- mLabelBox[line_num]->setText(*cur_line);
+ mLabelBox[line_num]->setText(cur_line);
mLabelBox[line_num]->setColor( gColors.getColor( "LabelTextColor" ) );
mLabelBox[line_num]->setVisible(TRUE);
msg_y -= line_height;
++line_num;
}
- msg_lines.deleteAllData();
centerWithin(gViewerWindow->getRootView()->getRect());
}
diff --git a/indra/newview/llurlhistory.cpp b/indra/newview/llurlhistory.cpp
index 8f9c926616..d5241a4e98 100644
--- a/indra/newview/llurlhistory.cpp
+++ b/indra/newview/llurlhistory.cpp
@@ -62,6 +62,7 @@ bool LLURLHistory::loadFile(const LLString& filename)
llinfos << "file missing, ill-formed, "
"or simply undefined; not changing the"
" file" << llendl;
+ sHistorySD = LLSD();
return false;
}
}
@@ -100,8 +101,11 @@ LLSD LLURLHistory::getURLHistory(const std::string& collection)
// static
void LLURLHistory::addURL(const std::string& collection, const std::string& url)
{
- sHistorySD[collection].insert(0, url);
- LLURLHistory::limitSize(collection);
+ if(! url.empty())
+ {
+ sHistorySD[collection].insert(0, url);
+ LLURLHistory::limitSize(collection);
+ }
}
// static
void LLURLHistory::removeURL(const std::string& collection, const std::string& url)
diff --git a/indra/newview/llviewermessage.cpp b/indra/newview/llviewermessage.cpp
index 16cbb3272f..5200c321db 100644
--- a/indra/newview/llviewermessage.cpp
+++ b/indra/newview/llviewermessage.cpp
@@ -4121,7 +4121,7 @@ void process_alert_core(const std::string& message, BOOL modal)
}
}
-LLLinkedList<LLMeanCollisionData> gMeanCollisionList;
+mean_collision_list_t gMeanCollisionList;
time_t gLastDisplayedTime = 0;
void handle_show_mean_events(void *)
@@ -4141,15 +4141,19 @@ void mean_name_callback(const LLUUID &id, const char *first, const char *last, B
return;
}
- while(gMeanCollisionList.getLength() > 20)
+ static const int max_collision_list_size = 20;
+ if (gMeanCollisionList.size() > max_collision_list_size)
{
- gMeanCollisionList.getLastData();
- gMeanCollisionList.deleteCurrentData();
+ mean_collision_list_t::iterator iter = gMeanCollisionList.begin();
+ for (S32 i=0; i<max_collision_list_size; i++) iter++;
+ for_each(iter, gMeanCollisionList.end(), DeletePointer());
+ gMeanCollisionList.erase(iter, gMeanCollisionList.end());
}
- LLMeanCollisionData *mcd;
- for (mcd = gMeanCollisionList.getFirstData(); mcd; mcd = gMeanCollisionList.getNextData())
+ for (mean_collision_list_t::iterator iter = gMeanCollisionList.begin();
+ iter != gMeanCollisionList.end(); ++iter)
{
+ LLMeanCollisionData *mcd = *iter;
if (mcd->mPerp == id)
{
strncpy(mcd->mFirstName, first, DB_FIRST_NAME_BUF_SIZE -1); /* Flawfinder: ignore */
@@ -4190,12 +4194,12 @@ void process_mean_collision_alert_message(LLMessageSystem *msgsystem, void **use
type = (EMeanCollisionType)u8type;
- LLMeanCollisionData *mcd;
-
BOOL b_found = FALSE;
- for (mcd = gMeanCollisionList.getFirstData(); mcd; mcd = gMeanCollisionList.getNextData())
+ for (mean_collision_list_t::iterator iter = gMeanCollisionList.begin();
+ iter != gMeanCollisionList.end(); ++iter)
{
+ LLMeanCollisionData *mcd = *iter;
if ((mcd->mPerp == perp) && (mcd->mType == type))
{
mcd->mTime = time;
@@ -4208,7 +4212,7 @@ void process_mean_collision_alert_message(LLMessageSystem *msgsystem, void **use
if (!b_found)
{
LLMeanCollisionData *mcd = new LLMeanCollisionData(gAgentID, perp, time, type, mag);
- gMeanCollisionList.addData(mcd);
+ gMeanCollisionList.push_front(mcd);
const BOOL is_group = FALSE;
gCacheName->get(perp, is_group, mean_name_callback);
}
diff --git a/indra/newview/llviewermessage.h b/indra/newview/llviewermessage.h
index f7739f0871..23783058a0 100644
--- a/indra/newview/llviewermessage.h
+++ b/indra/newview/llviewermessage.h
@@ -111,6 +111,9 @@ void process_agent_alert_message(LLMessageSystem* msgsystem, void** user_data);
void process_alert_core(const std::string& message, BOOL modal);
// "Mean" or player-vs-player abuse
+typedef std::list<LLMeanCollisionData*> mean_collision_list_t;
+extern mean_collision_list_t gMeanCollisionList;
+
void handle_show_mean_events(void *);
void process_mean_collision_alert_message(LLMessageSystem* msg, void**);
diff --git a/indra/newview/llviewerobject.cpp b/indra/newview/llviewerobject.cpp
index 602b60bc9d..e89722fde8 100644
--- a/indra/newview/llviewerobject.cpp
+++ b/indra/newview/llviewerobject.cpp
@@ -2292,7 +2292,7 @@ void LLViewerObject::dirtyInventory()
// If there aren't any LLVOInventoryListeners, we won't be
// able to update our mInventory when it comes back from the
// simulator, so we should not clear the inventory either.
- if(mInventory && !mInventoryCallbacks.isEmpty())
+ if(mInventory && !mInventoryCallbacks.empty())
{
mInventory->clear(); // will deref and delete entries
delete mInventory;
@@ -2308,20 +2308,22 @@ void LLViewerObject::registerInventoryListener(LLVOInventoryListener* listener,
LLInventoryCallbackInfo* info = new LLInventoryCallbackInfo;
info->mListener = listener;
info->mInventoryData = user_data;
- mInventoryCallbacks.addData(info);
+ mInventoryCallbacks.push_front(info);
}
void LLViewerObject::removeInventoryListener(LLVOInventoryListener* listener)
{
- if (listener == NULL) return;
- LLInventoryCallbackInfo* info;
- for (info = mInventoryCallbacks.getFirstData();
- info;
- info = mInventoryCallbacks.getNextData() )
+ if (listener == NULL)
+ return;
+ for (callback_list_t::iterator iter = mInventoryCallbacks.begin();
+ iter != mInventoryCallbacks.end(); )
{
+ callback_list_t::iterator curiter = iter++;
+ LLInventoryCallbackInfo* info = *curiter;
if (info->mListener == listener)
{
- mInventoryCallbacks.deleteCurrentData();
+ delete info;
+ mInventoryCallbacks.erase(curiter);
break;
}
}
@@ -2329,7 +2331,8 @@ void LLViewerObject::removeInventoryListener(LLVOInventoryListener* listener)
void LLViewerObject::clearInventoryListeners()
{
- mInventoryCallbacks.deleteAllData();
+ for_each(mInventoryCallbacks.begin(), mInventoryCallbacks.end(), DeletePointer());
+ mInventoryCallbacks.clear();
}
void LLViewerObject::requestInventory()
@@ -2518,10 +2521,11 @@ void LLViewerObject::loadTaskInvFile(const char* filename)
void LLViewerObject::doInventoryCallback()
{
- for(LLInventoryCallbackInfo* info = mInventoryCallbacks.getFirstData();
- info != NULL;
- info = mInventoryCallbacks.getNextData())
+ for (callback_list_t::iterator iter = mInventoryCallbacks.begin();
+ iter != mInventoryCallbacks.end(); )
{
+ callback_list_t::iterator curiter = iter++;
+ LLInventoryCallbackInfo* info = *curiter;
if (info->mListener != NULL)
{
info->mListener->inventoryChanged(this,
@@ -2532,7 +2536,8 @@ void LLViewerObject::doInventoryCallback()
else
{
llinfos << "LLViewerObject::doInventoryCallback() deleting bad listener entry." << llendl;
- mInventoryCallbacks.deleteCurrentData();
+ delete info;
+ mInventoryCallbacks.erase(curiter);
}
}
mInventoryPending = FALSE;
diff --git a/indra/newview/llviewerobject.h b/indra/newview/llviewerobject.h
index c11c3c891e..38744c35cf 100644
--- a/indra/newview/llviewerobject.h
+++ b/indra/newview/llviewerobject.h
@@ -34,7 +34,6 @@
#include <map>
-#include "linked_lists.h"
#include "llassetstorage.h"
#include "lldarrayptr.h"
#include "llhudtext.h"
@@ -591,7 +590,8 @@ protected:
LLVOInventoryListener* mListener;
void* mInventoryData;
};
- LLLinkedList<LLInventoryCallbackInfo> mInventoryCallbacks;
+ typedef std::list<LLInventoryCallbackInfo*> callback_list_t;
+ callback_list_t mInventoryCallbacks;
S16 mInventorySerialNum;
LLViewerRegion *mRegionp; // Region that this object belongs to.
diff --git a/indra/newview/llviewerobjectlist.h b/indra/newview/llviewerobjectlist.h
index 95c65d15ce..39603cfd3b 100644
--- a/indra/newview/llviewerobjectlist.h
+++ b/indra/newview/llviewerobjectlist.h
@@ -36,10 +36,8 @@
#include <set>
// common includes
-#include "doublelinkedlist.h"
#include "llstat.h"
#include "lldarrayptr.h"
-#include "llskipmap.h"
#include "llstring.h"
// project includes
diff --git a/indra/newview/llviewerpartsim.h b/indra/newview/llviewerpartsim.h
index 51b8e5a42a..343425f3d4 100644
--- a/indra/newview/llviewerpartsim.h
+++ b/indra/newview/llviewerpartsim.h
@@ -33,7 +33,6 @@
#define LL_LLVIEWERPARTSIM_H
#include "lldarrayptr.h"
-#include "llskiplist.h"
#include "llframetimer.h"
#include "llmemory.h"
diff --git a/indra/newview/llviewerprecompiledheaders.h b/indra/newview/llviewerprecompiledheaders.h
index 0e0265d30b..ce0fe2c836 100644
--- a/indra/newview/llviewerprecompiledheaders.h
+++ b/indra/newview/llviewerprecompiledheaders.h
@@ -68,21 +68,17 @@
// Library headers from llcommon project:
#include "bitpack.h"
-#include "doublelinkedlist.h"
#include "imageids.h"
#include "indra_constants.h"
//#include "linden_common.h"
//#include "llpreprocessor.h"
-#include "linked_lists.h"
#include "llapp.h"
#include "llapr.h"
-#include "llassoclist.h"
#include "llcriticaldamp.h"
#include "lldarray.h"
#include "lldarrayptr.h"
#include "lldefs.h"
#include "lldepthstack.h"
-#include "lldlinked.h"
#include "lldqueueptr.h"
#include "llendianswizzle.h"
#include "llerror.h"
@@ -90,18 +86,13 @@
#include "llfixedbuffer.h"
#include "llframetimer.h"
#include "llhash.h"
-#include "lllinkedqueue.h"
#include "lllocalidhashmap.h"
#include "llmap.h"
#include "llmemory.h"
#include "llnametable.h"
#include "llpriqueuemap.h"
#include "llprocessor.h"
-#include "llptrskiplist.h"
-#include "llptrskipmap.h"
//#include "llsecondlifeurls.h"
-#include "llskiplist.h"
-#include "llskipmap.h"
#include "llstack.h"
#include "llstat.h"
#include "llstl.h"
@@ -170,7 +161,6 @@
// Library includes from llmessage project
//#include "llassetstorage.h"
#include "llcachename.h"
-#include "llcallbacklisth.h"
#include "llcircuit.h"
#include "lldatapacker.h"
#include "lldbstrings.h"
diff --git a/indra/newview/llviewerregion.cpp b/indra/newview/llviewerregion.cpp
index 42654e250b..88271aa7f6 100644
--- a/indra/newview/llviewerregion.cpp
+++ b/indra/newview/llviewerregion.cpp
@@ -98,7 +98,6 @@ LLViewerRegion::LLViewerRegion(const U64 &handle,
mBillableFactor(1.0),
mMaxTasks(MAX_TASKS_PER_REGION),
mCacheLoaded(FALSE),
- mCacheMap(),
mCacheEntriesCount(0),
mCacheID(),
mEventPoll(NULL)
@@ -343,7 +342,7 @@ void LLViewerRegion::saveCache()
entry->writeToFile(fp);
}
- mCacheMap.removeAllData();
+ mCacheMap.clear();
mCacheEnd.unlink();
mCacheEnd.init();
mCacheStart.deleteAll();
@@ -1013,7 +1012,7 @@ void LLViewerRegion::cacheFullUpdate(LLViewerObject* objectp, LLDataPackerBinary
U32 local_id = objectp->getLocalID();
U32 crc = objectp->getCRC();
- LLVOCacheEntry *entry = mCacheMap.getIfThere(local_id);
+ LLVOCacheEntry* entry = get_if_there(mCacheMap, local_id, (LLVOCacheEntry*)NULL);
if (entry)
{
@@ -1026,7 +1025,7 @@ void LLViewerRegion::cacheFullUpdate(LLViewerObject* objectp, LLDataPackerBinary
else
{
// Update the cache entry
- mCacheMap.removeData(local_id);
+ mCacheMap.erase(local_id);
delete entry;
entry = new LLVOCacheEntry(local_id, crc, dp);
mCacheEnd.insert(*entry);
@@ -1041,7 +1040,7 @@ void LLViewerRegion::cacheFullUpdate(LLViewerObject* objectp, LLDataPackerBinary
if (mCacheEntriesCount > MAX_OBJECT_CACHE_ENTRIES)
{
entry = mCacheStart.getNext();
- mCacheMap.removeData(entry->getLocalID());
+ mCacheMap.erase(entry->getLocalID());
delete entry;
mCacheEntriesCount--;
}
@@ -1060,7 +1059,7 @@ LLDataPacker *LLViewerRegion::getDP(U32 local_id, U32 crc)
{
llassert(mCacheLoaded);
- LLVOCacheEntry *entry = mCacheMap.getIfThere(local_id);
+ LLVOCacheEntry* entry = get_if_there(mCacheMap, local_id, (LLVOCacheEntry*)NULL);
if (entry)
{
diff --git a/indra/newview/llviewerregion.h b/indra/newview/llviewerregion.h
index 3d5334cd18..6625e3bdf6 100644
--- a/indra/newview/llviewerregion.h
+++ b/indra/newview/llviewerregion.h
@@ -44,7 +44,6 @@
#include "llhost.h"
#include "llstring.h"
#include "llregionflags.h"
-#include "llptrskipmap.h"
#include "lluuid.h"
#include "lldatapacker.h"
#include "llvocache.h"
@@ -352,7 +351,8 @@ protected:
// Regions can have order 10,000 objects, so assume
// a structure of size 2^14 = 16,000
BOOL mCacheLoaded;
- LLPtrSkipMap<U32, LLVOCacheEntry *, 14> mCacheMap;
+ typedef std::map<U32, LLVOCacheEntry *> cache_map_t;
+ cache_map_t mCacheMap;
LLVOCacheEntry mCacheStart;
LLVOCacheEntry mCacheEnd;
U32 mCacheEntriesCount;
diff --git a/indra/newview/llviewerwindow.cpp b/indra/newview/llviewerwindow.cpp
index d1e67bfbbd..dcceb397d3 100644
--- a/indra/newview/llviewerwindow.cpp
+++ b/indra/newview/llviewerwindow.cpp
@@ -57,7 +57,6 @@
// linden library includes
#include "audioengine.h" // mute on minimize
#include "indra_constants.h"
-#include "linked_lists.h"
#include "llassetstorage.h"
#include "llfontgl.h"
#include "llrect.h"
@@ -1812,18 +1811,23 @@ void adjust_rect_bottom_center(const LLString& control, const LLRect& window)
}
}
-
-void update_saved_window_size(const LLString& control,S32 delta_width, S32 delta_height)
+void adjust_rect_centered_partial_zoom(const LLString& control,
+ const LLRect& window)
{
- if (delta_width || delta_height )
- {
- LLRect mXMLRect = gSavedSettings.getRect(control);
- //hard code it all follows the right and top
- mXMLRect.mRight += delta_width;
- mXMLRect.mTop += delta_height;
- mXMLRect.mLeft = llmax (0, mXMLRect.mLeft+delta_width);
- mXMLRect.mBottom = llmax(0,mXMLRect.mBottom+delta_height);
- gSavedSettings.setRect(control,mXMLRect);
+ LLRect rect = gSavedSettings.getRect(control);
+ // Only adjust on first use
+ if (rect.mLeft == 0 && rect.mBottom == 0)
+ {
+ S32 width = window.getWidth();
+ S32 height = window.getHeight();
+ rect.set(0, height-STATUS_BAR_HEIGHT, width, TOOL_BAR_HEIGHT);
+ // Make floater fill 80% of window, leaving 20% padding on
+ // the sides.
+ const F32 ZOOM_FRACTION = 0.8f;
+ S32 dx = (S32)(width * (1.f - ZOOM_FRACTION));
+ S32 dy = (S32)(height * (1.f - ZOOM_FRACTION));
+ rect.stretch(-dx/2, -dy/2);
+ gSavedSettings.setRect(control, rect);
}
}
@@ -1848,7 +1852,7 @@ void LLViewerWindow::adjustRectanglesForFirstUse(const LLRect& window)
adjust_rect_top_left("FloaterGestureRect2", window);
- adjust_rect_top_right("FloaterMapRect", window);
+ adjust_rect_top_right("FloaterMiniMapRect", window);
adjust_rect_top_right("FloaterLagMeter", window);
@@ -1917,17 +1921,8 @@ void LLViewerWindow::initWorldUI()
LLWorldMapView::initClass();
- LLRect world_map_rect = gSavedSettings.getRect("FloaterWorldMapRect");
- // if 0,0,0,0 then use fullscreen
- if (world_map_rect.mTop == 0
- && world_map_rect.mLeft == 0
- && world_map_rect.mRight == 0
- && world_map_rect.mBottom == 0)
- {
- world_map_rect.set(0, height-TOOL_BAR_HEIGHT, width, STATUS_BAR_HEIGHT);
- world_map_rect.stretch(-4);
- gSavedSettings.setRect("FloaterWorldMapRect", world_map_rect);
- }
+ adjust_rect_centered_partial_zoom("FloaterWorldMapRect2", full_window);
+
gFloaterWorldMap = new LLFloaterWorldMap();
gFloaterWorldMap->setVisible(FALSE);
@@ -2121,9 +2116,6 @@ void LLViewerWindow::reshape(S32 width, S32 height)
}
}
- // changes in window's width and hight
- S32 delta_width = width - mWindowRect.getWidth();
- S32 delta_height = height - mWindowRect.getHeight();
// update our window rectangle
mWindowRect.mRight = mWindowRect.mLeft + width;
mWindowRect.mTop = mWindowRect.mBottom + height;
@@ -2174,12 +2166,6 @@ void LLViewerWindow::reshape(S32 width, S32 height)
{
gSavedSettings.setS32("WindowWidth", window_size.mX);
gSavedSettings.setS32("WindowHeight", window_size.mY);
- if (!gFloaterMap)
- {
- update_saved_window_size("FloaterWorldMapRect",delta_width, delta_height);
- update_saved_window_size("FloaterMapRect",delta_width, delta_height);
- }
-
}
}
diff --git a/indra/newview/llviewerwindow.h b/indra/newview/llviewerwindow.h
index f62c25df91..09ad3fc270 100644
--- a/indra/newview/llviewerwindow.h
+++ b/indra/newview/llviewerwindow.h
@@ -41,7 +41,6 @@
#ifndef LL_LLVIEWERWINDOW_H
#define LL_LLVIEWERWINDOW_H
-#include "linked_lists.h"
#include "v3dmath.h"
#include "v2math.h"
#include "llwindow.h"
diff --git a/indra/newview/llvovolume.cpp b/indra/newview/llvovolume.cpp
index 5521b7f5f7..58f94120d0 100644
--- a/indra/newview/llvovolume.cpp
+++ b/indra/newview/llvovolume.cpp
@@ -746,13 +746,16 @@ void LLVOVolume::sculpt()
return;
LLPointer<LLImageRaw> raw_image = new LLImageRaw();
- mSculptTexture->readBackRaw(discard_level, raw_image, TRUE);
+ mSculptTexture->readBackRaw(discard_level, raw_image, FALSE);
sculpt_height = raw_image->getHeight();
sculpt_width = raw_image->getWidth();
sculpt_components = raw_image->getComponents();
sculpt_data = raw_image->getData();
+
+ llassert_always(raw_image->getDataSize() >= sculpt_height * sculpt_width * sculpt_components);
+
getVolume()->sculpt(sculpt_width, sculpt_height, sculpt_components, sculpt_data, discard_level);
}
}
diff --git a/indra/newview/llwearable.cpp b/indra/newview/llwearable.cpp
index b4e79109ac..b63543a327 100644
--- a/indra/newview/llwearable.cpp
+++ b/indra/newview/llwearable.cpp
@@ -132,8 +132,6 @@ LLWearable::LLWearable(const LLAssetID& asset_id) :
LLWearable::~LLWearable()
{
- mVisualParamMap.deleteAllData();
- mTEMap.deleteAllData();
}
@@ -227,35 +225,37 @@ BOOL LLWearable::exportFile( FILE* file )
}
// parameters
- S32 num_parameters = mVisualParamMap.getLength();
+ S32 num_parameters = mVisualParamMap.size();
if( fprintf( file, "parameters %d\n", num_parameters ) < 0 )
{
return FALSE;
}
char s[ MAX_STRING ]; /* Flawfinder: ignore */
- for( F32* param_weightp = mVisualParamMap.getFirstData(); param_weightp; param_weightp = mVisualParamMap.getNextData() )
+ for (param_map_t::iterator iter = mVisualParamMap.begin();
+ iter != mVisualParamMap.end(); ++iter)
{
- S32 param_id = mVisualParamMap.getCurrentKeyWithoutIncrement();
- if( fprintf( file, "%d %s\n", param_id, terse_F32_to_string( *param_weightp, s ) ) < 0 )
+ S32 param_id = iter->first;
+ F32 param_weight = iter->second;
+ if( fprintf( file, "%d %s\n", param_id, terse_F32_to_string( param_weight, s ) ) < 0 )
{
return FALSE;
}
}
// texture entries
- S32 num_textures = mTEMap.getLength();
+ S32 num_textures = mTEMap.size();
if( fprintf( file, "textures %d\n", num_textures ) < 0 )
{
return FALSE;
}
- for( LLUUID* image_id = mTEMap.getFirstData(); image_id; image_id = mTEMap.getNextData() )
+ for (te_map_t::iterator iter = mTEMap.begin();
+ iter != mTEMap.end(); ++iter)
{
- S32 te = mTEMap.getCurrentKeyWithoutIncrement();
- char image_id_string[UUID_STR_LENGTH]; /* Flawfinder: ignore */
- image_id->toString( image_id_string );
- if( fprintf( file, "%d %s\n", te, image_id_string) < 0 )
+ S32 te = iter->first;
+ LLUUID& image_id = iter->second;
+ if( fprintf( file, "%d %s\n", te, image_id.asString().c_str()) < 0 )
{
return FALSE;
}
@@ -418,7 +418,7 @@ BOOL LLWearable::importFile( FILE* file )
llwarns << "Bad Wearable asset: bad parameter, #" << i << llendl;
return FALSE;
}
- mVisualParamMap.addData( param_id, new F32(param_weight) );
+ mVisualParamMap[param_id] = param_weight;
}
// textures header
@@ -450,7 +450,7 @@ BOOL LLWearable::importFile( FILE* file )
return FALSE;
}
- mTEMap.addData( te, new LLUUID( text_buffer ) );
+ mTEMap[te] = LLUUID(text_buffer );
}
return TRUE;
@@ -488,13 +488,13 @@ BOOL LLWearable::isOldVersion()
if( (param->getWearableType() == mType) && (param->getGroup() == VISUAL_PARAM_GROUP_TWEAKABLE ) )
{
param_count++;
- if( !mVisualParamMap.checkKey( param->getID() ) )
+ if( !is_in_map(mVisualParamMap, param->getID() ) )
{
return TRUE;
}
}
}
- if( param_count != mVisualParamMap.getLength() )
+ if( param_count != mVisualParamMap.size() )
{
return TRUE;
}
@@ -506,13 +506,13 @@ BOOL LLWearable::isOldVersion()
if( LLVOAvatar::getTEWearableType( te ) == mType )
{
te_count++;
- if( !mTEMap.checkKey( te ) )
+ if( !is_in_map(mTEMap, te ) )
{
return TRUE;
}
}
}
- if( te_count != mTEMap.getLength() )
+ if( te_count != mTEMap.size() )
{
return TRUE;
}
@@ -543,16 +543,8 @@ BOOL LLWearable::isDirty()
{
if( (param->getWearableType() == mType) && (param->getGroup() == VISUAL_PARAM_GROUP_TWEAKABLE ) )
{
- F32* weightp = mVisualParamMap.getIfThere( param->getID() );
- F32 weight;
- if( weightp )
- {
- weight = llclamp( *weightp, param->getMinWeight(), param->getMaxWeight() );
- }
- else
- {
- weight = param->getDefaultWeight();
- }
+ F32 weight = get_if_there(mVisualParamMap, param->getID(), param->getDefaultWeight());
+ weight = llclamp( weight, param->getMinWeight(), param->getMaxWeight() );
U8 a = F32_to_U8( param->getWeight(), param->getMinWeight(), param->getMaxWeight() );
U8 b = F32_to_U8( weight, param->getMinWeight(), param->getMaxWeight() );
@@ -573,8 +565,7 @@ BOOL LLWearable::isDirty()
llassert( 0 );
continue;
}
- LLUUID* mapped_image_id = mTEMap.getIfThere( te );
- const LLUUID& image_id = mapped_image_id ? *mapped_image_id : LLVOAvatar::getDefaultTEImageID( te );
+ const LLUUID& image_id = get_if_there(mTEMap, te, LLVOAvatar::getDefaultTEImageID( te ) );
if( avatar_image->getID() != image_id )
{
return TRUE;
@@ -603,24 +594,24 @@ void LLWearable::setParamsToDefaults()
return;
}
- mVisualParamMap.deleteAllData();
+ mVisualParamMap.clear();
for( LLVisualParam* param = avatar->getFirstVisualParam(); param; param = avatar->getNextVisualParam() )
{
if( (((LLViewerVisualParam*)param)->getWearableType() == mType ) && (param->getGroup() == VISUAL_PARAM_GROUP_TWEAKABLE ) )
{
- mVisualParamMap.addData( param->getID(), new F32( param->getDefaultWeight() ) );
+ mVisualParamMap[param->getID()] = param->getDefaultWeight();
}
}
}
void LLWearable::setTexturesToDefaults()
{
- mTEMap.deleteAllData();
+ mTEMap.clear();
for( S32 te = 0; te < LLVOAvatar::TEX_NUM_ENTRIES; te++ )
{
if( LLVOAvatar::getTEWearableType( te ) == mType )
{
- mTEMap.addData( te, new LLUUID( LLVOAvatar::getDefaultTEImageID( te ) ) );
+ mTEMap[te] = LLVOAvatar::getDefaultTEImageID( te );
}
}
}
@@ -643,30 +634,15 @@ void LLWearable::writeToAvatar( BOOL set_by_user )
if( (((LLViewerVisualParam*)param)->getWearableType() == mType) && (param->getGroup() == VISUAL_PARAM_GROUP_TWEAKABLE ) )
{
S32 param_id = param->getID();
- F32* weight = mVisualParamMap.getIfThere( param_id );
- if( weight )
+ F32 weight = get_if_there(mVisualParamMap, param_id, param->getDefaultWeight());
+ // only animate with user-originated changes
+ if (set_by_user)
{
- // only animate with user-originated changes
- if (set_by_user)
- {
- param->setAnimationTarget(*weight, set_by_user);
- }
- else
- {
- avatar->setVisualParamWeight( param_id, *weight, set_by_user );
- }
+ param->setAnimationTarget(weight, set_by_user);
}
else
{
- // only animate with user-originated changes
- if (set_by_user)
- {
- param->setAnimationTarget(param->getDefaultWeight(), set_by_user);
- }
- else
- {
- avatar->setVisualParamWeight( param_id, param->getDefaultWeight(), set_by_user );
- }
+ avatar->setVisualParamWeight( param_id, weight, set_by_user );
}
}
}
@@ -682,8 +658,7 @@ void LLWearable::writeToAvatar( BOOL set_by_user )
{
if( LLVOAvatar::getTEWearableType( te ) == mType )
{
- LLUUID* mapped_image_id = mTEMap.getIfThere( te );
- const LLUUID& image_id = mapped_image_id ? *mapped_image_id : LLVOAvatar::getDefaultTEImageID( te );
+ const LLUUID& image_id = get_if_there(mTEMap, te, LLVOAvatar::getDefaultTEImageID( te ) );
LLViewerImage* image = gImageList.getImage( image_id );
avatar->setLocTexTE( te, image, set_by_user );
}
@@ -792,16 +767,16 @@ void LLWearable::readFromAvatar()
mDefinitionVersion = LLWearable::sCurrentDefinitionVersion;
- mVisualParamMap.deleteAllData();
+ mVisualParamMap.clear();
for( LLVisualParam* param = avatar->getFirstVisualParam(); param; param = avatar->getNextVisualParam() )
{
if( (((LLViewerVisualParam*)param)->getWearableType() == mType) && (param->getGroup() == VISUAL_PARAM_GROUP_TWEAKABLE ) )
{
- mVisualParamMap.addData( param->getID(), new F32( param->getWeight() ) );
+ mVisualParamMap[param->getID()] = param->getWeight();
}
}
- mTEMap.deleteAllData();
+ mTEMap.clear();
for( S32 te = 0; te < LLVOAvatar::TEX_NUM_ENTRIES; te++ )
{
if( LLVOAvatar::getTEWearableType( te ) == mType )
@@ -809,7 +784,7 @@ void LLWearable::readFromAvatar()
LLViewerImage* image = avatar->getTEImage( te );
if( image )
{
- mTEMap.addData( te, new LLUUID( image->getID() ) );
+ mTEMap[te] = image->getID();
}
}
}
@@ -847,9 +822,8 @@ void LLWearable::copyDataFrom( LLWearable* src )
if( (param->getWearableType() == mType) && (param->getGroup() == VISUAL_PARAM_GROUP_TWEAKABLE ) )
{
S32 id = param->getID();
- F32* weightp = src->mVisualParamMap.getIfThere( id );
- F32 weight = weightp ? *weightp : param->getDefaultWeight();
- mVisualParamMap.addData( id, new F32( weight ) );
+ F32 weight = get_if_there(src->mVisualParamMap, id, param->getDefaultWeight() );
+ mVisualParamMap[id] = weight;
}
}
@@ -858,9 +832,8 @@ void LLWearable::copyDataFrom( LLWearable* src )
{
if( LLVOAvatar::getTEWearableType( te ) == mType )
{
- LLUUID* mapped_image_id = src->mTEMap.getIfThere( te );
- const LLUUID& image_id = mapped_image_id ? *mapped_image_id : LLVOAvatar::getDefaultTEImageID( te );
- mTEMap.addData( te, new LLUUID( image_id ) );
+ const LLUUID& image_id = get_if_there(src->mTEMap, te, LLVOAvatar::getDefaultTEImageID( te ) );
+ mTEMap[te] = image_id;
}
}
}
@@ -985,21 +958,21 @@ void LLWearable::dump()
//mSaleInfo
llinfos << " Params:" << llendl;
- for( F32* param_weightp = mVisualParamMap.getFirstData();
- param_weightp;
- param_weightp = mVisualParamMap.getNextData() )
+ for (param_map_t::iterator iter = mVisualParamMap.begin();
+ iter != mVisualParamMap.end(); ++iter)
{
- S32 param_id = mVisualParamMap.getCurrentKeyWithoutIncrement();
- llinfos << " " << param_id << " " << *param_weightp << llendl;
+ S32 param_id = iter->first;
+ F32 param_weight = iter->second;
+ llinfos << " " << param_id << " " << param_weight << llendl;
}
llinfos << " Textures:" << llendl;
- for( LLUUID* image_id = mTEMap.getFirstData();
- image_id;
- image_id = mTEMap.getNextData() )
+ for (te_map_t::iterator iter = mTEMap.begin();
+ iter != mTEMap.end(); ++iter)
{
- S32 te = mTEMap.getCurrentKeyWithoutIncrement();
- llinfos << " " << te << " " << *image_id << llendl;
+ S32 te = iter->first;
+ LLUUID& image_id = iter->second;
+ llinfos << " " << te << " " << image_id << llendl;
}
}
diff --git a/indra/newview/llwearable.h b/indra/newview/llwearable.h
index cd02843ccf..1b0fb3d7aa 100644
--- a/indra/newview/llwearable.h
+++ b/indra/newview/llwearable.h
@@ -33,7 +33,6 @@
#define LL_LLWEARABLE_H
#include "lluuid.h"
-#include "llptrskipmap.h"
#include "llstring.h"
#include "llpermissions.h"
#include "llsaleinfo.h"
@@ -132,8 +131,10 @@ private:
LLTransactionID mTransactionID;
EWearableType mType;
- LLPtrSkipMap<S32, F32*> mVisualParamMap; // maps visual param id to weight
- LLPtrSkipMap<S32, LLUUID*> mTEMap; // maps TE to Image ID
+ typedef std::map<S32, F32> param_map_t;
+ param_map_t mVisualParamMap; // maps visual param id to weight
+ typedef std::map<S32, LLUUID> te_map_t;
+ te_map_t mTEMap; // maps TE to Image ID
static const char* sTypeName[ WT_COUNT ];
static const char* sTypeLabel[ WT_COUNT ];
diff --git a/indra/newview/llwearablelist.cpp b/indra/newview/llwearablelist.cpp
index 39a6046f59..c94ee7c54e 100644
--- a/indra/newview/llwearablelist.cpp
+++ b/indra/newview/llwearablelist.cpp
@@ -73,13 +73,14 @@ struct LLWearableArrivedData
LLWearableList::~LLWearableList()
{
- mList.deleteAllData();
+ for_each(mList.begin(), mList.end(), DeletePairedPointer());
+ mList.clear();
}
void LLWearableList::getAsset( const LLAssetID& assetID, const LLString& wearable_name, LLAssetType::EType asset_type, void(*asset_arrived_callback)(LLWearable*, void* userdata), void* userdata )
{
llassert( (asset_type == LLAssetType::AT_CLOTHING) || (asset_type == LLAssetType::AT_BODYPART) );
- LLWearable* instance = mList.getIfThere( assetID );
+ LLWearable* instance = get_if_there(mList, assetID, (LLWearable*)NULL );
if( instance )
{
asset_arrived_callback( instance, userdata );
diff --git a/indra/newview/llwearablelist.h b/indra/newview/llwearablelist.h
index 303fcb7bd3..c3a7e1bd91 100644
--- a/indra/newview/llwearablelist.h
+++ b/indra/newview/llwearablelist.h
@@ -33,7 +33,6 @@
#define LL_LLWEARABLELIST_H
#include "llwearable.h"
-#include "llskiplist.h"
#include "lluuid.h"
#include "llassetstorage.h"
@@ -43,9 +42,7 @@ public:
LLWearableList() {}
~LLWearableList();
- S32 getLength() { return mList.getLength(); }
- const LLWearable* getFirst() { return mList.getFirstData(); }
- const LLWearable* getNext() { return mList.getNextData(); }
+ S32 getLength() { return mList.size(); }
void getAsset(
const LLAssetID& assetID,
@@ -65,7 +62,7 @@ public:
static void processGetAssetReply(const char* filename, const LLAssetID& assetID, void* user_data, S32 status, LLExtStat ext_status);
protected:
- LLPtrSkipMap< const LLUUID, LLWearable* > mList;
+ std::map< LLUUID, LLWearable* > mList;
};
extern LLWearableList gWearableList;
diff --git a/indra/newview/llwindebug.cpp b/indra/newview/llwindebug.cpp
index 949ea71c56..42f8a12e4c 100644
--- a/indra/newview/llwindebug.cpp
+++ b/indra/newview/llwindebug.cpp
@@ -121,6 +121,172 @@ MODULE32_NEST Module32Next_;
#define CALL_TRACE_MAX ((DUMP_SIZE_MAX - 2000) / (MAX_PATH + 40)) //max number of traced calls
#define NL L"\r\n" //new line
+BOOL WINAPI Get_Module_By_Ret_Addr(PBYTE Ret_Addr, LPWSTR Module_Name, PBYTE & Module_Addr);
+
+
+void printError( CHAR* msg )
+{
+ DWORD eNum;
+ TCHAR sysMsg[256];
+ TCHAR* p;
+
+ eNum = GetLastError( );
+ FormatMessage( FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS,
+ NULL, eNum,
+ MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), // Default language
+ sysMsg, 256, NULL );
+
+ // Trim the end of the line and terminate it with a null
+ p = sysMsg;
+ while( ( *p > 31 ) || ( *p == 9 ) )
+ ++p;
+ do { *p-- = 0; } while( ( p >= sysMsg ) &&
+ ( ( *p == '.' ) || ( *p < 33 ) ) );
+
+ // Display the message
+ printf( "\n WARNING: %s failed with error %d (%s)", msg, eNum, sysMsg );
+}
+
+BOOL GetProcessThreadIDs(DWORD process_id, std::vector<DWORD>& thread_ids)
+{
+ HANDLE hThreadSnap = INVALID_HANDLE_VALUE;
+ THREADENTRY32 te32;
+
+ // Take a snapshot of all running threads
+ hThreadSnap = CreateToolhelp32Snapshot( TH32CS_SNAPTHREAD, 0 );
+ if( hThreadSnap == INVALID_HANDLE_VALUE )
+ return( FALSE );
+
+ // Fill in the size of the structure before using it.
+ te32.dwSize = sizeof(THREADENTRY32 );
+
+ // Retrieve information about the first thread,
+ // and exit if unsuccessful
+ if( !Thread32First( hThreadSnap, &te32 ) )
+ {
+ printError( "Thread32First" ); // Show cause of failure
+ CloseHandle( hThreadSnap ); // Must clean up the snapshot object!
+ return( FALSE );
+ }
+
+ // Now walk the thread list of the system,
+ // and display information about each thread
+ // associated with the specified process
+ do
+ {
+ if( te32.th32OwnerProcessID == process_id )
+ {
+ thread_ids.push_back(te32.th32ThreadID);
+ }
+ } while( Thread32Next(hThreadSnap, &te32 ) );
+
+// Don't forget to clean up the snapshot object.
+ CloseHandle( hThreadSnap );
+ return( TRUE );
+}
+
+void WINAPI GetCallStackData(const CONTEXT* context_struct, LLSD& info)
+{
+ // Fill Str with call stack info.
+ // pException can be either GetExceptionInformation() or NULL.
+ // If pException = NULL - get current call stack.
+
+ LPWSTR Module_Name = new WCHAR[MAX_PATH];
+ PBYTE Module_Addr = 0;
+
+ typedef struct STACK
+ {
+ STACK * Ebp;
+ PBYTE Ret_Addr;
+ DWORD Param[0];
+ } STACK, * PSTACK;
+
+ PSTACK Ebp;
+
+ if(context_struct)
+ {
+ Ebp = (PSTACK)context_struct->Ebp;
+ }
+ else
+ {
+ // The context struct is NULL,
+ // so we will use the current stack.
+ Ebp = (PSTACK)&context_struct - 1;
+
+ // Skip frame of GetCallStackData().
+ if (!IsBadReadPtr(Ebp, sizeof(PSTACK)))
+ Ebp = Ebp->Ebp; //caller ebp
+ }
+
+ // Trace CALL_TRACE_MAX calls maximum - not to exceed DUMP_SIZE_MAX.
+ // Break trace on wrong stack frame.
+ for (int Ret_Addr_I = 0, i = 0;
+ (Ret_Addr_I < CALL_TRACE_MAX) && !IsBadReadPtr(Ebp, sizeof(PSTACK)) && !IsBadCodePtr(FARPROC(Ebp->Ret_Addr));
+ Ret_Addr_I++, Ebp = Ebp->Ebp, ++i)
+ {
+ // If module with Ebp->Ret_Addr found.
+
+ if (Get_Module_By_Ret_Addr(Ebp->Ret_Addr, Module_Name, Module_Addr))
+ {
+ // Save module's address and full path.
+ info["CallStack"][i]["ModuleName"] = ll_convert_wide_to_string(Module_Name);
+ info["CallStack"][i]["ModuleAddress"] = (int)Module_Addr;
+ info["CallStack"][i]["CallOffset"] = (int)(Ebp->Ret_Addr - Module_Addr);
+
+ LLSD params;
+ // Save 5 params of the call. We don't know the real number of params.
+ if (!IsBadReadPtr(Ebp, sizeof(PSTACK) + 5 * sizeof(DWORD)))
+ {
+ for(int j = 0; j < 5; ++j)
+ {
+ params[j] = (int)Ebp->Param[j];
+ }
+ }
+ info["CallStack"][i]["Parameters"] = params;
+ }
+ info["CallStack"][i]["ReturnAddress"] = (int)Ebp->Ret_Addr;
+ }
+}
+
+BOOL GetThreadCallStack(DWORD thread_id, LLSD& info)
+{
+ if(GetCurrentThreadId() == thread_id)
+ {
+ // Early exit for the current thread.
+ // Suspending the current thread would be a bad idea.
+ // Plus you can't retrieve a valid current thread context.
+ return false;
+ }
+
+ HANDLE thread_handle = INVALID_HANDLE_VALUE;
+ thread_handle = OpenThread(THREAD_ALL_ACCESS, FALSE, thread_id);
+ if(INVALID_HANDLE_VALUE == thread_handle)
+ {
+ return FALSE;
+ }
+
+ BOOL result = false;
+ if(-1 != SuspendThread(thread_handle))
+ {
+ CONTEXT context_struct;
+ context_struct.ContextFlags = CONTEXT_FULL;
+ if(GetThreadContext(thread_handle, &context_struct))
+ {
+ GetCallStackData(&context_struct, info);
+ result = true;
+ }
+ ResumeThread(thread_handle);
+ }
+ else
+ {
+ // Couldn't suspend thread.
+ }
+
+ CloseHandle(thread_handle);
+ return result;
+}
+
+
//Windows Call Stack Construction idea from
//http://www.codeproject.com/tools/minidump.asp
@@ -490,7 +656,33 @@ LONG LLWinDebug::handleException(struct _EXCEPTION_POINTERS *exception_infop)
LLSD info;
info = Get_Exception_Info(exception_infop);
- if (info)
+
+
+ LLSD threads;
+ std::vector<DWORD> thread_ids;
+ GetProcessThreadIDs(GetCurrentProcessId(), thread_ids);
+
+ for(std::vector<DWORD>::iterator th_itr = thread_ids.begin();
+ th_itr != thread_ids.end();
+ ++th_itr)
+ {
+ LLSD thread_info;
+ if(*th_itr != GetCurrentThreadId())
+ {
+ GetThreadCallStack(*th_itr, thread_info);
+ }
+
+ if(thread_info)
+ {
+
+ threads[llformat("ID %d", *th_itr)] = thread_info;
+ }
+ }
+
+
+ info["Threads"] = threads;
+
+ if (info)
{
std::ofstream out_file(log_path.c_str());
LLSDSerialize::toPrettyXML(info, out_file);
diff --git a/indra/newview/llworldmapview.cpp b/indra/newview/llworldmapview.cpp
index 6bbe5307b0..1664515f58 100644
--- a/indra/newview/llworldmapview.cpp
+++ b/indra/newview/llworldmapview.cpp
@@ -35,7 +35,6 @@
#include "indra_constants.h"
#include "llui.h"
-#include "linked_lists.h"
#include "llmath.h" // clampf()
#include "llregionhandle.h"
#include "lleventflags.h"
diff --git a/indra/newview/pipeline.cpp b/indra/newview/pipeline.cpp
index 4f533e1189..136612e1a8 100644
--- a/indra/newview/pipeline.cpp
+++ b/indra/newview/pipeline.cpp
@@ -5073,11 +5073,6 @@ LLCubeMap* LLPipeline::findReflectionMap(const LLVector3& location)
return NULL;
}
-S32 LLPipeline::getVisibleCount() const
-{
- return sCull->getVisibleListSize();
-}
-
void LLPipeline::renderGroups(LLRenderPass* pass, U32 type, U32 mask, BOOL texture)
{
#if !LL_RELEASE_FOR_DOWNLOAD
diff --git a/indra/newview/pipeline.h b/indra/newview/pipeline.h
index 32f5a7487b..2054492b72 100644
--- a/indra/newview/pipeline.h
+++ b/indra/newview/pipeline.h
@@ -36,8 +36,6 @@
#include "lldarrayptr.h"
#include "lldqueueptr.h"
#include "llstat.h"
-#include "lllinkedqueue.h"
-#include "llskiplist.h"
#include "lldrawpool.h"
#include "llspatialpartition.h"
#include "m4math.h"
@@ -193,7 +191,6 @@ public:
void findReferences(LLDrawable *drawablep); // Find the lists which have references to this object
BOOL verify(); // Verify that all data in the pipeline is "correct"
- S32 getVisibleCount() const;
S32 getLightCount() const { return mLights.size(); }
void calcNearbyLights(LLCamera& camera);