From 6c3375356e7366f4384d9233a43d2c58a01e7241 Mon Sep 17 00:00:00 2001 From: Monty Brandenberg Date: Fri, 21 Dec 2012 22:21:58 +0000 Subject: SH-3331 Fix incorrect overrun message when sending body with HTTP request. During readcallback, would generate an overrun-type message about reading position beyond end-of-data. Mistake was is messaging when state is exactly at end of data (which is expected) versus an overrun. Both result in declaring end-of-data to libcurl. Also changed some of the status logging for the metrics payload to be less chatty on success, more informative on error. --- indra/newview/lltexturefetch.cpp | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) (limited to 'indra/newview') diff --git a/indra/newview/lltexturefetch.cpp b/indra/newview/lltexturefetch.cpp index a2854dd6d8..8af403c1c6 100644 --- a/indra/newview/lltexturefetch.cpp +++ b/indra/newview/lltexturefetch.cpp @@ -3678,13 +3678,14 @@ public: if (status) { - LL_WARNS("Texture") << "Successfully delivered asset metrics to grid." - << LL_ENDL; + LL_DEBUGS("Texture") << "Successfully delivered asset metrics to grid." + << LL_ENDL; } else { - LL_WARNS("Texture") << "Error delivering asset metrics to grid. Reason: " - << status.toString() << LL_ENDL; + LL_WARNS("Texture") << "Error delivering asset metrics to grid. Status: " + << status.toHex() + << ", Reason: " << status.toString() << LL_ENDL; } } }; // end class AssetReportHandler -- cgit v1.2.3 From 11e506f2eb979a5ddfc3ca6f9c626771ab012a78 Mon Sep 17 00:00:00 2001 From: Monty Brandenberg Date: Fri, 21 Dec 2012 22:24:34 +0000 Subject: SH-3357 Texture fetch debugger not running correctly under drano- http phase 1 Some missing counter initialization kept the debugger from entering the startup state giving the appearance of a do- nothing floater. Also found some unbound recursion that might need looking at in the future. (There's a comment.) --- indra/newview/llfloatertexturefetchdebugger.cpp | 2 +- indra/newview/lltexturefetch.cpp | 45 +++++++++++++------------ indra/newview/lltexturefetch.h | 2 -- 3 files changed, 24 insertions(+), 25 deletions(-) (limited to 'indra/newview') diff --git a/indra/newview/llfloatertexturefetchdebugger.cpp b/indra/newview/llfloatertexturefetchdebugger.cpp index 9157389187..9a23d99802 100644 --- a/indra/newview/llfloatertexturefetchdebugger.cpp +++ b/indra/newview/llfloatertexturefetchdebugger.cpp @@ -4,7 +4,7 @@ * * $LicenseInfo:firstyear=2007&license=viewerlgpl$ * Second Life Viewer Source Code - * Copyright (C) 2010, Linden Research, Inc. + * Copyright (C) 2012, Linden Research, Inc. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public diff --git a/indra/newview/lltexturefetch.cpp b/indra/newview/lltexturefetch.cpp index 8af403c1c6..cd4fa78cab 100644 --- a/indra/newview/lltexturefetch.cpp +++ b/indra/newview/lltexturefetch.cpp @@ -3885,11 +3885,15 @@ private: LLTextureFetchDebugger::LLTextureFetchDebugger(LLTextureFetch* fetcher, LLTextureCache* cache, LLImageDecodeThread* imagedecodethread) : + LLCore::HttpHandler(), mFetcher(fetcher), mTextureCache(cache), mImageDecodeThread(imagedecodethread), mHttpHeaders(NULL), - mHttpPolicyClass(fetcher->getPolicyClass()) + mHttpPolicyClass(fetcher->getPolicyClass()), + mNbCurlCompleted(0), + mTempIndex(0), + mHistoryListIndex(0) { init(); } @@ -3915,6 +3919,7 @@ void LLTextureFetchDebugger::init() mDecodingTime = -1.f; mHTTPTime = -1.f; mGLCreationTime = -1.f; + mTotalFetchingTime = 0.f; mRefetchVisCacheTime = -1.f; mRefetchVisHTTPTime = -1.f; @@ -3941,6 +3946,9 @@ void LLTextureFetchDebugger::init() mFreezeHistory = FALSE; mStopDebug = FALSE; mClearHistory = FALSE; + mRefetchNonVis = FALSE; + + mNbCurlRequests = 0; if (! mHttpHeaders) { @@ -4014,7 +4022,8 @@ bool LLTextureFetchDebugger::processStartDebug(F32 max_time) S32 pending = 0; pending += LLAppViewer::getTextureCache()->update(1); pending += LLAppViewer::getImageDecodeThread()->update(1); - pending += LLAppViewer::getTextureFetch()->update(1); + // pending += LLAppViewer::getTextureFetch()->update(1); // This causes infinite recursion in some cases + pending += mNbCurlRequests; if(!pending) { break; @@ -4304,7 +4313,6 @@ void LLTextureFetchDebugger::debugHTTP() { mFetchingHistory[i].mCurlState = FetchEntry::CURL_NOT_DONE; mFetchingHistory[i].mCurlReceivedSize = 0; - mFetchingHistory[i].mHTTPFailCount = 0; mFetchingHistory[i].mFormattedImage = NULL; } mNbCurlRequests = 0; @@ -4328,8 +4336,6 @@ S32 LLTextureFetchDebugger::fillCurlQueue() S32 size = mFetchingHistory.size(); for (S32 i = 0 ; i < size ; i++) { - mNbCurlRequests++; - if (mFetchingHistory[i].mCurlState != FetchEntry::CURL_NOT_DONE) { continue; @@ -4355,15 +4361,22 @@ S32 LLTextureFetchDebugger::fillCurlQueue() mFetchingHistory[i].mHttpHandle = handle; mFetchingHistory[i].mCurlState = FetchEntry::CURL_IN_PROGRESS; mNbCurlRequests++; - // Hack - if (mNbCurlRequests == HTTP_REQUESTS_IN_QUEUE_HIGH_WATER) // emulate normal pipeline + if (mNbCurlRequests >= HTTP_REQUESTS_IN_QUEUE_HIGH_WATER) // emulate normal pipeline { break; } } else { - break; + // Failed to queue request, log it and mark it done. + LLCore::HttpStatus status(mFetcher->getHttpRequest().getStatus()); + + LL_WARNS("Texture") << "Couldn't issue HTTP request in debugger for texture " + << mFetchingHistory[i].mID + << ", status: " << status.toHex() + << " reason: " << status.toString() + << LL_ENDL; + mFetchingHistory[i].mCurlState = FetchEntry::CURL_DONE; } } //llinfos << "Fetch Debugger : Having " << mNbCurlRequests << " requests through the curl thread." << llendl; @@ -4717,14 +4730,13 @@ void LLTextureFetchDebugger::callbackHTTP(FetchEntry & fetch, LLCore::HttpRespon LLCore::HttpStatus status(response->getStatus()); mNbCurlRequests--; + mNbCurlCompleted++; + fetch.mCurlState = FetchEntry::CURL_DONE; if (status) { const bool partial(par_status == status); LLCore::BufferArray * ba(response->getBody()); // *Not* holding reference to body - fetch.mCurlState = FetchEntry::CURL_DONE; - mNbCurlCompleted++; - S32 data_size = ba ? ba->size() : 0; fetch.mCurlReceivedSize += data_size; //llinfos << "Fetch Debugger : got results for " << fetch.mID << ", data_size = " << data_size << ", received = " << fetch.mCurlReceivedSize << ", requested = " << fetch.mRequestedSize << ", partial = " << partial << llendl; @@ -4756,17 +4768,6 @@ void LLTextureFetchDebugger::callbackHTTP(FetchEntry & fetch, LLCore::HttpRespon llinfos << "Fetch Debugger : CURL GET FAILED, ID = " << fetch.mID << ", status: " << status.toHex() << " reason: " << status.toString() << llendl; - fetch.mHTTPFailCount++; - if(fetch.mHTTPFailCount < 5) - { - // Fetch will have to be redone - fetch.mCurlState = FetchEntry::CURL_NOT_DONE; - } - else //skip - { - fetch.mCurlState = FetchEntry::CURL_DONE; - mNbCurlCompleted++; - } } } diff --git a/indra/newview/lltexturefetch.h b/indra/newview/lltexturefetch.h index 3a99432b48..2377a54f92 100644 --- a/indra/newview/lltexturefetch.h +++ b/indra/newview/lltexturefetch.h @@ -449,7 +449,6 @@ private: LLPointer mRawImage; e_curl_state mCurlState; S32 mCurlReceivedSize; - S32 mHTTPFailCount; LLCore::HttpHandle mHttpHandle; FetchEntry() : @@ -465,7 +464,6 @@ private: mFetchedSize(f_size), mDecodedSize(d_size), mNeedsAux(false), - mHTTPFailCount(0), mHttpHandle(LLCORE_HTTP_HANDLE_INVALID) {} }; -- cgit v1.2.3 From 34f231cc66bc746228fe367712447058d76757b3 Mon Sep 17 00:00:00 2001 From: Nat Goodspeed Date: Wed, 9 Jan 2013 20:39:06 -0500 Subject: MAINT-1481: remove linux-updater; move logic to Linux update_install Now that the viewer's own background updater logic is responsible for downloading a new installer, the only functionality we still use in linux-updater that couldn't be expressed more simply in bash is the UI. But since most Linux distros capable of running SL at all have zenity, and all will have xmessage, we can handle even the UI part. Add xmenity wrapper script so update_install doesn't have to care which is present, and make the bash script that used to launch linux-updater do the real work. --- indra/newview/CMakeLists.txt | 1 - indra/newview/viewer_manifest.py | 17 +++++++++-------- 2 files changed, 9 insertions(+), 9 deletions(-) (limited to 'indra/newview') diff --git a/indra/newview/CMakeLists.txt b/indra/newview/CMakeLists.txt index 0197ac794f..22960a2d0d 100644 --- a/indra/newview/CMakeLists.txt +++ b/indra/newview/CMakeLists.txt @@ -1865,7 +1865,6 @@ if (LINUX) set(COPY_INPUT_DEPENDENCIES ${VIEWER_BINARY_NAME} linux-crash-logger - linux-updater SLPlugin media_plugin_webkit media_plugin_gstreamer010 diff --git a/indra/newview/viewer_manifest.py b/indra/newview/viewer_manifest.py index ea75d4f4f6..bc623aee00 100644 --- a/indra/newview/viewer_manifest.py +++ b/indra/newview/viewer_manifest.py @@ -968,9 +968,9 @@ class LinuxManifest(ViewerManifest): if self.prefix(src="", dst="bin"): self.path("secondlife-bin","do-not-directly-run-secondlife-bin") self.path("../linux_crash_logger/linux-crash-logger","linux-crash-logger.bin") - self.path("../linux_updater/linux-updater", "linux-updater.bin") self.path2basename("../llplugin/slplugin", "SLPlugin") self.path2basename("../viewer_components/updater/scripts/linux", "update_install") + self.path2basename("../viewer_components/updater/scripts/linux", "xmenity") self.end_prefix("bin") if self.prefix("res-sdl"): @@ -1001,7 +1001,7 @@ class LinuxManifest(ViewerManifest): def copy_finish(self): # Force executable permissions to be set for scripts # see CHOP-223 and http://mercurial.selenic.com/bts/issue1802 - for script in 'secondlife', 'bin/update_install': + for script in 'secondlife', 'bin/update_install', 'bin/xmenity': self.run_command("chmod +x %r" % os.path.join(self.get_dst_prefix(), script)) def package_finish(self): @@ -1017,9 +1017,7 @@ class LinuxManifest(ViewerManifest): else: installer_name += '_' + self.channel_oneword().upper() - if self.args['buildtype'].lower() == 'release' and self.is_packaging_viewer(): - print "* Going strip-crazy on the packaged binaries, since this is a RELEASE build" - self.run_command("find %(d)r/bin %(d)r/lib -type f \\! -name update_install | xargs --no-run-if-empty strip -S" % {'d': self.get_dst_prefix()} ) # makes some small assumptions about our packaged dir structure + self.strip_binaries() # Fix access permissions self.run_command(""" @@ -1054,6 +1052,11 @@ class LinuxManifest(ViewerManifest): 'dst': self.get_dst_prefix(), 'inst': self.build_path_of(installer_name)}) + def strip_binaries(self): + if self.args['buildtype'].lower() == 'release' and self.is_packaging_viewer(): + print "* Going strip-crazy on the packaged binaries, since this is a RELEASE build" + self.run_command(r"find %(d)r/bin %(d)r/lib -type f \! \( -name update_install -o -name xmenity \) | xargs --no-run-if-empty strip -S" % {'d': self.get_dst_prefix()} ) # makes some small assumptions about our packaged dir structure + class Linux_i686Manifest(LinuxManifest): def construct(self): super(Linux_i686Manifest, self).construct() @@ -1139,9 +1142,7 @@ class Linux_i686Manifest(LinuxManifest): self.path("libvivoxplatform.so") self.end_prefix("lib") - if self.args['buildtype'].lower() == 'release' and self.is_packaging_viewer(): - print "* Going strip-crazy on the packaged binaries, since this is a RELEASE build" - self.run_command("find %(d)r/bin %(d)r/lib -type f \\! -name update_install | xargs --no-run-if-empty strip -S" % {'d': self.get_dst_prefix()} ) # makes some small assumptions about our packaged dir structure + self.strip_binaries() class Linux_x86_64Manifest(LinuxManifest): -- cgit v1.2.3 From 83f625445b87b8c5cb53c1a152f03402c0606dee Mon Sep 17 00:00:00 2001 From: Nat Goodspeed Date: Fri, 11 Jan 2013 12:24:44 -0500 Subject: MAINT-1481: Remove xmenity script and viewer_manifest.py references. --- indra/newview/viewer_manifest.py | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) (limited to 'indra/newview') diff --git a/indra/newview/viewer_manifest.py b/indra/newview/viewer_manifest.py index bc623aee00..e7108141ee 100644 --- a/indra/newview/viewer_manifest.py +++ b/indra/newview/viewer_manifest.py @@ -970,7 +970,6 @@ class LinuxManifest(ViewerManifest): self.path("../linux_crash_logger/linux-crash-logger","linux-crash-logger.bin") self.path2basename("../llplugin/slplugin", "SLPlugin") self.path2basename("../viewer_components/updater/scripts/linux", "update_install") - self.path2basename("../viewer_components/updater/scripts/linux", "xmenity") self.end_prefix("bin") if self.prefix("res-sdl"): @@ -1001,7 +1000,7 @@ class LinuxManifest(ViewerManifest): def copy_finish(self): # Force executable permissions to be set for scripts # see CHOP-223 and http://mercurial.selenic.com/bts/issue1802 - for script in 'secondlife', 'bin/update_install', 'bin/xmenity': + for script in 'secondlife', 'bin/update_install': self.run_command("chmod +x %r" % os.path.join(self.get_dst_prefix(), script)) def package_finish(self): @@ -1055,7 +1054,7 @@ class LinuxManifest(ViewerManifest): def strip_binaries(self): if self.args['buildtype'].lower() == 'release' and self.is_packaging_viewer(): print "* Going strip-crazy on the packaged binaries, since this is a RELEASE build" - self.run_command(r"find %(d)r/bin %(d)r/lib -type f \! \( -name update_install -o -name xmenity \) | xargs --no-run-if-empty strip -S" % {'d': self.get_dst_prefix()} ) # makes some small assumptions about our packaged dir structure + self.run_command(r"find %(d)r/bin %(d)r/lib -type f \! -name update_install | xargs --no-run-if-empty strip -S" % {'d': self.get_dst_prefix()} ) # makes some small assumptions about our packaged dir structure class Linux_i686Manifest(LinuxManifest): def construct(self): -- cgit v1.2.3 From 627e531d333bcf9ed684883ad494a25b2c83af8e Mon Sep 17 00:00:00 2001 From: Dave Parks Date: Fri, 11 Jan 2013 17:17:13 -0600 Subject: MAINT-417 Backed out changeset: 7273a1ac51e8 --- indra/newview/llviewerkeyboard.cpp | 5 ----- 1 file changed, 5 deletions(-) (limited to 'indra/newview') diff --git a/indra/newview/llviewerkeyboard.cpp b/indra/newview/llviewerkeyboard.cpp index f5d3341c66..1aa9fd8a45 100644 --- a/indra/newview/llviewerkeyboard.cpp +++ b/indra/newview/llviewerkeyboard.cpp @@ -160,11 +160,6 @@ void agent_push_backward( EKeystate s ) camera_move_backward(s); return; } - else if (gAgentAvatarp->isSitting()) - { - gAgentCamera.changeCameraToThirdPerson(); - return; - } agent_push_forwardbackward(s, -1, LLAgent::DOUBLETAP_BACKWARD); } -- cgit v1.2.3 From 622d4f39a50f07fe59bef2e7cdbacb3f8e837ee7 Mon Sep 17 00:00:00 2001 From: Dave Parks Date: Wed, 16 Jan 2013 15:20:32 -0600 Subject: MAINT-2242 Fix for shader compilation errors on Intel HD graphics chips. --- .../shaders/class1/objects/previewV.glsl | 39 ++++++++++++++++++++-- indra/newview/llviewershadermgr.cpp | 7 ++-- 2 files changed, 40 insertions(+), 6 deletions(-) (limited to 'indra/newview') diff --git a/indra/newview/app_settings/shaders/class1/objects/previewV.glsl b/indra/newview/app_settings/shaders/class1/objects/previewV.glsl index da3387e7a5..7f3f84398b 100644 --- a/indra/newview/app_settings/shaders/class1/objects/previewV.glsl +++ b/indra/newview/app_settings/shaders/class1/objects/previewV.glsl @@ -23,9 +23,6 @@ * $/LicenseInfo$ */ -float calcDirectionalLight(vec3 n, vec3 l); -float calcPointLightOrSpotLight(vec3 v, vec3 n, vec4 lp, vec3 ln, float la, float is_pointlight); - uniform mat3 normal_matrix; uniform mat4 texture_matrix0; uniform mat4 modelview_matrix; @@ -45,6 +42,42 @@ uniform vec3 light_direction[8]; uniform vec3 light_attenuation[8]; uniform vec3 light_diffuse[8]; +//=================================================================================================== +//declare these here explicitly to separate them from atmospheric lighting elsewhere to work around +//drivers that are picky about functions being declared but not defined even if they aren't called +float calcDirectionalLight(vec3 n, vec3 l) +{ + float a = max(dot(n,l),0.0); + return a; +} + + +float calcPointLightOrSpotLight(vec3 v, vec3 n, vec4 lp, vec3 ln, float la, float is_pointlight) +{ + //get light vector + vec3 lv = lp.xyz-v; + + //get distance + float d = length(lv); + + //normalize light vector + lv *= 1.0/d; + + //distance attenuation + float da = clamp(1.0/(la * d), 0.0, 1.0); + + // spotlight coefficient. + float spot = max(dot(-ln, lv), is_pointlight); + da *= spot*spot; // GL_SPOT_EXPONENT=2 + + //angular attenuation + da *= calcDirectionalLight(n, lv); + + return da; +} +//==================================================================================================== + + void main() { //transform vertex diff --git a/indra/newview/llviewershadermgr.cpp b/indra/newview/llviewershadermgr.cpp index 142cb2090d..ba9818946c 100644 --- a/indra/newview/llviewershadermgr.cpp +++ b/indra/newview/llviewershadermgr.cpp @@ -2025,11 +2025,11 @@ BOOL LLViewerShaderMgr::loadShadersObject() if (success) { gObjectPreviewProgram.mName = "Simple Shader"; - gObjectPreviewProgram.mFeatures.calculatesLighting = true; + gObjectPreviewProgram.mFeatures.calculatesLighting = false; gObjectPreviewProgram.mFeatures.calculatesAtmospherics = false; - gObjectPreviewProgram.mFeatures.hasGamma = true; + gObjectPreviewProgram.mFeatures.hasGamma = false; gObjectPreviewProgram.mFeatures.hasAtmospherics = false; - gObjectPreviewProgram.mFeatures.hasLighting = true; + gObjectPreviewProgram.mFeatures.hasLighting = false; gObjectPreviewProgram.mFeatures.mIndexedTextureChannels = 0; gObjectPreviewProgram.mFeatures.disableTextureIndex = true; gObjectPreviewProgram.mShaderFiles.clear(); @@ -2037,6 +2037,7 @@ BOOL LLViewerShaderMgr::loadShadersObject() gObjectPreviewProgram.mShaderFiles.push_back(make_pair("objects/previewF.glsl", GL_FRAGMENT_SHADER_ARB)); gObjectPreviewProgram.mShaderLevel = mVertexShaderLevel[SHADER_OBJECT]; success = gObjectPreviewProgram.createShader(NULL, NULL); + gObjectPreviewProgram.mFeatures.hasLighting = true; } if (success) -- cgit v1.2.3 From 7ecfa28c431a3599a99e92775d963241e1b943c0 Mon Sep 17 00:00:00 2001 From: Kelly Washington Date: Wed, 16 Jan 2013 15:21:11 -0800 Subject: MAINT-2247 Child object does not update rotation while selected. --- indra/newview/lldrawable.cpp | 2 ++ 1 file changed, 2 insertions(+) (limited to 'indra/newview') diff --git a/indra/newview/lldrawable.cpp b/indra/newview/lldrawable.cpp index b7270e696e..647c3355ca 100644 --- a/indra/newview/lldrawable.cpp +++ b/indra/newview/lldrawable.cpp @@ -550,6 +550,8 @@ F32 LLDrawable::updateXform(BOOL undamped) else { dist_squared = dist_vec_squared(old_pos, target_pos); + dist_squared += (1.f - dot(old_rot, target_rot)) * 10.f; + dist_squared += dist_vec_squared(old_scale, target_scale); } LLVector3 vec = mCurrentScale-target_scale; -- cgit v1.2.3 From 27e13e7330ad4c93b0c6e38398588e9a130c5ea9 Mon Sep 17 00:00:00 2001 From: Kelly Washington Date: Thu, 24 Jan 2013 09:17:02 -0800 Subject: MAINT-2275 Child prims are "left behind" by animated, moving (physical) linksets --- indra/newview/lldrawable.cpp | 59 +++++++++++++++++++++++--------------------- 1 file changed, 31 insertions(+), 28 deletions(-) (limited to 'indra/newview') diff --git a/indra/newview/lldrawable.cpp b/indra/newview/lldrawable.cpp index 647c3355ca..d394ce5b21 100644 --- a/indra/newview/lldrawable.cpp +++ b/indra/newview/lldrawable.cpp @@ -517,42 +517,45 @@ F32 LLDrawable::updateXform(BOOL undamped) F32 dist_squared = 0.f; F32 camdist2 = (mDistanceWRTCamera * mDistanceWRTCamera); - if (damped && isVisible()) + if (isVisible()) { - F32 lerp_amt = llclamp(LLCriticalDamp::getInterpolant(OBJECT_DAMPING_TIME_CONSTANT), 0.f, 1.f); - LLVector3 new_pos = lerp(old_pos, target_pos, lerp_amt); - dist_squared = dist_vec_squared(new_pos, target_pos); + if (damped) + { + F32 lerp_amt = llclamp(LLCriticalDamp::getInterpolant(OBJECT_DAMPING_TIME_CONSTANT), 0.f, 1.f); + LLVector3 new_pos = lerp(old_pos, target_pos, lerp_amt); + dist_squared = dist_vec_squared(new_pos, target_pos); - LLQuaternion new_rot = nlerp(lerp_amt, old_rot, target_rot); - dist_squared += (1.f - dot(new_rot, target_rot)) * 10.f; + LLQuaternion new_rot = nlerp(lerp_amt, old_rot, target_rot); + dist_squared += (1.f - dot(new_rot, target_rot)) * 10.f; - LLVector3 new_scale = lerp(old_scale, target_scale, lerp_amt); - dist_squared += dist_vec_squared(new_scale, target_scale); + LLVector3 new_scale = lerp(old_scale, target_scale, lerp_amt); + dist_squared += dist_vec_squared(new_scale, target_scale); - if ((dist_squared >= MIN_INTERPOLATE_DISTANCE_SQUARED * camdist2) && - (dist_squared <= MAX_INTERPOLATE_DISTANCE_SQUARED)) - { - // interpolate - target_pos = new_pos; - target_rot = new_rot; - target_scale = new_scale; + if ((dist_squared >= MIN_INTERPOLATE_DISTANCE_SQUARED * camdist2) && + (dist_squared <= MAX_INTERPOLATE_DISTANCE_SQUARED)) + { + // interpolate + target_pos = new_pos; + target_rot = new_rot; + target_scale = new_scale; + } + else if (mVObjp->getAngularVelocity().isExactlyZero()) + { + // snap to final position (only if no target omega is applied) + dist_squared = 0.0f; + if (getVOVolume() && !isRoot()) + { //child prim snapping to some position, needs a rebuild + gPipeline.markRebuild(this, LLDrawable::REBUILD_POSITION, TRUE); + } + } } - else if (mVObjp->getAngularVelocity().isExactlyZero()) + else { - // snap to final position (only if no target omega is applied) - dist_squared = 0.0f; - if (getVOVolume() && !isRoot()) - { //child prim snapping to some position, needs a rebuild - gPipeline.markRebuild(this, LLDrawable::REBUILD_POSITION, TRUE); - } + dist_squared = dist_vec_squared(old_pos, target_pos); + dist_squared += (1.f - dot(old_rot, target_rot)) * 10.f; + dist_squared += dist_vec_squared(old_scale, target_scale); } } - else - { - dist_squared = dist_vec_squared(old_pos, target_pos); - dist_squared += (1.f - dot(old_rot, target_rot)) * 10.f; - dist_squared += dist_vec_squared(old_scale, target_scale); - } LLVector3 vec = mCurrentScale-target_scale; -- cgit v1.2.3 From da9442b3238ca25b11932fd6d437964ab2f5be7b Mon Sep 17 00:00:00 2001 From: Kelly Washington Date: Thu, 24 Jan 2013 09:45:31 -0800 Subject: MAINT-2277 Yellow "fence" (selection) of the parcel doesn't update after selecting the other parcel * Removed bogus check on matching parcel data coming in. --- indra/newview/llviewerparcelmgr.cpp | 11 ----------- 1 file changed, 11 deletions(-) (limited to 'indra/newview') diff --git a/indra/newview/llviewerparcelmgr.cpp b/indra/newview/llviewerparcelmgr.cpp index 33f632b25d..77e382b8c7 100644 --- a/indra/newview/llviewerparcelmgr.cpp +++ b/indra/newview/llviewerparcelmgr.cpp @@ -1540,17 +1540,6 @@ void LLViewerParcelMgr::processParcelProperties(LLMessageSystem *msg, void **use // Actually extract the data. if (parcel) { - if (sequence_id == SELECTED_PARCEL_SEQ_ID - && parcel->getLocalID() != INVALID_PARCEL_ID - && parcel->getLocalID() != local_id) - { - // The parcel has a valid parcel ID but it doesn't match the parcel - // for the data received. - llinfos << "Expecting data for parcel " << parcel->getLocalID() \ - << " but got data for parcel " << local_id << llendl; - return; - } - parcel->init(owner_id, FALSE, FALSE, FALSE, claim_date, claim_price_per_meter, rent_price_per_meter, -- cgit v1.2.3 From aee0766f35d724bfddc4be6b6f0b100467f3b1f4 Mon Sep 17 00:00:00 2001 From: Kelly Washington Date: Thu, 24 Jan 2013 13:21:45 -0800 Subject: MAINT-2275 Child prims are "left behind" by animated, moving (physical) linksets * A fix that doesn't break doors. Reverst MAINT-2247 --- indra/newview/lldrawable.cpp | 62 ++++++++++++++++++++++---------------------- 1 file changed, 31 insertions(+), 31 deletions(-) (limited to 'indra/newview') diff --git a/indra/newview/lldrawable.cpp b/indra/newview/lldrawable.cpp index d394ce5b21..b15ffec9e3 100644 --- a/indra/newview/lldrawable.cpp +++ b/indra/newview/lldrawable.cpp @@ -517,45 +517,45 @@ F32 LLDrawable::updateXform(BOOL undamped) F32 dist_squared = 0.f; F32 camdist2 = (mDistanceWRTCamera * mDistanceWRTCamera); - if (isVisible()) + if (damped && isVisible()) { - if (damped) - { - F32 lerp_amt = llclamp(LLCriticalDamp::getInterpolant(OBJECT_DAMPING_TIME_CONSTANT), 0.f, 1.f); - LLVector3 new_pos = lerp(old_pos, target_pos, lerp_amt); - dist_squared = dist_vec_squared(new_pos, target_pos); + F32 lerp_amt = llclamp(LLCriticalDamp::getInterpolant(OBJECT_DAMPING_TIME_CONSTANT), 0.f, 1.f); + LLVector3 new_pos = lerp(old_pos, target_pos, lerp_amt); + dist_squared = dist_vec_squared(new_pos, target_pos); - LLQuaternion new_rot = nlerp(lerp_amt, old_rot, target_rot); - dist_squared += (1.f - dot(new_rot, target_rot)) * 10.f; + LLQuaternion new_rot = nlerp(lerp_amt, old_rot, target_rot); + // FIXME: This can be negative! It is be possible for some rots to 'cancel out' pos or size changes. + dist_squared += (1.f - dot(new_rot, target_rot)) * 10.f; - LLVector3 new_scale = lerp(old_scale, target_scale, lerp_amt); - dist_squared += dist_vec_squared(new_scale, target_scale); + LLVector3 new_scale = lerp(old_scale, target_scale, lerp_amt); + dist_squared += dist_vec_squared(new_scale, target_scale); - if ((dist_squared >= MIN_INTERPOLATE_DISTANCE_SQUARED * camdist2) && - (dist_squared <= MAX_INTERPOLATE_DISTANCE_SQUARED)) - { - // interpolate - target_pos = new_pos; - target_rot = new_rot; - target_scale = new_scale; - } - else if (mVObjp->getAngularVelocity().isExactlyZero()) - { - // snap to final position (only if no target omega is applied) - dist_squared = 0.0f; - if (getVOVolume() && !isRoot()) - { //child prim snapping to some position, needs a rebuild - gPipeline.markRebuild(this, LLDrawable::REBUILD_POSITION, TRUE); - } - } + if ((dist_squared >= MIN_INTERPOLATE_DISTANCE_SQUARED * camdist2) && + (dist_squared <= MAX_INTERPOLATE_DISTANCE_SQUARED)) + { + // interpolate + target_pos = new_pos; + target_rot = new_rot; + target_scale = new_scale; } - else + else if (mVObjp->getAngularVelocity().isExactlyZero()) { - dist_squared = dist_vec_squared(old_pos, target_pos); - dist_squared += (1.f - dot(old_rot, target_rot)) * 10.f; - dist_squared += dist_vec_squared(old_scale, target_scale); + // snap to final position (only if no target omega is applied) + dist_squared = 0.0f; + if (getVOVolume() && !isRoot()) + { //child prim snapping to some position, needs a rebuild + gPipeline.markRebuild(this, LLDrawable::REBUILD_POSITION, TRUE); + } } } + else + { + dist_squared = dist_vec_squared(old_pos, target_pos); + + // The following "makes sense" and fixes MAINT-2247 but causes MAINT-2275 + //dist_squared += (1.f - dot(old_rot, target_rot)) * 10.f; + //dist_squared += dist_vec_squared(old_scale, target_scale); + } LLVector3 vec = mCurrentScale-target_scale; -- cgit v1.2.3 From 4d589df2fd9a19cef248987e9f1f71b9be1f9aaa Mon Sep 17 00:00:00 2001 From: Kelly Washington Date: Thu, 24 Jan 2013 15:32:36 -0800 Subject: MAINT-2275 Child prims are "left behind" by animated, moving (physical) linksets * A fix that doesn't break tanks. Reverts MAINT-1742 --- indra/newview/lldrawable.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) (limited to 'indra/newview') diff --git a/indra/newview/lldrawable.cpp b/indra/newview/lldrawable.cpp index b15ffec9e3..d041baea90 100644 --- a/indra/newview/lldrawable.cpp +++ b/indra/newview/lldrawable.cpp @@ -550,9 +550,10 @@ F32 LLDrawable::updateXform(BOOL undamped) } else { - dist_squared = dist_vec_squared(old_pos, target_pos); + // The following fixes MAINT-1742 but breaks vehicles similar to MAINT-2275 + // dist_squared = dist_vec_squared(old_pos, target_pos); - // The following "makes sense" and fixes MAINT-2247 but causes MAINT-2275 + // The following fixes MAINT-2247 but causes MAINT-2275 //dist_squared += (1.f - dot(old_rot, target_rot)) * 10.f; //dist_squared += dist_vec_squared(old_scale, target_scale); } -- cgit v1.2.3 From 564f11679d52a777b992c25bbff7e4f914dac7ad Mon Sep 17 00:00:00 2001 From: Chris Baker Date: Fri, 25 Jan 2013 23:29:09 +0000 Subject: [MAINT-2233] Duplicate entries in notifications.xml - Removed duplicate notification elements --- .../newview/skins/default/xui/en/notifications.xml | 1738 -------------------- 1 file changed, 1738 deletions(-) (limited to 'indra/newview') diff --git a/indra/newview/skins/default/xui/en/notifications.xml b/indra/newview/skins/default/xui/en/notifications.xml index 44c18c2cce..c8f5cbb2b0 100644 --- a/indra/newview/skins/default/xui/en/notifications.xml +++ b/indra/newview/skins/default/xui/en/notifications.xml @@ -8872,14 +8872,6 @@ Cannot save to object contents: Item with that name already exists in inventory Cannot save to object contents: This would modify the attachment permissions. - - fail -Not permitted to edit this! - - - - fail -You don't have permission to modify that object. - - - - fail -Can't enable physics for an object that contributes to the navmesh. - - - - fail -Can't enable physics for keyframed objects. - - - - fail -Can't enable physics for object -- insufficient land resources. - - - - fail -Can't enable physics for object with physics resource cost greater than [MAX_OBJECTS] - - - - - fail -[AV_FREEZER] has frozen you. You cannot move or interact with the world. - - - - fail -[AV_FREEZER] has frozen you for [AV_FREEZE_TIME] seconds. You cannot move or interact with the world. - - - - fail -Avatar frozen. - - - - fail -[AV_FREEZER] has unfrozen you. - - - - fail -Avatar unfrozen. - - - - fail -Freeze failed because you don't have admin permission for that parcel. - - - - fail -Your freeze expired, go about your business. - - - - fail -Sorry, can't freeze that user. - - - - fail -You are now the owner of object [OBJECT_NAME] - - - - fail -Can't rez object at [OBJECT_POS] because the owner of this land does not allow it. Use the land tool to see land ownership. - - - - fail -Object can not be rezzed because there are too many requests. - - - - fail -You cannot sit because you cannot move at this time. - - - - fail -You cannot sit because you are not allowed on that land. - - - - fail -Try moving closer. Can't sit on object because -it is not in the same region as you. - - - - fail -Unable to create new object. The region is full. - - - - fail -Failed to place object at specified location. Please try again. - - - - fail -You Can't create trees and grass on land you don't own. - - - - fail -Copy failed because you lack permission to copy the object '[OBJ_NAME]'. - - - - fail -Copy failed because the object '[OBJ_NAME]' cannot be transferred to you. - - - - fail -Copy failed because the object '[OBJ_NAME]' contributes to navmesh. - - - - fail -Duplicate with no root objects selected. - - - - fail -Can't duplicate objects because the region is full. - - - - fail -Can't duplicate objects - Can't find the parcel they are on. - - - - fail -Can't create object because -the parcel is full. - - - - fail -Attempt to rez an object failed. - - - - fail -Unable to create item that has caused problems on this region. - - - - fail -That inventory item has been blacklisted. - - - - fail -You are not currently allowed to create objects. - - - - fail -Land Search Blocked. -You have performed too many land searches too quickly. -Please try again in a minute. - - - - fail -Not enough script resources available to attach object! - - - - fail -You died and have been teleported to your home location - - - - fail -You are no longer allowed here and have [EJECT_TIME] seconds to leave. - - - - fail -You can't enter this region because -the server is full. - - - - fail -Save Back To Inventory has been disabled. - - - - fail -Cannot save '[OBJ_NAME]' to object contents because the object it was rezzed from no longer exists. - - - - fail -Cannot save '[OBJ_NAME]' to object contents because you do not have permission to modify the object '[DEST_NAME]'. - - - - fail -Cannot save '[OBJ_NAME]' back to inventory -- this operation has been disabled. - - - - fail -You cannot copy your selection because you do not have permission to copy the object '[OBJ_NAME]'. - - - - fail -You cannot copy your selection because the object '[OBJ_NAME]' is not transferrable. - - - - fail -You cannot copy your selection because the object '[OBJ_NAME]' is not transferrable. - - - - fail -Removal of the object '[OBJ_NAME]' from the simulator is disallowed by the permissions system. - - - - fail -Cannot save your selection because you do not have permission to modify the object '[OBJ_NAME]'. - - - - fail -Cannot save your selection because the object '[OBJ_NAME]' is not copyable. - - - - fail -You cannot take your selection because you do not have permission to modify the object '[OBJ_NAME]'. - - - - fail -Internal Error: Unknown destination type. - - - - fail -Delete failed because object not found - - - - fail -Sorry, can't eject that user. - - - - fail -This region does not allow you to set your home location here. - - - - fail -You can only set your 'Home Location' on your land or at a mainland Infohub. - - - - fail -Home position set. - - - - fail -Avatar ejected. - - - - fail -Eject failed because you don't have admin permission for that parcel. - - - - fail -Can't move object '[OBJECT_NAME]' to -[OBJ_POSITION] in region [REGION_NAME] because the parcel is full. - - - - fail -Can't move object '[OBJECT_NAME]' to -[OBJ_POSITION] in region [REGION_NAME] because your objects are not allowed on this parcel. - - - - fail -Can't move object '[OBJECT_NAME]' to -[OBJ_POSITION] in region [REGION_NAME] because there are not enough resources for this object on this parcel. - - - - fail -Can't move object '[OBJECT_NAME]' to -[OBJ_POSITION] in region [REGION_NAME] because the other region is running an older version which does not support receiving this object via region crossing. - - - - fail -Can't move object '[OBJECT_NAME]' to -[OBJ_POSITION] in region [REGION_NAME] because you cannot modify the navmesh across region boundaries. - - - - fail -Can't move object '[OBJECT_NAME]' to -[OBJ_POSITION] in region [REGION_NAME] because of an unknown reason. ([FAILURE_TYPE]) - - - - fail -You don't have permission to modify that object - - - - fail -Can't enable physics for an object that contributes to the navmesh. - - - - fail -Can't enable physics for keyframed objects. - - - - fail -Can't enable physics for object -- insufficient land resources. - - - - fail -Can't enable physics for object with physics resource cost greater than [MAX_OBJECTS] - - - - fail -This object cannot have a concave piece because it is phantom and contributes to the navmesh. - - - - fail -Unable to add item! - - - - fail -Unable to edit this! - - - - fail -Not permitted to edit this. - - - - fail -Not permitted to copy that inventory. - - - - fail -Cannot save to object contents: Item no longer exists. - - - - fail -Cannot save to object contents: Item with that name already exists in inventory - - - - fail -Cannot save to object contents: This would modify the attachment permissions. - - - - fail -Not permitted to edit this! - - - - fail -Too many scripts. - - - - fail -Unable to add script! - - - - fail -Asset server didn't respond in a timely fashion. Object returned to sim. - - - - fail -This region does not have physics shapes enabled. - - - - fail -You cannot modify the navmesh across region boundaries. - - - - fail -You don't have permission to modify that object. - - - - fail -Can't enable physics for an object that contributes to the navmesh. - - - - fail -Can't enable physics for keyframed objects. - - - - fail -Can't enable physics for object -- insufficient land resources. - - - - fail -Can't enable physics for object with physics resource cost greater than [MAX_OBJECTS] - - - - fail -Cannot set physics properties on that object type. - - - - fail -Cannot set root prim to have no shape. - - - - fail -This region does not have physics materials enabled. - - - - fail -Only root prims may have their physics materials adjusted. - - - - fail -Setting physics materials on characters is not yet supported. - - - - fail -One or more of the specified physics material properties was invalid. - - - - fail -You may not alter the stitching type of a mesh object. - - - - fail -You may not alter the shape of a mesh object - - - - fail -You can't enter this region because \nthe region is full. - - - - fail -Link failed -- owners differ - - - - fail -Link failed -- cannot modify the navmesh across region boundaries. - - - - fail -Link failed because you do not have edit permission. - - - - fail -Link failed -- too many primitives - - - - fail -Link failed -- cannot link no-copy with no-transfer - - - - fail -Link failed -- nothing linkable. - - - - fail -Link failed -- too many pathfinding characters - - - - fail -Link failed -- insufficient land resources - - - - fail -Object uses too many physics resources -- its dynamics have been disabled. - - - - fail -You have been teleported home by the object '[OBJECT_NAME]' on the parcel '[PARCEL_NAME]' - - - - fail -You have been teleported home by the object '[OBJECT_NAME]' - - - - fail -You have been teleported by an attachment on [ITEM_ID] - - - - fail -You have been teleported by the object '[OBJECT_NAME]' on the parcel '[PARCEL_NAME]' - - - - fail -You have been teleported by the object '[OBJECT_NAME]' owned by [OWNER_ID] - - - - fail -You have been teleported by the object '[OBJECT_NAME]' owned by an unknown user. - - - - fail -Unable to create requested object. The region is full. - - - - fail -You can't attach multiple objects to one spot. - - - - fail -You can't create multiple objects here. - - - - fail -Unable to create requested object. Object is missing from database. - - - - fail -Unable to create requested object. The request timed out. Please try again. - - - - fail -Unable to create requested object. Please try again. - - - - fail -Rez failed, requested object took too long to load. - - - - fail -Failed to place object at specified location. Please try again. - - - - fail -You cannot create plants on this land. - - - - fail -Cannot restore object. No world position found. - - - - fail -Unable to rez object because its mesh data is invalid. - - - - fail -Unable to rez object because there are already too many scripts in this region. - - - - fail -Your access privileges don't allow you to create objects there. - - - - fail -You are not currently allowed to create objects. - - - - fail -Invalid object parameters - - - - fail -Your access privileges don't allow you to duplicate objects here. - - - - fail -You are not allowed to change this shape. - - - - fail -Your access privileges don't allow you to claim objects here. - - - - fail -Deed failed because you do not have permission to deed objects for your group. - - - - fail -Your access privileges don't allow you to buy objects here. - - - - fail -Cannot attach object because an avatar is sitting on it. - - - - fail -Trees and grasses cannot be worn as attachments. - - - - fail -Cannot attach group-owned objects. - - - - fail -Cannot attach objects that you don't own. - - - - fail -Cannot attach objects that contribute to navmesh. - - - - fail -Cannot attach object because you do not have permission to move it. - - - - fail -Not enough script resources available to attach object! - - - - fail -You can't drop objects here; try the Free Trial area. - - - - fail -You can't drop mesh attachments. Detach to inventory and then rez in world. - - - - fail -Failed to drop attachment: you don't have permission to drop there. - - - - fail -Failed to drop attachment: insufficient available land resource. - - - - fail -Failed to drop attachments: insufficient available resources. - - - - fail -Cannot drop object here. Parcel is full. - - - - fail -Can't touch/grab this object because you are banned from the land parcel. - - - - fail -Please narrow your delete parameters. - - - - fail -Unable to upload asset. - - - - fail -Could not find user to teleport home - - - - fail -godlike request failed - - - - fail -generic request failed - - - - fail -Unable to upload postcard. Try again later. - - - - fail -Unable to fetch inventory details for the group notice. - - - - fail -Unable to send group notice -- not permitted. - - - - fail -Unable to send group notice -- could not construct inventory. - - - - fail -Unable to parse inventory in notice. - - - - fail -Terrain upload failed. - - - - fail -Terrain file written. - - - - fail -Terrain file written, starting download... - - - - fail -Terrain baked. - - - - fail -Only the first 10 selected objects have been disabled. Refresh and make additional selections if required. - - - - fail -You need to update your viewer to buy this parcel. - - - - fail -You can't buy this land due to your maturity Rating. You may need to validate your age and/or install the latest Viewer. Please go to the Knowledge Base for details on accessing areas with this maturity Rating. - - - - fail -Unable to buy, this parcel is not for sale. - - - - fail -Unable to buy, the sale price or land area has changed. - - - - fail -You are not the authorized buyer for this parcel. - - - - fail -You cannot purchase this parcel because it is already awaiting purchase aut - - - - fail -You cannot build objects here because doing so would overflow the parcel. - - - - fail -You selected land with different owners. Please select a smaller area and try again. - - - - fail -Not enough leased parcels in selection to join. - - - - fail -Can't divide land.\nThere is more than one parcel selected.\nTry selecting a smaller piece of land. - - - - fail -Can't divide land.\nCan't find the parcel.\nPlease report with Help -> Reprt Bug... - - - - fail -Can't divide land. Whole parcel is selected.\nTry selecting a smaller piece of land. - - - - fail -Land has been divided. - - - - fail -You purchased a pass. - - - - fail -Region does not allow classified advertisements. - - - - fail -Your pass to this land is about to expire. - - - - fail -There is no suitable surface to sit on, try another spot. - - - - fail -No room to sit here, try another spot. - - - - fail -Autopilot canceled - - - - fail -Claim object failed because you don't have permission - - - - fail -Claim object failed because you don't have enough L$. - - - - fail -Cannot deed group-owned land. - - - - fail -Buy object failed because you don't have enough L$. - - - - fail -Buy inventory failed because you do not have enough L$ - - - - fail -You don't have enough L$ to buy a pass to this land. - - - - fail -Unable to buy pass right now. Try again later. - - - - fail -Can't create object because \nthe parcel is full. - - - - fail -Failed to place object at specified location. Please try again. - - - - fail -Unable to create landmark for event. - - - - fail -Your godlike powers break the freeze! - - - - fail -Request for special powers failed. This request has been logged. - - - - fail -The system is currently unable to process your request. The request timed out. - - - - fail -The system is unable to process your request. - - - - fail -Insufficient funds to create primitve. - - - - fail -Insufficient funds to create object. - - - - fail -Reset Home position since Home wasn't legal. - - - - fail -You cannot currently invite anyone to your location because the region is full. Try again later. - - - - fail -This region does not allow you to set your home location here. - - - - fail -You can only set your 'Home Location' on your land or at a mainland Infohub. - - - - fail -Home position set. - - - - fail -Cannot derez object due to inventory fault. - - - - fail -Cannot create requested inventory. - - - - fail -Cannot create requested inventory folder. - - - - fail -Cannot create that inventory. - - - - fail -Cannot create landmark. - - - - fail -Cannot create outfit right now. Try again in a minute. - - - - fail -Inventory is not for sale. - - - - fail -Unable to find inventory item. - - - - fail -Unable to find object. - - - - fail -Money transfers to objects are currently disabled in this region. - - - - fail -Could not figure out who to pay. - - - - fail -You cannot give L$ to public objects. - - - - fail -Inventory creation on in-world object failed. - - - - fail -An internal error prevented us from properly updating your viewer. The L$ balance or parcel holdings displayed in your viewer may not reflect your actual balance on the servers. - - - -- cgit v1.2.3 From 2ce44afc7f69ddf92b857c8999e255c528d2f393 Mon Sep 17 00:00:00 2001 From: Chris Baker Date: Sat, 26 Jan 2013 01:47:37 +0000 Subject: [MAINT-2233] Duplicate entries in notifications.xml - Removed duplicate entry from panel_preferences_general.xml --- .../skins/default/xui/en/panel_preferences_graphics1.xml | 13 ------------- 1 file changed, 13 deletions(-) (limited to 'indra/newview') diff --git a/indra/newview/skins/default/xui/en/panel_preferences_graphics1.xml b/indra/newview/skins/default/xui/en/panel_preferences_graphics1.xml index 849f3ef73d..7eb0fac2be 100644 --- a/indra/newview/skins/default/xui/en/panel_preferences_graphics1.xml +++ b/indra/newview/skins/default/xui/en/panel_preferences_graphics1.xml @@ -152,19 +152,6 @@ width="80"> Mid - - High - Date: Mon, 28 Jan 2013 10:15:10 -0800 Subject: For MAINT-2276 a workaround to unblock 3.4.5 beta review: ted --- indra/newview/llpaneloutfitedit.cpp | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) (limited to 'indra/newview') diff --git a/indra/newview/llpaneloutfitedit.cpp b/indra/newview/llpaneloutfitedit.cpp index 35e2e96bab..36234b9536 100644 --- a/indra/newview/llpaneloutfitedit.cpp +++ b/indra/newview/llpaneloutfitedit.cpp @@ -186,8 +186,11 @@ private: // Populate the menu with items like "New Skin", "New Pants", etc. static void populateCreateWearableSubmenus(LLMenuGL* menu) { - LLView* menu_clothes = gMenuHolder->getChildView("COF.Gear.New_Clothes", FALSE); - LLView* menu_bp = gMenuHolder->getChildView("COF.Geear.New_Body_Parts", FALSE); + // MAINT-2276...these menus are created as dummies because they are not available + // when this function is called. This prevents their parent from popping up later. + // + //LLView* menu_clothes = gMenuHolder->getChildView("COF.Gear.New_Clothes", FALSE); + //LLView* menu_bp = gMenuHolder->getChildView("COF.Geear.New_Body_Parts", FALSE); for (U8 i = LLWearableType::WT_SHAPE; i != (U8) LLWearableType::WT_COUNT; ++i) { @@ -200,8 +203,11 @@ private: p.on_click.function_name = "Wearable.Create"; p.on_click.parameter = LLSD(type_name); - LLView* parent = LLWearableType::getAssetType(type) == LLAssetType::AT_CLOTHING ? - menu_clothes : menu_bp; + //LLView* parent = LLWearableType::getAssetType(type) == LLAssetType::AT_CLOTHING ? menu_clothes : menu_bp; + // This is a work-around for MAINT-2276 wherein the parent toggleable menu does not appear + // It puts everything under one menu, but that menu appears, which is better than not. + // + LLView* parent = menu; LLUICtrlFactory::create(p, parent); } } -- cgit v1.2.3