Pull and merge from ssh://hg@bitbucket.org/lindenlab/viewer-beta.
commit
be0406bffd
6
.hgtags
6
.hgtags
|
|
@ -325,7 +325,9 @@ fba99f381b8d4ad1b7b42fa4993b29998d95be18 DRTVWR-179
|
|||
173c2809f9873499c4b9d6bc044ec941c954d3fb DRTVWR-228
|
||||
1dc94555582f52718834081e7659e973ae4521f7 3.4.1-beta8
|
||||
52c164c8023a5e65f3dc1b0bbb7fa1dd0c631b6b DRTVWR-231
|
||||
9c4519aa5c70f7560111fb5c740d3a7dc20a845a 3.4.1-beta9
|
||||
464cf7a63a9a2f95bc4972dc022ca765e93de7d3 DRTVWR-233
|
||||
9c4519aa5c70f7560111fb5c740d3a7dc20a845a 3.4.1-beta9
|
||||
637fe8bbee5e24940448198c221d5ee0fa3247b4 3.4.1-beta9
|
||||
4e0d84e92132e9e95a1d52a1e49bad69c278ea05 3.4.1-beta10
|
||||
f7cbd60a3f57ff1101157eeb79ea21e8898bedae DRTVWR-235
|
||||
baf97f06ae17223614c5e31aa42e71d87cff07fe DRTVWR-236
|
||||
18498afcdb835d6fc4d36ed935347d3b65307bad 3.4.1-beta11
|
||||
|
|
|
|||
|
|
@ -20,8 +20,13 @@ email_status_this_is_os = true
|
|||
# Limit extent of codeticket updates to revisions after...
|
||||
codeticket_since = 3.3.0-release
|
||||
|
||||
clean_on_success = false
|
||||
run_tests = false
|
||||
build_Darwin_Debug = false
|
||||
build_Darwin_RelWithDebInfo = false
|
||||
|
||||
# ========================================
|
||||
# Viewer Development
|
||||
# Viewer Development --
|
||||
# ========================================
|
||||
|
||||
# Report changes since...
|
||||
|
|
|
|||
|
|
@ -199,7 +199,7 @@ if (DARWIN)
|
|||
add_definitions(-DLL_DARWIN=1 -D_XOPEN_SOURCE)
|
||||
set(CMAKE_CXX_LINK_FLAGS "-Wl,-headerpad_max_install_names,-search_paths_first")
|
||||
set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_CXX_LINK_FLAGS}")
|
||||
set(DARWIN_extra_cstar_flags "-mlong-branch")
|
||||
set(DARWIN_extra_cstar_flags "-mlong-branch -g")
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${DARWIN_extra_cstar_flags}")
|
||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${DARWIN_extra_cstar_flags}")
|
||||
# NOTE: it's critical that the optimization flag is put in front.
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ include(Prebuilt)
|
|||
|
||||
# If you want to enable or disable TCMALLOC in viewer builds, this is the place.
|
||||
# set ON or OFF as desired.
|
||||
set (USE_TCMALLOC OFF)
|
||||
set (USE_TCMALLOC ON)
|
||||
|
||||
if (STANDALONE)
|
||||
include(FindGooglePerfTools)
|
||||
|
|
|
|||
|
|
@ -78,7 +78,7 @@ public:
|
|||
|
||||
typedef LLOctreeTraveler<T> oct_traveler;
|
||||
typedef LLTreeTraveler<T> tree_traveler;
|
||||
typedef LLPointer<T>* element_list;
|
||||
typedef std::vector<LLPointer<T> > element_list;
|
||||
typedef LLPointer<T>* element_iter;
|
||||
typedef const LLPointer<T>* const_element_iter;
|
||||
typedef typename std::vector<LLTreeListener<T>*>::iterator tree_listener_iter;
|
||||
|
|
@ -106,8 +106,9 @@ public:
|
|||
: mParent((oct_node*)parent),
|
||||
mOctant(octant)
|
||||
{
|
||||
mData = NULL;
|
||||
mDataEnd = NULL;
|
||||
//always keep a NULL terminated list to avoid out of bounds exceptions in debug builds
|
||||
mData.push_back(NULL);
|
||||
mDataEnd = &mData[0];
|
||||
|
||||
mCenter = center;
|
||||
mSize = size;
|
||||
|
|
@ -133,9 +134,9 @@ public:
|
|||
mData[i] = NULL;
|
||||
}
|
||||
|
||||
free(mData);
|
||||
mData = NULL;
|
||||
mDataEnd = NULL;
|
||||
mData.clear();
|
||||
mData.push_back(NULL);
|
||||
mDataEnd = &mData[0];
|
||||
|
||||
for (U32 i = 0; i < getChildCount(); i++)
|
||||
{
|
||||
|
|
@ -239,9 +240,9 @@ public:
|
|||
bool isEmpty() const { return mElementCount == 0; }
|
||||
element_list& getData() { return mData; }
|
||||
const element_list& getData() const { return mData; }
|
||||
element_iter getDataBegin() { return mData; }
|
||||
element_iter getDataBegin() { return &mData[0]; }
|
||||
element_iter getDataEnd() { return mDataEnd; }
|
||||
const_element_iter getDataBegin() const { return mData; }
|
||||
const_element_iter getDataBegin() const { return &mData[0]; }
|
||||
const_element_iter getDataEnd() const { return mDataEnd; }
|
||||
|
||||
U32 getChildCount() const { return mChildCount; }
|
||||
|
|
@ -321,14 +322,10 @@ public:
|
|||
if ((getElementCount() < gOctreeMaxCapacity && contains(data->getBinRadius()) ||
|
||||
(data->getBinRadius() > getSize()[0] && parent && parent->getElementCount() >= gOctreeMaxCapacity)))
|
||||
{ //it belongs here
|
||||
mData.push_back(NULL);
|
||||
mData[mElementCount] = data;
|
||||
mElementCount++;
|
||||
mData = (element_list) realloc(mData, sizeof(LLPointer<T>)*mElementCount);
|
||||
|
||||
//avoid unref on uninitialized memory
|
||||
memset(mData+mElementCount-1, 0, sizeof(LLPointer<T>));
|
||||
|
||||
mData[mElementCount-1] = data;
|
||||
mDataEnd = mData + mElementCount;
|
||||
mDataEnd = &mData[mElementCount];
|
||||
data->setBinIndex(mElementCount-1);
|
||||
BaseType::insert(data);
|
||||
return true;
|
||||
|
|
@ -364,14 +361,10 @@ public:
|
|||
|
||||
if( lt == 0x7 )
|
||||
{
|
||||
mData.push_back(NULL);
|
||||
mData[mElementCount] = data;
|
||||
mElementCount++;
|
||||
mData = (element_list) realloc(mData, sizeof(LLPointer<T>)*mElementCount);
|
||||
|
||||
//avoid unref on uninitialized memory
|
||||
memset(mData+mElementCount-1, 0, sizeof(LLPointer<T>));
|
||||
|
||||
mData[mElementCount-1] = data;
|
||||
mDataEnd = mData + mElementCount;
|
||||
mDataEnd = &mData[mElementCount];
|
||||
data->setBinIndex(mElementCount-1);
|
||||
BaseType::insert(data);
|
||||
return true;
|
||||
|
|
@ -436,16 +429,15 @@ public:
|
|||
mData[i]->setBinIndex(i);
|
||||
}
|
||||
|
||||
mData[mElementCount] = NULL; //needed for unref
|
||||
mData = (element_list) realloc(mData, sizeof(LLPointer<T>)*mElementCount);
|
||||
mDataEnd = mData+mElementCount;
|
||||
mData[mElementCount] = NULL;
|
||||
mData.pop_back();
|
||||
mDataEnd = &mData[mElementCount];
|
||||
}
|
||||
else
|
||||
{
|
||||
mData[0] = NULL; //needed for unref
|
||||
free(mData);
|
||||
mData = NULL;
|
||||
mDataEnd = NULL;
|
||||
mData.clear();
|
||||
mData.push_back(NULL);
|
||||
mDataEnd = &mData[0];
|
||||
}
|
||||
|
||||
notifyRemoval(data);
|
||||
|
|
@ -491,7 +483,7 @@ public:
|
|||
}
|
||||
|
||||
//node is now root
|
||||
llwarns << "!!! OCTREE REMOVING FACE BY ADDRESS, SEVERE PERFORMANCE PENALTY |||" << llendl;
|
||||
llwarns << "!!! OCTREE REMOVING ELEMENT BY ADDRESS, SEVERE PERFORMANCE PENALTY |||" << llendl;
|
||||
node->removeByAddress(data);
|
||||
llassert(data->getBinIndex() == -1);
|
||||
return true;
|
||||
|
|
|
|||
|
|
@ -2003,8 +2003,9 @@ if (INSTALL)
|
|||
endif (INSTALL)
|
||||
|
||||
if (PACKAGE)
|
||||
set(SYMBOL_SEARCH_DIRS "")
|
||||
if (WINDOWS)
|
||||
set(VIEWER_DIST_DIR "${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}")
|
||||
list(APPEND SYMBOL_SEARCH_DIRS "${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}")
|
||||
set(VIEWER_SYMBOL_FILE "${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}/secondlife-symbols-windows.tar.bz2")
|
||||
# slplugin.exe failing symbols dump - need to debug, might have to do with updated version of google breakpad
|
||||
# set(VIEWER_EXE_GLOBS "${VIEWER_BINARY_NAME}${CMAKE_EXECUTABLE_SUFFIX} slplugin.exe")
|
||||
|
|
@ -2013,13 +2014,20 @@ if (PACKAGE)
|
|||
set(VIEWER_COPY_MANIFEST copy_w_viewer_manifest)
|
||||
endif (WINDOWS)
|
||||
if (DARWIN)
|
||||
set(VIEWER_DIST_DIR "${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}/${product}.app")
|
||||
list(APPEND SYMBOL_SEARCH_DIRS "${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}")
|
||||
# *TODO: Generate these search dirs in the cmake files related to each binary.
|
||||
list(APPEND SYMBOL_SEARCH_DIRS "${CMAKE_BINARY_DIR}/llplugin/slplugin/${CMAKE_CFG_INTDIR}")
|
||||
list(APPEND SYMBOL_SEARCH_DIRS "${CMAKE_BINARY_DIR}/mac_crash_logger/${CMAKE_CFG_INTDIR}")
|
||||
list(APPEND SYMBOL_SEARCH_DIRS "${CMAKE_BINARY_DIR}/mac_updater/${CMAKE_CFG_INTDIR}")
|
||||
list(APPEND SYMBOL_SEARCH_DIRS "${CMAKE_BINARY_DIR}/media_plugins/gstreamer010/${CMAKE_CFG_INTDIR}")
|
||||
list(APPEND SYMBOL_SEARCH_DIRS "${CMAKE_BINARY_DIR}/media_plugins/quicktime/${CMAKE_CFG_INTDIR}")
|
||||
list(APPEND SYMBOL_SEARCH_DIRS "${CMAKE_BINARY_DIR}/media_plugins/webkit/${CMAKE_CFG_INTDIR}")
|
||||
set(VIEWER_SYMBOL_FILE "${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}/secondlife-symbols-darwin.tar.bz2")
|
||||
set(VIEWER_EXE_GLOBS "'Second Life' SLPlugin")
|
||||
set(VIEWER_EXE_GLOBS "'Second Life' SLPlugin mac-updater mac-crash-logger")
|
||||
set(VIEWER_LIB_GLOB "*.dylib")
|
||||
endif (DARWIN)
|
||||
if (LINUX)
|
||||
set(VIEWER_DIST_DIR "${CMAKE_CURRENT_BINARY_DIR}/packaged")
|
||||
list(APPEND SYMBOL_SEARCH_DIRS "${CMAKE_CURRENT_BINARY_DIR}/packaged")
|
||||
set(VIEWER_SYMBOL_FILE "${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}/secondlife-symbols-linux.tar.bz2")
|
||||
set(VIEWER_EXE_GLOBS "do-not-directly-run-secondlife-bin SLPlugin")
|
||||
set(VIEWER_LIB_GLOB "*${CMAKE_SHARED_MODULE_SUFFIX}*")
|
||||
|
|
@ -2039,7 +2047,7 @@ if (PACKAGE)
|
|||
ARGS
|
||||
"${CMAKE_CURRENT_SOURCE_DIR}/generate_breakpad_symbols.py"
|
||||
"${LLBUILD_CONFIG}"
|
||||
"${VIEWER_DIST_DIR}"
|
||||
"${SYMBOL_SEARCH_DIRS}"
|
||||
"${VIEWER_EXE_GLOBS}"
|
||||
"${VIEWER_LIB_GLOB}"
|
||||
"${AUTOBUILD_INSTALL_DIR}/bin/dump_syms"
|
||||
|
|
|
|||
|
|
@ -39,17 +39,20 @@ import shlex
|
|||
import subprocess
|
||||
import tarfile
|
||||
import StringIO
|
||||
import pprint
|
||||
|
||||
DEBUG=False
|
||||
|
||||
def usage():
|
||||
print >>sys.stderr, "usage: %s viewer_dir viewer_exes libs_suffix dump_syms_tool viewer_symbol_file" % sys.argv[0]
|
||||
print >>sys.stderr, "usage: %s search_dirs viewer_exes libs_suffix dump_syms_tool viewer_symbol_file" % sys.argv[0]
|
||||
|
||||
class MissingModuleError(Exception):
|
||||
def __init__(self, modules):
|
||||
Exception.__init__(self, "Failed to find required modules: %r" % modules)
|
||||
self.modules = modules
|
||||
|
||||
def main(configuration, viewer_dir, viewer_exes, libs_suffix, dump_syms_tool, viewer_symbol_file):
|
||||
print "generate_breakpad_symbols run with args: %s" % str((configuration, viewer_dir, viewer_exes, libs_suffix, dump_syms_tool, viewer_symbol_file))
|
||||
def main(configuration, search_dirs, viewer_exes, libs_suffix, dump_syms_tool, viewer_symbol_file):
|
||||
print "generate_breakpad_symbols run with args: %s" % str((configuration, search_dirs, viewer_exes, libs_suffix, dump_syms_tool, viewer_symbol_file))
|
||||
|
||||
if not re.match("release", configuration, re.IGNORECASE):
|
||||
print "skipping breakpad symbol generation for non-release build."
|
||||
|
|
@ -67,21 +70,49 @@ def main(configuration, viewer_dir, viewer_exes, libs_suffix, dump_syms_tool, vi
|
|||
return True
|
||||
return fnmatch.fnmatch(f, libs_suffix)
|
||||
|
||||
search_dirs = search_dirs.split(";")
|
||||
|
||||
def list_files():
|
||||
for (dirname, subdirs, filenames) in os.walk(viewer_dir):
|
||||
#print "scanning '%s' for modules..." % dirname
|
||||
for f in itertools.ifilter(matches, filenames):
|
||||
yield os.path.join(dirname, f)
|
||||
for search_dir in search_dirs:
|
||||
for (dirname, subdirs, filenames) in os.walk(search_dir):
|
||||
if DEBUG:
|
||||
print "scanning '%s' for modules..." % dirname
|
||||
for f in itertools.ifilter(matches, filenames):
|
||||
yield os.path.join(dirname, f)
|
||||
|
||||
def dump_module(m):
|
||||
print "dumping module '%s' with '%s'..." % (m, dump_syms_tool)
|
||||
child = subprocess.Popen([dump_syms_tool, m] , stdout=subprocess.PIPE)
|
||||
dsym_full_path = m
|
||||
child = subprocess.Popen([dump_syms_tool, dsym_full_path] , stdout=subprocess.PIPE)
|
||||
out, err = child.communicate()
|
||||
return (m,child.returncode, out, err)
|
||||
|
||||
out = tarfile.open(viewer_symbol_file, 'w:bz2')
|
||||
|
||||
modules = {}
|
||||
|
||||
for m in list_files():
|
||||
if DEBUG:
|
||||
print "examining module '%s' ... " % m,
|
||||
filename=os.path.basename(m)
|
||||
if -1 != m.find("DWARF"):
|
||||
# Just use this module; it has the symbols we want.
|
||||
modules[filename] = m
|
||||
if DEBUG:
|
||||
print "found dSYM entry"
|
||||
elif filename not in modules:
|
||||
# Only use this if we don't already have a (possibly better) entry.
|
||||
modules[filename] = m
|
||||
if DEBUG:
|
||||
print "found new entry"
|
||||
elif DEBUG:
|
||||
print "ignoring entry"
|
||||
|
||||
for (filename,status,symbols,err) in itertools.imap(dump_module, list_files()):
|
||||
|
||||
print "Found these following modules:"
|
||||
pprint.pprint( modules )
|
||||
|
||||
out = tarfile.open(viewer_symbol_file, 'w:bz2')
|
||||
for (filename,status,symbols,err) in itertools.imap(dump_module, modules.values()):
|
||||
if status == 0:
|
||||
module_line = symbols[:symbols.index('\n')]
|
||||
module_line = module_line.split()
|
||||
|
|
|
|||
|
|
@ -4716,55 +4716,63 @@ LLCullResult::LLCullResult()
|
|||
mVisibleListAllocated = 0;
|
||||
mVisibleBridgeAllocated = 0;
|
||||
|
||||
mVisibleGroups = NULL;
|
||||
mVisibleGroupsEnd = NULL;
|
||||
mAlphaGroups = NULL;
|
||||
mAlphaGroupsEnd = NULL;
|
||||
mOcclusionGroups = NULL;
|
||||
mOcclusionGroupsEnd = NULL;
|
||||
mDrawableGroups = NULL;
|
||||
mDrawableGroupsEnd = NULL;
|
||||
mVisibleList = NULL;
|
||||
mVisibleListEnd = NULL;
|
||||
mVisibleBridge = NULL;
|
||||
mVisibleBridgeEnd = NULL;
|
||||
mVisibleGroups.clear();
|
||||
mVisibleGroups.push_back(NULL);
|
||||
mVisibleGroupsEnd = &mVisibleGroups[0];
|
||||
mAlphaGroups.clear();
|
||||
mAlphaGroups.push_back(NULL);
|
||||
mAlphaGroupsEnd = &mAlphaGroups[0];
|
||||
mOcclusionGroups.clear();
|
||||
mOcclusionGroups.push_back(NULL);
|
||||
mOcclusionGroupsEnd = &mOcclusionGroups[0];
|
||||
mDrawableGroups.clear();
|
||||
mDrawableGroups.push_back(NULL);
|
||||
mDrawableGroupsEnd = &mDrawableGroups[0];
|
||||
mVisibleList.clear();
|
||||
mVisibleList.push_back(NULL);
|
||||
mVisibleListEnd = &mVisibleList[0];
|
||||
mVisibleBridge.clear();
|
||||
mVisibleBridge.push_back(NULL);
|
||||
mVisibleBridgeEnd = &mVisibleBridge[0];
|
||||
|
||||
for (U32 i = 0; i < LLRenderPass::NUM_RENDER_TYPES; i++)
|
||||
{
|
||||
mRenderMap[i] = NULL;
|
||||
mRenderMapEnd[i] = NULL;
|
||||
mRenderMap[i].clear();
|
||||
mRenderMap[i].push_back(NULL);
|
||||
mRenderMapEnd[i] = &mRenderMap[i][0];
|
||||
mRenderMapAllocated[i] = 0;
|
||||
}
|
||||
|
||||
clear();
|
||||
}
|
||||
|
||||
void LLCullResult::pushBack(void**& head, U32& count, void* val)
|
||||
template <class T, class V>
|
||||
void LLCullResult::pushBack(T& head, U32& count, V* val)
|
||||
{
|
||||
head[count] = val;
|
||||
head.push_back(NULL);
|
||||
count++;
|
||||
head = (void**) realloc((void*) head, sizeof(void*) * count);
|
||||
head[count-1] = val;
|
||||
}
|
||||
|
||||
void LLCullResult::clear()
|
||||
{
|
||||
mVisibleGroupsSize = 0;
|
||||
mVisibleGroupsEnd = mVisibleGroups;
|
||||
mVisibleGroupsEnd = &mVisibleGroups[0];
|
||||
|
||||
mAlphaGroupsSize = 0;
|
||||
mAlphaGroupsEnd = mAlphaGroups;
|
||||
mAlphaGroupsEnd = &mAlphaGroups[0];
|
||||
|
||||
mOcclusionGroupsSize = 0;
|
||||
mOcclusionGroupsEnd = mOcclusionGroups;
|
||||
mOcclusionGroupsEnd = &mOcclusionGroups[0];
|
||||
|
||||
mDrawableGroupsSize = 0;
|
||||
mDrawableGroupsEnd = mDrawableGroups;
|
||||
mDrawableGroupsEnd = &mDrawableGroups[0];
|
||||
|
||||
mVisibleListSize = 0;
|
||||
mVisibleListEnd = mVisibleList;
|
||||
mVisibleListEnd = &mVisibleList[0];
|
||||
|
||||
mVisibleBridgeSize = 0;
|
||||
mVisibleBridgeEnd = mVisibleBridge;
|
||||
mVisibleBridgeEnd = &mVisibleBridge[0];
|
||||
|
||||
|
||||
for (U32 i = 0; i < LLRenderPass::NUM_RENDER_TYPES; i++)
|
||||
|
|
@ -4774,13 +4782,13 @@ void LLCullResult::clear()
|
|||
mRenderMap[i][j] = 0;
|
||||
}
|
||||
mRenderMapSize[i] = 0;
|
||||
mRenderMapEnd[i] = mRenderMap[i];
|
||||
mRenderMapEnd[i] = &(mRenderMap[i][0]);
|
||||
}
|
||||
}
|
||||
|
||||
LLCullResult::sg_iterator LLCullResult::beginVisibleGroups()
|
||||
{
|
||||
return mVisibleGroups;
|
||||
return &mVisibleGroups[0];
|
||||
}
|
||||
|
||||
LLCullResult::sg_iterator LLCullResult::endVisibleGroups()
|
||||
|
|
@ -4790,7 +4798,7 @@ LLCullResult::sg_iterator LLCullResult::endVisibleGroups()
|
|||
|
||||
LLCullResult::sg_iterator LLCullResult::beginAlphaGroups()
|
||||
{
|
||||
return mAlphaGroups;
|
||||
return &mAlphaGroups[0];
|
||||
}
|
||||
|
||||
LLCullResult::sg_iterator LLCullResult::endAlphaGroups()
|
||||
|
|
@ -4800,7 +4808,7 @@ LLCullResult::sg_iterator LLCullResult::endAlphaGroups()
|
|||
|
||||
LLCullResult::sg_iterator LLCullResult::beginOcclusionGroups()
|
||||
{
|
||||
return mOcclusionGroups;
|
||||
return &mOcclusionGroups[0];
|
||||
}
|
||||
|
||||
LLCullResult::sg_iterator LLCullResult::endOcclusionGroups()
|
||||
|
|
@ -4810,7 +4818,7 @@ LLCullResult::sg_iterator LLCullResult::endOcclusionGroups()
|
|||
|
||||
LLCullResult::sg_iterator LLCullResult::beginDrawableGroups()
|
||||
{
|
||||
return mDrawableGroups;
|
||||
return &mDrawableGroups[0];
|
||||
}
|
||||
|
||||
LLCullResult::sg_iterator LLCullResult::endDrawableGroups()
|
||||
|
|
@ -4820,7 +4828,7 @@ LLCullResult::sg_iterator LLCullResult::endDrawableGroups()
|
|||
|
||||
LLCullResult::drawable_iterator LLCullResult::beginVisibleList()
|
||||
{
|
||||
return mVisibleList;
|
||||
return &mVisibleList[0];
|
||||
}
|
||||
|
||||
LLCullResult::drawable_iterator LLCullResult::endVisibleList()
|
||||
|
|
@ -4830,7 +4838,7 @@ LLCullResult::drawable_iterator LLCullResult::endVisibleList()
|
|||
|
||||
LLCullResult::bridge_iterator LLCullResult::beginVisibleBridge()
|
||||
{
|
||||
return mVisibleBridge;
|
||||
return &mVisibleBridge[0];
|
||||
}
|
||||
|
||||
LLCullResult::bridge_iterator LLCullResult::endVisibleBridge()
|
||||
|
|
@ -4840,7 +4848,7 @@ LLCullResult::bridge_iterator LLCullResult::endVisibleBridge()
|
|||
|
||||
LLCullResult::drawinfo_iterator LLCullResult::beginRenderMap(U32 type)
|
||||
{
|
||||
return mRenderMap[type];
|
||||
return &mRenderMap[type][0];
|
||||
}
|
||||
|
||||
LLCullResult::drawinfo_iterator LLCullResult::endRenderMap(U32 type)
|
||||
|
|
@ -4856,10 +4864,10 @@ void LLCullResult::pushVisibleGroup(LLSpatialGroup* group)
|
|||
}
|
||||
else
|
||||
{
|
||||
pushBack((void**&) mVisibleGroups, mVisibleGroupsAllocated, (void*) group);
|
||||
pushBack(mVisibleGroups, mVisibleGroupsAllocated, group);
|
||||
}
|
||||
++mVisibleGroupsSize;
|
||||
mVisibleGroupsEnd = mVisibleGroups+mVisibleGroupsSize;
|
||||
mVisibleGroupsEnd = &mVisibleGroups[mVisibleGroupsSize];
|
||||
}
|
||||
|
||||
void LLCullResult::pushAlphaGroup(LLSpatialGroup* group)
|
||||
|
|
@ -4870,10 +4878,10 @@ void LLCullResult::pushAlphaGroup(LLSpatialGroup* group)
|
|||
}
|
||||
else
|
||||
{
|
||||
pushBack((void**&) mAlphaGroups, mAlphaGroupsAllocated, (void*) group);
|
||||
pushBack(mAlphaGroups, mAlphaGroupsAllocated, group);
|
||||
}
|
||||
++mAlphaGroupsSize;
|
||||
mAlphaGroupsEnd = mAlphaGroups+mAlphaGroupsSize;
|
||||
mAlphaGroupsEnd = &mAlphaGroups[mAlphaGroupsSize];
|
||||
}
|
||||
|
||||
void LLCullResult::pushOcclusionGroup(LLSpatialGroup* group)
|
||||
|
|
@ -4884,10 +4892,10 @@ void LLCullResult::pushOcclusionGroup(LLSpatialGroup* group)
|
|||
}
|
||||
else
|
||||
{
|
||||
pushBack((void**&) mOcclusionGroups, mOcclusionGroupsAllocated, (void*) group);
|
||||
pushBack(mOcclusionGroups, mOcclusionGroupsAllocated, group);
|
||||
}
|
||||
++mOcclusionGroupsSize;
|
||||
mOcclusionGroupsEnd = mOcclusionGroups+mOcclusionGroupsSize;
|
||||
mOcclusionGroupsEnd = &mOcclusionGroups[mOcclusionGroupsSize];
|
||||
}
|
||||
|
||||
void LLCullResult::pushDrawableGroup(LLSpatialGroup* group)
|
||||
|
|
@ -4898,10 +4906,10 @@ void LLCullResult::pushDrawableGroup(LLSpatialGroup* group)
|
|||
}
|
||||
else
|
||||
{
|
||||
pushBack((void**&) mDrawableGroups, mDrawableGroupsAllocated, (void*) group);
|
||||
pushBack(mDrawableGroups, mDrawableGroupsAllocated, group);
|
||||
}
|
||||
++mDrawableGroupsSize;
|
||||
mDrawableGroupsEnd = mDrawableGroups+mDrawableGroupsSize;
|
||||
mDrawableGroupsEnd = &mDrawableGroups[mDrawableGroupsSize];
|
||||
}
|
||||
|
||||
void LLCullResult::pushDrawable(LLDrawable* drawable)
|
||||
|
|
@ -4912,10 +4920,10 @@ void LLCullResult::pushDrawable(LLDrawable* drawable)
|
|||
}
|
||||
else
|
||||
{
|
||||
pushBack((void**&) mVisibleList, mVisibleListAllocated, (void*) drawable);
|
||||
pushBack(mVisibleList, mVisibleListAllocated, drawable);
|
||||
}
|
||||
++mVisibleListSize;
|
||||
mVisibleListEnd = mVisibleList+mVisibleListSize;
|
||||
mVisibleListEnd = &mVisibleList[mVisibleListSize];
|
||||
}
|
||||
|
||||
void LLCullResult::pushBridge(LLSpatialBridge* bridge)
|
||||
|
|
@ -4926,10 +4934,10 @@ void LLCullResult::pushBridge(LLSpatialBridge* bridge)
|
|||
}
|
||||
else
|
||||
{
|
||||
pushBack((void**&) mVisibleBridge, mVisibleBridgeAllocated, (void*) bridge);
|
||||
pushBack(mVisibleBridge, mVisibleBridgeAllocated, bridge);
|
||||
}
|
||||
++mVisibleBridgeSize;
|
||||
mVisibleBridgeEnd = mVisibleBridge+mVisibleBridgeSize;
|
||||
mVisibleBridgeEnd = &mVisibleBridge[mVisibleBridgeSize];
|
||||
}
|
||||
|
||||
void LLCullResult::pushDrawInfo(U32 type, LLDrawInfo* draw_info)
|
||||
|
|
@ -4940,10 +4948,10 @@ void LLCullResult::pushDrawInfo(U32 type, LLDrawInfo* draw_info)
|
|||
}
|
||||
else
|
||||
{
|
||||
pushBack((void**&) mRenderMap[type], mRenderMapAllocated[type], (void*) draw_info);
|
||||
pushBack(mRenderMap[type], mRenderMapAllocated[type], draw_info);
|
||||
}
|
||||
++mRenderMapSize[type];
|
||||
mRenderMapEnd[type] = mRenderMap[type] + mRenderMapSize[type];
|
||||
mRenderMapEnd[type] = &(mRenderMap[type][mRenderMapSize[type]]);
|
||||
}
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -569,10 +569,10 @@ class LLCullResult
|
|||
public:
|
||||
LLCullResult();
|
||||
|
||||
typedef LLSpatialGroup** sg_list_t;
|
||||
typedef LLDrawable** drawable_list_t;
|
||||
typedef LLSpatialBridge** bridge_list_t;
|
||||
typedef LLDrawInfo** drawinfo_list_t;
|
||||
typedef std::vector<LLSpatialGroup*> sg_list_t;
|
||||
typedef std::vector<LLDrawable*> drawable_list_t;
|
||||
typedef std::vector<LLSpatialBridge*> bridge_list_t;
|
||||
typedef std::vector<LLDrawInfo*> drawinfo_list_t;
|
||||
|
||||
typedef LLSpatialGroup** sg_iterator;
|
||||
typedef LLSpatialBridge** bridge_iterator;
|
||||
|
|
@ -622,7 +622,7 @@ public:
|
|||
|
||||
private:
|
||||
|
||||
void pushBack(void** &head, U32& count, void* val);
|
||||
template <class T, class V> void pushBack(T &head, U32& count, V* val);
|
||||
|
||||
U32 mVisibleGroupsSize;
|
||||
U32 mAlphaGroupsSize;
|
||||
|
|
|
|||
Loading…
Reference in New Issue