Merge branch 'release/2024.08-DeltaFPS' of https://github.com/secondlife/viewer
# Conflicts: # indra/llcommon/llcallstack.h # indra/llcommon/llmemory.cpp # indra/newview/llviewerobject.cpp # indra/newview/llvoavatar.cpp # indra/newview/llvovolume.cppmaster
commit
033fd2e476
|
|
@ -34,7 +34,6 @@
|
|||
#include "llpolymorph.h"
|
||||
#include "llwearable.h"
|
||||
#include "llfasttimer.h"
|
||||
#include "llcallstack.h"
|
||||
|
||||
#include "llpolyskeletaldistortion.h"
|
||||
|
||||
|
|
@ -206,11 +205,6 @@ void LLPolySkeletalDistortion::apply( ESex avatar_sex )
|
|||
// needed?
|
||||
// joint->storeScaleForReset( newScale );
|
||||
|
||||
// BENTO for detailed stack tracing of params.
|
||||
std::stringstream ostr;
|
||||
ostr << "LLPolySkeletalDistortion::apply, id " << getID() << " " << getName() << " effective wt " << effective_weight << " last wt " << mLastWeight << " scaleDelta " << scaleDelta << " offset " << offset;
|
||||
LLScopedContextString str(ostr.str());
|
||||
|
||||
joint->setScale(newScale, true);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -32,7 +32,6 @@
|
|||
#include "lljoint.h"
|
||||
|
||||
#include "llmath.h"
|
||||
#include "llcallstack.h"
|
||||
#include <boost/algorithm/string.hpp>
|
||||
|
||||
//<FS:ND> Query by JointKey rather than just a string, the key can be a U32 index for faster lookup
|
||||
|
|
@ -363,7 +362,6 @@ void LLJoint::setPosition( const LLVector3& requested_pos, bool apply_attachment
|
|||
{
|
||||
if (pos != active_override && do_debug_joint(getName()))
|
||||
{
|
||||
LLScopedContextString str("setPosition");
|
||||
LL_DEBUGS("Avatar") << " joint " << getName() << " requested_pos " << requested_pos
|
||||
<< " overriden by attachment " << active_override << LL_ENDL;
|
||||
}
|
||||
|
|
@ -371,12 +369,7 @@ void LLJoint::setPosition( const LLVector3& requested_pos, bool apply_attachment
|
|||
}
|
||||
if ((pos != getPosition()) && do_debug_joint(getName()))
|
||||
{
|
||||
LLScopedContextString str("setPosition");
|
||||
LLCallStack cs;
|
||||
LLContextStatus con_status;
|
||||
LL_DEBUGS("Avatar") << " joint " << getName() << " set pos " << pos << LL_ENDL;
|
||||
LL_DEBUGS("Avatar") << "CONTEXT:\n" << "====================\n" << con_status << "====================" << LL_ENDL;
|
||||
LL_DEBUGS("Avatar") << "STACK:\n" << "====================\n" << cs << "====================" << LL_ENDL;
|
||||
}
|
||||
if (pos != getPosition())
|
||||
{
|
||||
|
|
@ -900,7 +893,6 @@ void LLJoint::setScale( const LLVector3& requested_scale, bool apply_attachment_
|
|||
{
|
||||
if (scale != active_override && do_debug_joint(getName()))
|
||||
{
|
||||
LLScopedContextString str("setScale");
|
||||
LL_DEBUGS("Avatar") << " joint " << getName() << " requested_scale " << requested_scale
|
||||
<< " overriden by attachment " << active_override << LL_ENDL;
|
||||
}
|
||||
|
|
@ -908,12 +900,7 @@ void LLJoint::setScale( const LLVector3& requested_scale, bool apply_attachment_
|
|||
}
|
||||
if ((mXform.getScale() != scale) && do_debug_joint(getName()))
|
||||
{
|
||||
LLScopedContextString str("setScale");
|
||||
LLCallStack cs;
|
||||
LLContextStatus con_status;
|
||||
LL_DEBUGS("Avatar") << " joint " << getName() << " set scale " << scale << LL_ENDL;
|
||||
LL_DEBUGS("Avatar") << "CONTEXT:\n" << "====================\n" << con_status << LL_ENDL;
|
||||
LL_DEBUGS("Avatar") << "STACK:\n" << "====================\n" << cs << "====================" << LL_ENDL;
|
||||
}
|
||||
mXform.setScale(scale);
|
||||
touch();
|
||||
|
|
|
|||
|
|
@ -26,7 +26,6 @@ set(llcommon_SOURCE_FILES
|
|||
llbase64.cpp
|
||||
llbitpack.cpp
|
||||
llcallbacklist.cpp
|
||||
llcallstack.cpp
|
||||
llcleanup.cpp
|
||||
llcommon.cpp
|
||||
llcommonutils.cpp
|
||||
|
|
@ -134,7 +133,6 @@ set(llcommon_HEADER_FILES
|
|||
llbitpack.h
|
||||
llboost.h
|
||||
llcallbacklist.h
|
||||
llcallstack.h
|
||||
llcleanup.h
|
||||
llcommon.h
|
||||
llcommonutils.h
|
||||
|
|
|
|||
|
|
@ -1,188 +0,0 @@
|
|||
/**
|
||||
* @file llcallstack.cpp
|
||||
* @brief run-time extraction of the current callstack
|
||||
*
|
||||
* $LicenseInfo:firstyear=2016&license=viewerlgpl$
|
||||
* Second Life Viewer Source Code
|
||||
* Copyright (C) 2016, 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
|
||||
* License as published by the Free Software Foundation;
|
||||
* version 2.1 of the License only.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*
|
||||
* Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
|
||||
* $/LicenseInfo$
|
||||
*/
|
||||
|
||||
#include "linden_common.h"
|
||||
|
||||
#include "llcommon.h"
|
||||
#include "llcallstack.h"
|
||||
#include "StackWalker.h"
|
||||
#include "llthreadlocalstorage.h"
|
||||
|
||||
#if LL_WINDOWS
|
||||
class LLCallStackImpl: public StackWalker
|
||||
{
|
||||
public:
|
||||
LLCallStackImpl():
|
||||
StackWalker(false,0) // non-verbose, options = 0
|
||||
{
|
||||
}
|
||||
~LLCallStackImpl()
|
||||
{
|
||||
}
|
||||
void getStack(std::vector<std::string>& stack, S32 skip_count=0, bool verbose=false)
|
||||
{
|
||||
m_stack.clear();
|
||||
ShowCallstack(verbose);
|
||||
// Skip the first few lines because they're just bookkeeping for LLCallStack,
|
||||
// plus any additional lines requested to skip.
|
||||
S32 first_line = skip_count + 3;
|
||||
for (S32 i=first_line; i<m_stack.size(); ++i)
|
||||
{
|
||||
stack.push_back(m_stack[i]);
|
||||
}
|
||||
}
|
||||
protected:
|
||||
virtual void OnOutput(LPCSTR szText)
|
||||
{
|
||||
m_stack.push_back(szText);
|
||||
}
|
||||
std::vector<std::string> m_stack;
|
||||
};
|
||||
#else
|
||||
// Stub - not implemented currently on other platforms.
|
||||
class LLCallStackImpl
|
||||
{
|
||||
public:
|
||||
LLCallStackImpl() {}
|
||||
~LLCallStackImpl() {}
|
||||
void getStack(std::vector<std::string>& stack, S32 skip_count=0, bool verbose=false)
|
||||
{
|
||||
stack.clear();
|
||||
}
|
||||
};
|
||||
#endif
|
||||
|
||||
LLCallStackImpl *LLCallStack::s_impl = NULL;
|
||||
|
||||
LLCallStack::LLCallStack(S32 skip_count, bool verbose):
|
||||
m_skipCount(skip_count),
|
||||
m_verbose(verbose)
|
||||
{
|
||||
if (!s_impl)
|
||||
{
|
||||
s_impl = new LLCallStackImpl;
|
||||
}
|
||||
LLTimer t;
|
||||
s_impl->getStack(m_strings, m_skipCount, m_verbose);
|
||||
}
|
||||
|
||||
bool LLCallStack::contains(const std::string& str)
|
||||
{
|
||||
for (const std::string& src_str : m_strings)
|
||||
{
|
||||
if (src_str.find(str) != std::string::npos)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
std::ostream& operator<<(std::ostream& s, const LLCallStack& call_stack)
|
||||
{
|
||||
#ifndef LL_RELEASE_FOR_DOWNLOAD
|
||||
for (const std::string& str : call_stack.m_strings)
|
||||
{
|
||||
s << str;
|
||||
}
|
||||
#else
|
||||
s << "UNAVAILABLE IN RELEASE";
|
||||
#endif
|
||||
return s;
|
||||
}
|
||||
|
||||
LLContextStrings::LLContextStrings()
|
||||
{
|
||||
}
|
||||
|
||||
// static
|
||||
LLContextStrings* LLContextStrings::getThreadLocalInstance()
|
||||
{
|
||||
LLContextStrings *cons = LLThreadLocalSingletonPointer<LLContextStrings>::getInstance();
|
||||
if (!cons)
|
||||
{
|
||||
LLThreadLocalSingletonPointer<LLContextStrings>::setInstance(new LLContextStrings);
|
||||
}
|
||||
return LLThreadLocalSingletonPointer<LLContextStrings>::getInstance();
|
||||
}
|
||||
|
||||
// static
|
||||
void LLContextStrings::addContextString(const std::string& str)
|
||||
{
|
||||
LLContextStrings *cons = getThreadLocalInstance();
|
||||
//LL_INFOS() << "CTX " << (S32)cons << " ADD " << str << " CNT " << cons->m_contextStrings[str] << LL_ENDL;
|
||||
cons->m_contextStrings[str]++;
|
||||
}
|
||||
|
||||
// static
|
||||
void LLContextStrings::removeContextString(const std::string& str)
|
||||
{
|
||||
LLContextStrings *cons = getThreadLocalInstance();
|
||||
cons->m_contextStrings[str]--;
|
||||
//LL_INFOS() << "CTX " << (S32)cons << " REMOVE " << str << " CNT " << cons->m_contextStrings[str] << LL_ENDL;
|
||||
if (cons->m_contextStrings[str] == 0)
|
||||
{
|
||||
cons->m_contextStrings.erase(str);
|
||||
}
|
||||
}
|
||||
|
||||
// static
|
||||
bool LLContextStrings::contains(const std::string& str)
|
||||
{
|
||||
const std::map<std::string,S32>& strings =
|
||||
LLThreadLocalSingletonPointer<LLContextStrings>::getInstance()->m_contextStrings;
|
||||
for (const std::map<std::string,S32>::value_type& str_pair : strings)
|
||||
{
|
||||
if (str_pair.first.find(str) != std::string::npos)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
// static
|
||||
void LLContextStrings::output(std::ostream& os)
|
||||
{
|
||||
const std::map<std::string,S32>& strings =
|
||||
LLThreadLocalSingletonPointer<LLContextStrings>::getInstance()->m_contextStrings;
|
||||
for (const std::map<std::string,S32>::value_type& str_pair : strings)
|
||||
{
|
||||
os << str_pair.first << "[" << str_pair.second << "]" << "\n";
|
||||
}
|
||||
}
|
||||
|
||||
// static
|
||||
std::ostream& operator<<(std::ostream& s, const LLContextStatus& context_status)
|
||||
{
|
||||
LLThreadLocalSingletonPointer<LLContextStrings>::getInstance()->output(s);
|
||||
return s;
|
||||
}
|
||||
|
||||
bool LLContextStatus::contains(const std::string& str)
|
||||
{
|
||||
return LLThreadLocalSingletonPointer<LLContextStrings>::getInstance()->contains(str);
|
||||
}
|
||||
|
|
@ -1,93 +0,0 @@
|
|||
/**
|
||||
* @file llcallstack.h
|
||||
* @brief run-time extraction of the current callstack
|
||||
*
|
||||
* $LicenseInfo:firstyear=2016&license=viewerlgpl$
|
||||
* Second Life Viewer Source Code
|
||||
* Copyright (C) 2016, 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
|
||||
* License as published by the Free Software Foundation;
|
||||
* version 2.1 of the License only.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*
|
||||
* Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
|
||||
* $/LicenseInfo$
|
||||
*/
|
||||
|
||||
#include <map>
|
||||
|
||||
class LLCallStackImpl;
|
||||
|
||||
class LLCallStack
|
||||
{
|
||||
public:
|
||||
LLCallStack(S32 skip_count=0, bool verbose=false);
|
||||
std::vector<std::string> m_strings;
|
||||
bool m_verbose;
|
||||
bool contains(const std::string& str);
|
||||
private:
|
||||
static LLCallStackImpl *s_impl;
|
||||
S32 m_skipCount;
|
||||
};
|
||||
|
||||
LL_COMMON_API std::ostream& operator<<(std::ostream& s, const LLCallStack& call_stack);
|
||||
|
||||
class LLContextStrings
|
||||
{
|
||||
public:
|
||||
LLContextStrings();
|
||||
static void addContextString(const std::string& str);
|
||||
static void removeContextString(const std::string& str);
|
||||
static void output(std::ostream& os);
|
||||
static LLContextStrings* getThreadLocalInstance();
|
||||
static bool contains(const std::string& str);
|
||||
private:
|
||||
std::map<std::string,S32> m_contextStrings;
|
||||
};
|
||||
|
||||
class LLScopedContextString
|
||||
{
|
||||
public:
|
||||
LLScopedContextString(const std::string& str):
|
||||
m_str(str)
|
||||
{
|
||||
LLContextStrings::addContextString(m_str);
|
||||
}
|
||||
~LLScopedContextString()
|
||||
{
|
||||
LLContextStrings::removeContextString(m_str);
|
||||
}
|
||||
private:
|
||||
std::string m_str;
|
||||
};
|
||||
|
||||
// Mostly exists as a class to hook an ostream override to.
|
||||
struct LLContextStatus
|
||||
{
|
||||
bool contains(const std::string& str);
|
||||
};
|
||||
|
||||
LL_COMMON_API std::ostream& operator<<(std::ostream& s, const LLContextStatus& context_status);
|
||||
|
||||
// <FS:Ansariel> Restore this: Don't need this in actual relase builds
|
||||
#ifdef LL_RELEASE_FOR_DOWNLOAD
|
||||
#define dumpStack(tag)
|
||||
#else
|
||||
#define dumpStack(tag) \
|
||||
LL_DEBUGS(tag) << "STACK:\n" \
|
||||
<< "====================\n" \
|
||||
<< LLCallStack() \
|
||||
<< "====================" \
|
||||
<< LL_ENDL;
|
||||
#endif
|
||||
// </FS:Ansariel>
|
||||
|
|
@ -129,7 +129,7 @@ void LLMemory::updateMemoryInfo()
|
|||
{
|
||||
// Our Windows definition of PagefileUsage is documented by Microsoft as "the total amount of
|
||||
// memory that the memory manager has committed for a running process", which is rss.
|
||||
sAllocatedPageSizeInKB = U64Bytes(info.resident_size);
|
||||
sAllocatedPageSizeInKB = U32Kilobytes::convert(U64Bytes(info.resident_size));
|
||||
|
||||
// Activity Monitor => Inspect Process => Real Memory Size appears to report resident_size
|
||||
// Activity monitor => main window memory column appears to report phys_footprint, which spot checks as at least 30% less.
|
||||
|
|
@ -139,7 +139,7 @@ void LLMemory::updateMemoryInfo()
|
|||
// reported for the app by the Memory Monitor in Instruments.' It is still about 8% bigger than phys_footprint.
|
||||
//
|
||||
// (On Windows, we use WorkingSetSize.)
|
||||
sAllocatedMemInKB = U64Bytes(info.resident_size - info.reusable);
|
||||
sAllocatedMemInKB = U32Kilobytes::convert(U64Bytes(info.resident_size - info.reusable));
|
||||
}
|
||||
else
|
||||
{
|
||||
|
|
|
|||
|
|
@ -1139,8 +1139,6 @@ namespace
|
|||
{
|
||||
const size_t size(sizeof(T));
|
||||
|
||||
LL_DEBUGS("TEXTUREENTRY") << "Request to read items of size " << size << " with swizzle " << type << " froum buffer sized " << (source_end - source) << LL_ENDL;
|
||||
|
||||
if ((source + size + 1) > source_end)
|
||||
{
|
||||
// we add 1 above to take into account the byte that we know must follow the value.
|
||||
|
|
|
|||
|
|
@ -854,11 +854,6 @@ bool LLFace::genVolumeBBoxes(const LLVolume &volume, S32 f,
|
|||
|
||||
const LLVolumeFace &face = volume.getVolumeFace(f);
|
||||
|
||||
LL_DEBUGS("RiggedBox") << "updating extents for face " << f
|
||||
<< " starting extents " << mExtents[0] << ", " << mExtents[1]
|
||||
<< " starting vf extents " << face.mExtents[0] << ", " << face.mExtents[1]
|
||||
<< " num verts " << face.mNumVertices << LL_ENDL;
|
||||
|
||||
// MAINT-8264 - stray vertices, especially in low LODs, cause bounding box errors.
|
||||
if (face.mNumVertices < 3)
|
||||
{
|
||||
|
|
@ -877,21 +872,14 @@ bool LLFace::genVolumeBBoxes(const LLVolume &volume, S32 f,
|
|||
|
||||
matMulBoundBox(mat_vert, face.mExtents, mExtents);
|
||||
|
||||
LL_DEBUGS("RiggedBox") << "updated extents for face " << f
|
||||
<< " bbox gave extents " << mExtents[0] << ", " << mExtents[1] << LL_ENDL;
|
||||
|
||||
if (!mDrawablep->isActive())
|
||||
{ // Shift position for region
|
||||
LLVector4a offset;
|
||||
offset.load3(mDrawablep->getRegion()->getOriginAgent().mV);
|
||||
mExtents[0].add(offset);
|
||||
mExtents[1].add(offset);
|
||||
LL_DEBUGS("RiggedBox") << "updating extents for face " << f
|
||||
<< " not active, added offset " << offset << LL_ENDL;
|
||||
}
|
||||
|
||||
LL_DEBUGS("RiggedBox") << "updated extents for face " << f
|
||||
<< " to " << mExtents[0] << ", " << mExtents[1] << LL_ENDL;
|
||||
LLVector4a t;
|
||||
t.setAdd(mExtents[0],mExtents[1]);
|
||||
t.mul(0.5f);
|
||||
|
|
@ -2343,13 +2331,6 @@ bool LLFace::calcPixelArea(F32& cos_angle_to_view_dir, F32& radius)
|
|||
|
||||
F32 dist = lookAt.getLength3().getF32();
|
||||
dist = llmax(dist-size.getLength3().getF32(), 0.001f);
|
||||
//ramp down distance for nearby objects
|
||||
if (dist < 16.f)
|
||||
{
|
||||
dist /= 16.f;
|
||||
dist *= dist;
|
||||
dist *= 16.f;
|
||||
}
|
||||
|
||||
lookAt.normalize3fast() ;
|
||||
|
||||
|
|
|
|||
|
|
@ -618,13 +618,14 @@ std::string construct_start_string()
|
|||
{
|
||||
// a startup URL was specified
|
||||
LLVector3 position = start_slurl.getPosition();
|
||||
std::string unescaped_start =
|
||||
// NOTE - do not xml escape here, will get escaped properly later by LLSD::asXMLRPCValue()
|
||||
// see secondlife/viewer#2395
|
||||
start =
|
||||
STRINGIZE( "uri:"
|
||||
<< start_slurl.getRegion() << "&"
|
||||
<< position[VX] << "&"
|
||||
<< position[VY] << "&"
|
||||
<< position[VZ]);
|
||||
start = LLStringFn::xml_encode(unescaped_start, true);
|
||||
break;
|
||||
}
|
||||
case LLSLURL::HOME_LOCATION:
|
||||
|
|
|
|||
|
|
@ -29,7 +29,6 @@
|
|||
#include "llspatialpartition.h"
|
||||
|
||||
#include "llappviewer.h"
|
||||
#include "llcallstack.h"
|
||||
#include "lltexturecache.h"
|
||||
#include "lltexturefetch.h"
|
||||
#include "llimageworker.h"
|
||||
|
|
@ -763,14 +762,6 @@ bool LLSpatialGroup::changeLOD()
|
|||
|
||||
if (fabsf(ratio) >= getSpatialPartition()->mSlopRatio)
|
||||
{
|
||||
LL_DEBUGS("RiggedBox") << "changeLOD true because of ratio compare "
|
||||
<< fabsf(ratio) << " " << getSpatialPartition()->mSlopRatio << LL_ENDL;
|
||||
LL_DEBUGS("RiggedBox") << "sg " << this << "\nmDistance " << mDistance
|
||||
<< " mLastUpdateDistance " << mLastUpdateDistance
|
||||
<< " mRadius " << mRadius
|
||||
<< " fab ratio " << fabsf(ratio)
|
||||
<< " slop " << getSpatialPartition()->mSlopRatio << LL_ENDL;
|
||||
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -28,7 +28,6 @@
|
|||
|
||||
#include "llappviewer.h"
|
||||
#include "llstartup.h"
|
||||
#include "llcallstack.h"
|
||||
|
||||
#if LL_WINDOWS
|
||||
# include <process.h> // _spawnl()
|
||||
|
|
|
|||
|
|
@ -103,7 +103,6 @@
|
|||
#include "llfloaterperms.h"
|
||||
#include "llvocache.h"
|
||||
#include "llcleanup.h"
|
||||
#include "llcallstack.h"
|
||||
#include "llmeshrepository.h"
|
||||
#include "llgltfmateriallist.h"
|
||||
#include "llgl.h"
|
||||
|
|
@ -164,7 +163,6 @@ LLViewerObject *LLViewerObject::createObject(const LLUUID &id, const LLPCode pco
|
|||
{
|
||||
LL_PROFILE_ZONE_SCOPED;
|
||||
//LL_DEBUGS("ObjectUpdate") << "creating " << id << LL_ENDL;
|
||||
//dumpStack("ObjectUpdateStack");
|
||||
|
||||
LLViewerObject *res = NULL;
|
||||
|
||||
|
|
@ -1219,7 +1217,6 @@ U32 LLViewerObject::processUpdateMessage(LLMessageSystem *mesgsys,
|
|||
LL_DEBUGS_ONCE("SceneLoadTiming") << "Received viewer object data" << LL_ENDL;
|
||||
|
||||
LL_DEBUGS("ObjectUpdate") << " mesgsys " << mesgsys << " dp " << dp << " id " << getID() << " update_type " << (S32) update_type << LL_ENDL;
|
||||
dumpStack("ObjectUpdateStack");
|
||||
|
||||
// The new OBJECTDATA_FIELD_SIZE_124, OBJECTDATA_FIELD_SIZE_140, OBJECTDATA_FIELD_SIZE_80
|
||||
// and OBJECTDATA_FIELD_SIZE_64 lengths should be supported in the existing cases below.
|
||||
|
|
|
|||
|
|
@ -68,7 +68,6 @@
|
|||
#include "u64.h"
|
||||
#include "llviewertexturelist.h"
|
||||
#include "lldatapacker.h"
|
||||
#include "llcallstack.h"
|
||||
#ifdef LL_USESYSTEMLIBS
|
||||
#include <zlib.h>
|
||||
#else
|
||||
|
|
@ -261,7 +260,6 @@ void LLViewerObjectList::processUpdateCore(LLViewerObject* objectp,
|
|||
// ignore returned flags
|
||||
LL_DEBUGS("ObjectUpdate") << "uuid " << objectp->mID << " calling processUpdateMessage "
|
||||
<< objectp << " just_created " << just_created << " from_cache " << from_cache << " msg " << msg << LL_ENDL;
|
||||
dumpStack("ObjectUpdateStack");
|
||||
|
||||
objectp->processUpdateMessage(msg, user_data, i, update_type, dpp);
|
||||
|
||||
|
|
@ -410,7 +408,6 @@ LLViewerObject* LLViewerObjectList::processObjectUpdateFromCache(LLVOCacheEntry*
|
|||
objectp = createObjectFromCache(pcode, regionp, fullid, entry->getLocalID());
|
||||
|
||||
LL_DEBUGS("ObjectUpdate") << "uuid " << fullid << " created objectp " << objectp << LL_ENDL;
|
||||
dumpStack("ObjectUpdateStack");
|
||||
|
||||
if (!objectp)
|
||||
{
|
||||
|
|
@ -605,7 +602,6 @@ void LLViewerObjectList::processObjectUpdate(LLMessageSystem *mesgsys,
|
|||
LL_DEBUGS("ObjectUpdate") << "uuid " << fullid << " objectp " << objectp
|
||||
<< " update_cache " << (S32) update_cache << " compressed " << compressed
|
||||
<< " update_type " << update_type << LL_ENDL;
|
||||
dumpStack("ObjectUpdateStack");
|
||||
|
||||
if(update_cache)
|
||||
{
|
||||
|
|
@ -697,7 +693,6 @@ void LLViewerObjectList::processObjectUpdate(LLMessageSystem *mesgsys,
|
|||
objectp = createObject(pcode, regionp, fullid, local_id, gMessageSystem->getSender());
|
||||
|
||||
LL_DEBUGS("ObjectUpdate") << "creating object " << fullid << " result " << objectp << LL_ENDL;
|
||||
dumpStack("ObjectUpdateStack");
|
||||
|
||||
if (!objectp)
|
||||
{
|
||||
|
|
@ -795,7 +790,6 @@ void LLViewerObjectList::processCachedObjectUpdate(LLMessageSystem *mesgsys,
|
|||
mesgsys->getU32Fast(_PREHASH_ObjectData, _PREHASH_UpdateFlags, flags, i);
|
||||
|
||||
LL_DEBUGS("ObjectUpdate") << "got probe for id " << id << " crc " << crc << LL_ENDL;
|
||||
dumpStack("ObjectUpdateStack");
|
||||
|
||||
// Lookup data packer and add this id to cache miss lists if necessary.
|
||||
U8 cache_miss_type = LLViewerRegion::CACHE_MISS_TYPE_NONE;
|
||||
|
|
@ -1482,7 +1476,6 @@ void LLViewerObjectList::cleanupReferences(LLViewerObject *objectp)
|
|||
// Remove from object map so noone can look it up.
|
||||
|
||||
LL_DEBUGS("ObjectUpdate") << " dereferencing id " << objectp->mID << LL_ENDL;
|
||||
dumpStack("ObjectUpdateStack");
|
||||
|
||||
mUUIDObjectMap.erase(objectp->mID);
|
||||
|
||||
|
|
@ -2163,7 +2156,6 @@ LLViewerObject *LLViewerObjectList::createObjectFromCache(const LLPCode pcode, L
|
|||
llassert_always(uuid.notNull());
|
||||
|
||||
LL_DEBUGS("ObjectUpdate") << "creating " << uuid << " local_id " << local_id << LL_ENDL;
|
||||
dumpStack("ObjectUpdateStack");
|
||||
|
||||
LLViewerObject *objectp = LLViewerObject::createObject(uuid, pcode, regionp);
|
||||
if (!objectp)
|
||||
|
|
@ -2213,7 +2205,6 @@ LLViewerObject *LLViewerObjectList::createObject(const LLPCode pcode, LLViewerRe
|
|||
}
|
||||
|
||||
LL_DEBUGS("ObjectUpdate") << "createObject creating " << fullid << LL_ENDL;
|
||||
dumpStack("ObjectUpdateStack");
|
||||
|
||||
LLViewerObject *objectp = LLViewerObject::createObject(fullid, pcode, regionp);
|
||||
if (!objectp)
|
||||
|
|
|
|||
|
|
@ -82,7 +82,6 @@
|
|||
#include "llcoros.h"
|
||||
#include "lleventcoro.h"
|
||||
#include "llcorehttputil.h"
|
||||
#include "llcallstack.h"
|
||||
#include "llsettingsdaycycle.h"
|
||||
|
||||
#include <boost/regex.hpp>
|
||||
|
|
@ -2921,7 +2920,6 @@ LLViewerRegion::eCacheUpdateResult LLViewerRegion::cacheFullUpdate(LLDataPackerB
|
|||
if (entry->getCRC() == crc)
|
||||
{
|
||||
LL_DEBUGS("AnimatedObjects") << " got dupe for local_id " << local_id << LL_ENDL;
|
||||
dumpStack("AnimatedObjectsStack");
|
||||
|
||||
// Record a hit
|
||||
entry->recordDupe();
|
||||
|
|
@ -2930,7 +2928,6 @@ LLViewerRegion::eCacheUpdateResult LLViewerRegion::cacheFullUpdate(LLDataPackerB
|
|||
else //CRC changed
|
||||
{
|
||||
LL_DEBUGS("AnimatedObjects") << " got update for local_id " << local_id << LL_ENDL;
|
||||
dumpStack("AnimatedObjectsStack");
|
||||
|
||||
// Update the cache entry
|
||||
entry->updateEntry(crc, dp);
|
||||
|
|
@ -2943,7 +2940,6 @@ LLViewerRegion::eCacheUpdateResult LLViewerRegion::cacheFullUpdate(LLDataPackerB
|
|||
else
|
||||
{
|
||||
LL_DEBUGS("AnimatedObjects") << " got first notification for local_id " << local_id << LL_ENDL;
|
||||
dumpStack("AnimatedObjectsStack");
|
||||
|
||||
// we haven't seen this object before
|
||||
// Create new entry and add to map
|
||||
|
|
|
|||
|
|
@ -564,7 +564,37 @@ void LLViewerTexture::updateClass()
|
|||
|
||||
was_low = is_low;
|
||||
|
||||
sDesiredDiscardBias = llclamp(sDesiredDiscardBias, 1.f, 3.f);
|
||||
|
||||
// set to max discard bias if the window has been backgrounded for a while
|
||||
static bool was_backgrounded = false;
|
||||
static LLFrameTimer backgrounded_timer;
|
||||
|
||||
bool in_background = (gViewerWindow && !gViewerWindow->getWindow()->getVisible()) || !gFocusMgr.getAppHasFocus();
|
||||
|
||||
if (in_background)
|
||||
{
|
||||
if (backgrounded_timer.getElapsedTimeF32() > 10.f)
|
||||
{
|
||||
if (!was_backgrounded)
|
||||
{
|
||||
LL_INFOS() << "Viewer is backgrounded, freeing up video memory." << LL_ENDL;
|
||||
}
|
||||
was_backgrounded = true;
|
||||
sDesiredDiscardBias = 4.f;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
backgrounded_timer.reset();
|
||||
if (was_backgrounded)
|
||||
{ // if the viewer was backgrounded
|
||||
LL_INFOS() << "Viewer is no longer backgrounded, resuming normal texture usage." << LL_ENDL;
|
||||
was_backgrounded = false;
|
||||
sDesiredDiscardBias = 1.f;
|
||||
}
|
||||
}
|
||||
|
||||
sDesiredDiscardBias = llclamp(sDesiredDiscardBias, 1.f, 4.f);
|
||||
|
||||
LLViewerTexture::sFreezeImageUpdates = false;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -149,6 +149,8 @@ public:
|
|||
|
||||
virtual F32 getMaxVirtualSize() ;
|
||||
|
||||
LLFrameTimer* getLastReferencedTimer() { return &mLastReferencedTimer; }
|
||||
|
||||
S32 getFullWidth() const { return mFullWidth; }
|
||||
S32 getFullHeight() const { return mFullHeight; }
|
||||
/*virtual*/ void setKnownDrawSize(S32 width, S32 height);
|
||||
|
|
@ -200,6 +202,7 @@ protected:
|
|||
mutable F32 mMaxVirtualSize = 0.f; // The largest virtual size of the image, in pixels - how much data to we need?
|
||||
mutable S32 mMaxVirtualSizeResetCounter;
|
||||
mutable S32 mMaxVirtualSizeResetInterval;
|
||||
LLFrameTimer mLastReferencedTimer;
|
||||
|
||||
ll_face_list_t mFaceList[LLRender::NUM_TEXTURE_CHANNELS]; //reverse pointer pointing to the faces using this image as texture
|
||||
U32 mNumFaces[LLRender::NUM_TEXTURE_CHANNELS];
|
||||
|
|
@ -608,10 +611,7 @@ public:
|
|||
/*virtual*/ void addFace(U32 ch, LLFace* facep) ;
|
||||
/*virtual*/ void removeFace(U32 ch, LLFace* facep) ;
|
||||
|
||||
/*virtual*/ F32 getMaxVirtualSize() ;
|
||||
|
||||
// get the timer that tracks the last time reinit was called
|
||||
LLFrameTimer* getLastReferencedTimer() { return &mLastReferencedTimer; }
|
||||
/*virtual*/ F32 getMaxVirtualSize();
|
||||
|
||||
private:
|
||||
void switchTexture(U32 ch, LLFace* facep) ;
|
||||
|
|
@ -633,9 +633,6 @@ private:
|
|||
bool mIsPlaying ;
|
||||
U32 mUpdateVirtualSizeTime ;
|
||||
|
||||
// tracks last time reinit was called
|
||||
LLFrameTimer mLastReferencedTimer;
|
||||
|
||||
public:
|
||||
static void updateClass() ;
|
||||
static void cleanUpClass() ;
|
||||
|
|
|
|||
|
|
@ -902,12 +902,9 @@ void LLViewerTextureList::updateImageDecodePriority(LLViewerFetchedTexture* imag
|
|||
static LLCachedControl<F32> texture_scale_min(gSavedSettings, "TextureScaleMinAreaFactor", 0.04f);
|
||||
static LLCachedControl<F32> texture_scale_max(gSavedSettings, "TextureScaleMaxAreaFactor", 25.f);
|
||||
|
||||
if (imagep->getType() == LLViewerTexture::LOD_TEXTURE && imagep->getBoostLevel() == LLViewerTexture::BOOST_NONE)
|
||||
{ // reset max virtual size for unboosted LOD_TEXTURES
|
||||
// this is an alternative to decaying mMaxVirtualSize over time
|
||||
// that keeps textures from continously downrezzing and uprezzing in the background
|
||||
imagep->mMaxVirtualSize = 0.f;
|
||||
}
|
||||
|
||||
F32 max_vsize = 0.f;
|
||||
bool on_screen = false;
|
||||
|
||||
LL_PROFILE_ZONE_SCOPED_CATEGORY_TEXTURE;
|
||||
for (U32 i = 0; i < LLRender::NUM_TEXTURE_CHANNELS; ++i)
|
||||
|
|
@ -924,6 +921,8 @@ void LLViewerTextureList::updateImageDecodePriority(LLViewerFetchedTexture* imag
|
|||
F32 vsize = face->getPixelArea(); // <FS> Particles do not rez properly
|
||||
bool in_frustum = face->calcPixelArea(cos_angle_to_view_dir, radius);
|
||||
|
||||
on_screen = in_frustum;
|
||||
|
||||
// Scale desired texture resolution higher or lower depending on texture scale
|
||||
//
|
||||
// Minimum usage examples: a 1024x1024 texture with aplhabet, runing string
|
||||
|
|
@ -949,15 +948,40 @@ void LLViewerTextureList::updateImageDecodePriority(LLViewerFetchedTexture* imag
|
|||
if (apply_bias)
|
||||
{
|
||||
F32 bias = powf(4, LLViewerTexture::sDesiredDiscardBias - 1.f);
|
||||
bias = (F32)llround(bias);
|
||||
bias = (F32) llround(bias);
|
||||
vsize /= bias;
|
||||
}
|
||||
|
||||
imagep->addTextureStats(vsize);
|
||||
max_vsize = llmax(max_vsize, vsize);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (imagep->getType() == LLViewerTexture::LOD_TEXTURE && imagep->getBoostLevel() == LLViewerTexture::BOOST_NONE)
|
||||
{ // conditionally reset max virtual size for unboosted LOD_TEXTURES
|
||||
// this is an alternative to decaying mMaxVirtualSize over time
|
||||
// that keeps textures from continously downrezzing and uprezzing in the background
|
||||
|
||||
if (LLViewerTexture::sDesiredDiscardBias > 2.f ||
|
||||
(!on_screen && LLViewerTexture::sDesiredDiscardBias > 1.f))
|
||||
{
|
||||
imagep->mMaxVirtualSize = 0.f;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
imagep->addTextureStats(max_vsize);
|
||||
|
||||
#if 0
|
||||
imagep->setDebugText(llformat("%d/%d - %d/%d -- %d/%d",
|
||||
(S32)sqrtf(max_vsize),
|
||||
(S32)sqrtf(imagep->mMaxVirtualSize),
|
||||
imagep->getDiscardLevel(),
|
||||
imagep->getDesiredDiscardLevel(),
|
||||
imagep->getWidth(),
|
||||
imagep->getFullWidth()));
|
||||
#endif
|
||||
|
||||
// make sure to addTextureStats for any spotlights that are using this texture
|
||||
for (S32 vi = 0; vi < imagep->getNumVolumes(LLRender::LIGHT_TEX); ++vi)
|
||||
{
|
||||
|
|
@ -968,18 +992,26 @@ void LLViewerTextureList::updateImageDecodePriority(LLViewerFetchedTexture* imag
|
|||
F32 max_inactive_time = 20.f; // inactive time before deleting saved raw image
|
||||
S32 min_refs = 3; // 1 for mImageList, 1 for mUUIDMap, and 1 for "entries" in updateImagesFetchTextures
|
||||
|
||||
F32 lazy_flush_timeout = 30.f; // delete unused images after 30 seconds
|
||||
|
||||
//
|
||||
// Flush formatted images using a lazy flush
|
||||
//
|
||||
S32 num_refs = imagep->getNumRefs();
|
||||
if (num_refs <= min_refs && flush_images)
|
||||
{
|
||||
// Remove the unused image from the image list
|
||||
deleteImage(imagep);
|
||||
return;
|
||||
if (imagep->getLastReferencedTimer()->getElapsedTimeF32() > lazy_flush_timeout)
|
||||
{
|
||||
// Remove the unused image from the image list
|
||||
deleteImage(imagep);
|
||||
return;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
// still referenced outside of image list, reset timer
|
||||
imagep->getLastReferencedTimer()->reset();
|
||||
|
||||
if (imagep->hasSavedRawImage())
|
||||
{
|
||||
if (imagep->getElapsedLastReferencedSavedRawImageTime() > max_inactive_time)
|
||||
|
|
|
|||
|
|
@ -115,7 +115,6 @@
|
|||
#include "llsdutil.h"
|
||||
#include "llscenemonitor.h"
|
||||
#include "llsdserialize.h"
|
||||
#include "llcallstack.h"
|
||||
#include "llrendersphere.h"
|
||||
#include "llskinningutil.h"
|
||||
|
||||
|
|
@ -2822,8 +2821,6 @@ void LLVOAvatar::idleUpdate(LLAgent &agent, const F64 &time)
|
|||
mNeedsExtentUpdate = ((thisFrame + mID.mData[0]) % upd_freq == 0);
|
||||
}
|
||||
|
||||
// LLScopedContextString str("avatar_idle_update " + getFullname()); // <FS:Beq> remove unused scoped string
|
||||
|
||||
checkTextureLoading() ;
|
||||
|
||||
// force immediate pixel area update on avatars using last frames data (before drawable or camera updates)
|
||||
|
|
@ -5331,10 +5328,6 @@ bool LLVOAvatar::updateCharacter(LLAgent &agent)
|
|||
is_attachment = cav && cav->mRootVolp && cav->mRootVolp->isAttachment(); // For attached animated objects
|
||||
}
|
||||
|
||||
LLScopedContextString str("updateCharacter " + getFullname() + " is_control_avatar "
|
||||
+ boost::lexical_cast<std::string>(is_control_avatar)
|
||||
+ " is_attachment " + boost::lexical_cast<std::string>(is_attachment));
|
||||
|
||||
// For fading out the names above heads, only let the timer
|
||||
// run if we're visible.
|
||||
if (mDrawable.notNull() && !visible)
|
||||
|
|
@ -7144,8 +7137,6 @@ bool LLVOAvatar::jointIsRiggedTo(const LLJoint *joint) const
|
|||
|
||||
void LLVOAvatar::clearAttachmentOverrides()
|
||||
{
|
||||
LLScopedContextString str("clearAttachmentOverrides " + getFullname());
|
||||
|
||||
for (S32 i=0; i<LL_CHARACTER_MAX_ANIMATED_JOINTS; i++)
|
||||
{
|
||||
LLJoint *pJoint = getJoint(i);
|
||||
|
|
@ -7176,10 +7167,7 @@ void LLVOAvatar::clearAttachmentOverrides()
|
|||
//-----------------------------------------------------------------------------
|
||||
void LLVOAvatar::rebuildAttachmentOverrides()
|
||||
{
|
||||
LLScopedContextString str("rebuildAttachmentOverrides " + getFullname());
|
||||
|
||||
LL_DEBUGS("AnimatedObjects") << "rebuilding" << LL_ENDL;
|
||||
dumpStack("AnimatedObjectsStack");
|
||||
|
||||
clearAttachmentOverrides();
|
||||
|
||||
|
|
@ -7227,10 +7215,7 @@ void LLVOAvatar::rebuildAttachmentOverrides()
|
|||
// -----------------------------------------------------------------------------
|
||||
void LLVOAvatar::updateAttachmentOverrides()
|
||||
{
|
||||
LLScopedContextString str("updateAttachmentOverrides " + getFullname());
|
||||
|
||||
LL_DEBUGS("AnimatedObjects") << "updating" << LL_ENDL;
|
||||
dumpStack("AnimatedObjectsStack");
|
||||
|
||||
std::set<LLUUID> meshes_seen;
|
||||
|
||||
|
|
@ -7359,15 +7344,12 @@ void LLVOAvatar::addAttachmentOverridesForObject(LLViewerObject *vo, std::set<LL
|
|||
return;
|
||||
}
|
||||
|
||||
LLScopedContextString str("addAttachmentOverridesForObject " + getFullname());
|
||||
|
||||
if (getOverallAppearance() != AOA_NORMAL)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
LL_DEBUGS("AnimatedObjects") << "adding" << LL_ENDL;
|
||||
dumpStack("AnimatedObjectsStack");
|
||||
|
||||
// Process all children
|
||||
if (recursive)
|
||||
|
|
|
|||
|
|
@ -59,7 +59,6 @@
|
|||
#include "llsdutil.h"
|
||||
#include "llstartup.h"
|
||||
#include "llsdserialize.h"
|
||||
#include "llcallstack.h"
|
||||
#include "llcorehttputil.h"
|
||||
#include "lluiusage.h"
|
||||
|
||||
|
|
|
|||
|
|
@ -85,7 +85,6 @@
|
|||
#include "llanimationstates.h"
|
||||
#include "llinventorytype.h"
|
||||
#include "llviewerinventory.h"
|
||||
#include "llcallstack.h"
|
||||
#include "llsculptidsize.h"
|
||||
#include "llavatarappearancedefines.h"
|
||||
#include "llgltfmateriallist.h"
|
||||
|
|
@ -387,7 +386,6 @@ U32 LLVOVolume::processUpdateMessage(LLMessageSystem *mesgsys,
|
|||
sculpt_type = sculpt_params->getSculptType();
|
||||
|
||||
LL_DEBUGS("ObjectUpdate") << "uuid " << mID << " set sculpt_id " << sculpt_id << LL_ENDL;
|
||||
dumpStack("ObjectUpdateStack");
|
||||
}
|
||||
|
||||
if (!dp)
|
||||
|
|
@ -1605,7 +1603,6 @@ bool LLVOVolume::calcLOD()
|
|||
const LLVector3* box = avatar->getLastAnimExtents();
|
||||
LLVector3 diag = box[1] - box[0];
|
||||
radius = diag.magVec() * 0.5f;
|
||||
LL_DEBUGS("DynamicBox") << avatar->getFullname() << " diag " << diag << " radius " << radius << LL_ENDL;
|
||||
}
|
||||
else
|
||||
{
|
||||
|
|
@ -1616,11 +1613,9 @@ bool LLVOVolume::calcLOD()
|
|||
const LLVector3* box = avatar->getLastAnimExtents();
|
||||
LLVector3 diag = box[1] - box[0];
|
||||
radius = diag.magVec(); // preserve old BinRadius behavior - 2x off
|
||||
LL_DEBUGS("DynamicBox") << avatar->getFullname() << " diag " << diag << " radius " << radius << LL_ENDL;
|
||||
}
|
||||
if (distance <= 0.f || radius <= 0.f)
|
||||
{
|
||||
LL_DEBUGS("DynamicBox","CalcLOD") << "avatar distance/radius uninitialized, skipping" << LL_ENDL;
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
|
@ -1630,7 +1625,6 @@ bool LLVOVolume::calcLOD()
|
|||
radius = getVolume() ? getVolume()->mLODScaleBias.scaledVec(getScale()).length() : getScale().length();
|
||||
if (distance <= 0.f || radius <= 0.f)
|
||||
{
|
||||
LL_DEBUGS("DynamicBox","CalcLOD") << "non-avatar distance/radius uninitialized, skipping" << LL_ENDL;
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
|
@ -1718,13 +1712,6 @@ bool LLVOVolume::calcLOD()
|
|||
|
||||
if (cur_detail != mLOD)
|
||||
{
|
||||
LL_DEBUGS("DynamicBox","CalcLOD") << "new LOD " << cur_detail << " change from " << mLOD
|
||||
<< " distance " << distance << " radius " << radius << " rampDist " << rampDist
|
||||
<< " drawable rigged? " << (mDrawable ? (S32) mDrawable->isState(LLDrawable::RIGGED) : (S32) -1)
|
||||
<< " mRiggedVolume " << (void*)getRiggedVolume()
|
||||
<< " distanceWRTCamera " << (mDrawable ? mDrawable->mDistanceWRTCamera : -1.f)
|
||||
<< LL_ENDL;
|
||||
|
||||
mAppAngle = ll_round((F32) atan2( mDrawable->getRadius(), mDrawable->mDistanceWRTCamera) * RAD_TO_DEG, 0.01f);
|
||||
mLOD = cur_detail;
|
||||
|
||||
|
|
@ -1938,11 +1925,6 @@ bool LLVOVolume::genBBoxes(bool force_global, bool should_update_octree_bounds)
|
|||
|
||||
bool any_valid_boxes = false;
|
||||
|
||||
if (getRiggedVolume())
|
||||
{
|
||||
LL_DEBUGS("RiggedBox") << "rebuilding box, volume face count " << getVolume()->getNumVolumeFaces() << " drawable face count " << mDrawable->getNumFaces() << LL_ENDL;
|
||||
}
|
||||
|
||||
// There's no guarantee that getVolume()->getNumFaces() == mDrawable->getNumFaces()
|
||||
for (S32 i = 0;
|
||||
i < getVolume()->getNumVolumeFaces() && i < mDrawable->getNumFaces() && i < getNumTEs();
|
||||
|
|
@ -1971,10 +1953,6 @@ bool LLVOVolume::genBBoxes(bool force_global, bool should_update_octree_bounds)
|
|||
}
|
||||
if (rebuild)
|
||||
{
|
||||
if (getRiggedVolume())
|
||||
{
|
||||
LL_DEBUGS("RiggedBox") << "rebuilding box, face " << i << " extents " << face->mExtents[0] << ", " << face->mExtents[1] << LL_ENDL;
|
||||
}
|
||||
if (!any_valid_boxes)
|
||||
{
|
||||
min = face->mExtents[0];
|
||||
|
|
@ -5954,11 +5932,6 @@ void LLVolumeGeometryManager::rebuildGeom(LLSpatialGroup* group)
|
|||
// apply any pending material overrides
|
||||
gGLTFMaterialList.applyQueuedOverrides(vobj);
|
||||
|
||||
//<FS:Beq> Stop doing stupid stuff we don;t need to.
|
||||
// Moving this inside a debug enabled check
|
||||
// std::string vobj_name = llformat("Vol%p", vobj);
|
||||
//</FS:Beq>
|
||||
|
||||
bool is_mesh = vobj->isMesh();
|
||||
if (is_mesh)
|
||||
{
|
||||
|
|
@ -5982,28 +5955,9 @@ void LLVolumeGeometryManager::rebuildGeom(LLSpatialGroup* group)
|
|||
const LLVector3& scale = vobj->getScale();
|
||||
group->mSurfaceArea += volume->getSurfaceArea() * llmax(llmax(scale.mV[0], scale.mV[1]), scale.mV[2]);
|
||||
}
|
||||
//<FS:Beq> Stop doing stupid stuff we don;t need on the critical path
|
||||
//F32 est_tris = vobj->getEstTrianglesMax();
|
||||
|
||||
vobj->updateControlAvatar();
|
||||
|
||||
#if 0
|
||||
std::string vobj_name = llformat("Vol%p", vobj);
|
||||
F32 est_tris = vobj->getEstTrianglesMax();
|
||||
|
||||
LL_DEBUGS("AnimatedObjectsLinkset") << vobj_name << " rebuilding, isAttachment: " << (U32) vobj->isAttachment()
|
||||
<< " is_mesh " << is_mesh
|
||||
<< " est_tris " << est_tris
|
||||
<< " is_animated " << vobj->isAnimatedObject()
|
||||
<< " can_animate " << vobj->canBeAnimatedObject()
|
||||
<< " cav " << vobj->getControlAvatar()
|
||||
<< " lod " << vobj->getLOD()
|
||||
<< " drawable rigged " << (drawablep->isState(LLDrawable::RIGGED))
|
||||
<< " drawable state " << drawablep->getState()
|
||||
<< " playing " << (U32) (vobj->getControlAvatar() ? vobj->getControlAvatar()->mPlaying : false)
|
||||
<< " frame " << LLFrameTimer::getFrameCount()
|
||||
<< LL_ENDL;
|
||||
#endif
|
||||
//<FS:Beq> Pointless. We already checked this and have used it.
|
||||
//llassert_always(vobj);
|
||||
|
||||
|
|
|
|||
|
|
@ -128,7 +128,7 @@ void LLLogin::Impl::connect(const std::string& uri, const LLSD& login_params)
|
|||
// Launch a coroutine with our login_() method. Run the coroutine until
|
||||
// its first wait; at that point, return here.
|
||||
std::string coroname =
|
||||
LLCoros::instance().launch("LLLogin::Impl::login_", [&]() { loginCoro(uri, login_params); });
|
||||
LLCoros::instance().launch("LLLogin::Impl::login_", [=]() { loginCoro(uri, login_params); });
|
||||
|
||||
LL_DEBUGS("LLLogin") << " connected with uri '" << uri << "', login_params " << login_params << LL_ENDL;
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue