diff options
Diffstat (limited to 'indra/newview')
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); |