diff --git a/README_BUILD_FIRESTORM_LINUX.txt b/README_BUILD_FIRESTORM_LINUX.txt
index b7838f1c1e..2e856043a1 100755
--- a/README_BUILD_FIRESTORM_LINUX.txt
+++ b/README_BUILD_FIRESTORM_LINUX.txt
@@ -1,9 +1,5 @@
First, make sure gcc-5.4 and g++-5.4 are installed.
-Ensure you can build a stock viewer-development try as described in the SL wiki. Before asking for any help
-compiling Firestorm, make sure you can build viewer-development first. If you try and skip this step, you may
-receive much less help. http://wiki.secondlife.com/wiki/Compiling_the_viewer_(Linux)
-
If you want to use licensed FMOD or KDU build libraries (they are optional) you have to provision these yourself.
If you're licensing these with Phoenix/Firestorm, ask for the libraries for fmod and kdu. Put them into:
/opt/firestorm
@@ -31,6 +27,9 @@ Other examples:
autobuild build -A64 -c ReleaseFS --no-configure -- --clean # Clean rebuild
autobuild build -A64 -c ReleaseFS -- --package # Complete a build and package it into a tarball
+If you want to build with clang you can call autobuild like this:
+ CC=clang CXX=clang++ autobuild configure -A64 -c ReleaseFS
+
Any of the configure options can also be used (and do the same thing) with the build options.
Typical LL autobuild configure options should also work, as long as they don't duplicate configuration we are
already doing.
diff --git a/indra/cmake/00-Common.cmake b/indra/cmake/00-Common.cmake
index 030b502524..9a95bf189e 100644
--- a/indra/cmake/00-Common.cmake
+++ b/indra/cmake/00-Common.cmake
@@ -214,6 +214,10 @@ if (LINUX)
set(CMAKE_CXX_LINK_FLAGS "-Wl,--no-keep-memory -Wl,--build-id -Wl,-rpath,'$ORIGIN:$ORIGIN/../lib' -Wl,--exclude-libs,ALL")
set(CMAKE_CXX_FLAGS_DEBUG "-fno-inline ${CMAKE_CXX_FLAGS_DEBUG}")
+
+ if( NOT (CMAKE_CXX_COMPILER MATCHES ".*clang") )
+ set( CMAKE_CXX_FLAGS "-fabi-version=9 ${CMAKE_CXX_FLAGS}" )
+ endif()
endif (LINUX)
diff --git a/indra/llcharacter/llcharacter.cpp b/indra/llcharacter/llcharacter.cpp
index 4dd66bc975..846ffa309a 100644
--- a/indra/llcharacter/llcharacter.cpp
+++ b/indra/llcharacter/llcharacter.cpp
@@ -106,7 +106,7 @@ LLJoint *LLCharacter::getJoint( const std::string &name )
if (!joint)
{
- LL_WARNS() << "Failed to find joint." << LL_ENDL;
+ LL_WARNS() << "Failed to find joint: " << name << LL_ENDL;
}
return joint;
}
diff --git a/indra/llcharacter/llmotioncontroller.cpp b/indra/llcharacter/llmotioncontroller.cpp
index 93c5dac12a..ac03b5f6ee 100644
--- a/indra/llcharacter/llmotioncontroller.cpp
+++ b/indra/llcharacter/llmotioncontroller.cpp
@@ -241,10 +241,12 @@ void LLMotionController::purgeExcessMotions()
}
U32 loaded_count = mLoadedMotions.size();
- if (loaded_count > (2 * MAX_MOTION_INSTANCES) && loaded_count > mLastCountAfterPurge)
- {
- LL_WARNS_ONCE("Animation") << loaded_count << " Loaded Motions. Amount of motions is over limit." << LL_ENDL;
- }
+ // Can't do anything about it anyway - stop spamming the log
+ //if (loaded_count > (2 * MAX_MOTION_INSTANCES) && loaded_count > mLastCountAfterPurge)
+ //{
+ // LL_WARNS_ONCE("Animation") << loaded_count << " Loaded Motions. Amount of motions is over limit." << LL_ENDL;
+ //}
+ //
mLastCountAfterPurge = loaded_count;
}
diff --git a/indra/llcommon/lluuid.h b/indra/llcommon/lluuid.h
index d98c3163ef..b6399ad094 100644
--- a/indra/llcommon/lluuid.h
+++ b/indra/llcommon/lluuid.h
@@ -134,6 +134,8 @@ public:
typedef std::vector uuid_vec_t;
typedef std::set uuid_set_t;
+// cleanupDeadObject spam avoidance
+typedef std::multiset uuid_multiset_t;
// Helper structure for ordering lluuids in stl containers. eg:
// std::map widget_map;
diff --git a/indra/newview/llappviewerlinux.cpp b/indra/newview/llappviewerlinux.cpp
index ebaa64e2a1..7b5adf53e1 100644
--- a/indra/newview/llappviewerlinux.cpp
+++ b/indra/newview/llappviewerlinux.cpp
@@ -417,15 +417,18 @@ void LLAppViewerLinux::initCrashReporting(bool reportFreeze)
pid_str << LLApp::getPid();
std::string logdir = gDirUtilp->getExpandedFilename(LL_PATH_DUMP, "");
std::string appname = gDirUtilp->getExecutableFilename();
+ std::string grid{ LLGridManager::getInstance()->getGridId() };
+ std::string title{ LLAppViewer::instance()->getSecondLifeTitle() };
+ std::string pidstr{ pid_str.str() };
// launch the actual crash logger
const char * cmdargv[] =
{cmd.c_str(),
"-user",
- (char*)LLGridManager::getInstance()->getGridId().c_str(),
+ grid.c_str(),
"-name",
- LLAppViewer::instance()->getSecondLifeTitle().c_str(),
+ title.c_str(),
"-pid",
- pid_str.str().c_str(),
+ pidstr.c_str(),
"-dumpdir",
logdir.c_str(),
"-procname",
diff --git a/indra/newview/llavatarrendernotifier.cpp b/indra/newview/llavatarrendernotifier.cpp
index f006fa1d8f..b608646abd 100644
--- a/indra/newview/llavatarrendernotifier.cpp
+++ b/indra/newview/llavatarrendernotifier.cpp
@@ -152,7 +152,7 @@ void LLAvatarRenderNotifier::displayNotification(bool show_over_limit)
}
// log unconditionally
- LL_WARNS("AvatarRenderInfo") << notification_name << " " << args << LL_ENDL;
+ LL_DEBUGS("AvatarRenderInfo") << notification_name << " " << args << LL_ENDL;
if ( expire_delay // expiration of zero means do not show the notices
&& gAgentCamera.getLastCameraMode() != CAMERA_MODE_MOUSELOOK // don't display notices in Mouselook
diff --git a/indra/newview/llinventoryfilter.cpp b/indra/newview/llinventoryfilter.cpp
index 5370e71588..ded58caba3 100644
--- a/indra/newview/llinventoryfilter.cpp
+++ b/indra/newview/llinventoryfilter.cpp
@@ -567,13 +567,6 @@ bool LLInventoryFilter::checkAgainstPermissions(const LLFolderViewModelItemInven
{
if (!listener) return FALSE;
- // Fix empty filtered folders still showing
- if (listener->getInventoryType() == LLInventoryType::IT_CATEGORY)
- {
- return false;
- }
- //
-
PermissionMask perm = listener->getPermissionMask();
const LLInvFVBridge *bridge = dynamic_cast(listener);
if (bridge && bridge->isLink())
diff --git a/indra/newview/llviewerobjectlist.cpp b/indra/newview/llviewerobjectlist.cpp
index dc040019f0..999dbaf40b 100644
--- a/indra/newview/llviewerobjectlist.cpp
+++ b/indra/newview/llviewerobjectlist.cpp
@@ -403,6 +403,7 @@ LLViewerObject* LLViewerObjectList::processObjectUpdateFromCache(LLVOCacheEntry*
bool justCreated = false;
if (!objectp)
{
+
objectp = createObjectFromCache(pcode, regionp, fullid, entry->getLocalID());
LL_DEBUGS("ObjectUpdate") << "uuid " << fullid << " created objectp " << objectp << LL_ENDL;
@@ -1415,25 +1416,20 @@ void LLViewerObjectList::cleanupReferences(LLViewerObject *objectp)
// bool new_dead_object = true;
if (mDeadObjects.find(objectp->mID) != mDeadObjects.end())
{
- LL_INFOS() << "Object " << objectp->mID << " already on dead list!" << LL_ENDL;
// FIRE-30694 DeadObject Spam
+ // LL_INFOS() << "Object " << objectp->mID << " already on dead list!" << LL_ENDL;
// new_dead_object = false;
+ LL_DEBUGS() << "Object " << objectp->mID << " already on dead list!" << LL_ENDL;
+ //
}
- else
+ // detect but still delete dupes
+ // else
{
// FIRE-30694 DeadObject Spam
// mDeadObjects.insert(objectp->mID);
- bool success;
- std::tie( std::ignore, success ) = mDeadObjects.insert( objectp->mID );
- if( success )
- {
- mNumDeadObjects++;
- llassert( mNumDeadObjects == mDeadObjects.size() );
- }
- else
- {
- LL_WARNS() << "Object " << objectp->mID << " failed to insert on dead list!" << LL_ENDL;
- }
+ mDeadObjects.insert( objectp->mID );
+ mNumDeadObjects++;
+ llassert( mNumDeadObjects == mDeadObjects.size() );
//
}
@@ -1641,11 +1637,17 @@ void LLViewerObjectList::cleanDeadObjects(BOOL use_timer)
{
// FIRE-30694 DeadObject Spam
// mDeadObjects.erase(objectp->mID); // Use timer for cleaning up dead objects
- if(mDeadObjects.erase(objectp->mID)==0)
- {
+ auto delete_me = mDeadObjects.find(objectp->mID);
+ if( delete_me !=mDeadObjects.end() )
+ {
+ mDeadObjects.erase( delete_me );
+ }
+ else
+ {
LL_WARNS() << "Attempt to delete object " << objectp->mID << " but object not in dead list" << LL_ENDL;
num_divergent++; // this is the number we are adrift in the count
- }
+ }
+
LLPointer::swap(*iter, *target);
*target = NULL;
++target;
@@ -1682,7 +1684,7 @@ void LLViewerObjectList::cleanDeadObjects(BOOL use_timer)
// TODO(Beq) If this still happens, we ought to realign at this point. Do a full sweep and reset.
if ( mNumDeadObjects != mDeadObjects.size() )
{
- LL_WARNS() << "Num dead objects (" << mNumDeadObjects << ") != dead object list size (" << mDeadObjects.size() << "), deadlist discrepancy (" << num_divergent << ")" << LL_ENDL;
+ LL_WARNS_ONCE() << "Num dead objects (" << mNumDeadObjects << ") != dead object list size (" << mDeadObjects.size() << "), deadlist discrepancy (" << num_divergent << ")" << LL_ENDL;
}
//
}
@@ -2326,7 +2328,7 @@ LLViewerObject *LLViewerObjectList::createObject(const LLPCode pcode, LLViewerRe
return NULL;
}
//
-
+
LLUUID fullid;
if (uuid == LLUUID::null)
{
@@ -2519,7 +2521,9 @@ void LLViewerObjectList::findOrphans(LLViewerObject* objectp, U32 ip, U32 port)
}
else
{
- LL_INFOS() << "Missing orphan child, removing from list" << LL_ENDL;
+ // descope uninteresting spam we can do nothing about.
+ // LL_INFOS() << "Missing orphan child, removing from list" << LL_ENDL;
+ LL_DEBUGS() << "Missing orphan child, removing from list" << LL_ENDL;
iter = mOrphanChildren.erase(iter);
}
diff --git a/indra/newview/llviewerobjectlist.h b/indra/newview/llviewerobjectlist.h
index 2a0a99f6bd..e295639cbb 100644
--- a/indra/newview/llviewerobjectlist.h
+++ b/indra/newview/llviewerobjectlist.h
@@ -223,7 +223,10 @@ protected:
vobj_list_t mMapObjects;
- uuid_set_t mDeadObjects;
+ // deadobject cleanup
+ // uuid_set_t mDeadObjects;
+ uuid_multiset_t mDeadObjects;
+ //
std::map > mUUIDObjectMap;
diff --git a/indra/newview/llvovolume.cpp b/indra/newview/llvovolume.cpp
index 14c9a90bc4..3167f7cce5 100644
--- a/indra/newview/llvovolume.cpp
+++ b/indra/newview/llvovolume.cpp
@@ -5319,13 +5319,15 @@ static LLTrace::BlockTimerStatHandle FTM_REGISTER_FACE("Register Face");
void LLVolumeGeometryManager::registerFace(LLSpatialGroup* group, LLFace* facep, U32 type)
{
LL_RECORD_BLOCK_TIME(FTM_REGISTER_FACE);
- if ( type == LLRenderPass::PASS_ALPHA
- && facep->getTextureEntry()->getMaterialParams().notNull()
- && !facep->getVertexBuffer()->hasDataType(LLVertexBuffer::TYPE_TANGENT)
- && LLViewerShaderMgr::instance()->getShaderLevel(LLViewerShaderMgr::SHADER_OBJECT) > 1)
- {
- LL_WARNS_ONCE("RenderMaterials") << "Oh no! No binormals for this alpha blended face!" << LL_ENDL;
- }
+ // Can't do anything about it anyway - stop spamming the log
+ //if ( type == LLRenderPass::PASS_ALPHA
+ // && facep->getTextureEntry()->getMaterialParams().notNull()
+ // && !facep->getVertexBuffer()->hasDataType(LLVertexBuffer::TYPE_TANGENT)
+ // && LLViewerShaderMgr::instance()->getShaderLevel(LLViewerShaderMgr::SHADER_OBJECT) > 1)
+ //{
+ // LL_WARNS_ONCE("RenderMaterials") << "Oh no! No binormals for this alpha blended face!" << LL_ENDL;
+ //}
+ //
// bool selected = facep->getViewerObject()->isSelected();
//
diff --git a/indra/newview/skins/ansastorm/xui/ru/panel_main_inventory.xml b/indra/newview/skins/ansastorm/xui/ru/panel_main_inventory.xml
index ea0a4c56e2..4add688fca 100644
--- a/indra/newview/skins/ansastorm/xui/ru/panel_main_inventory.xml
+++ b/indra/newview/skins/ansastorm/xui/ru/panel_main_inventory.xml
@@ -6,9 +6,10 @@
[ITEM_COUNT] Элементов [FILTER]
-
- Объекты:
-
+
+ Обнаружено [ITEM_COUNT] элементов [FILTER]
+
+
@@ -108,7 +111,7 @@
-
+
Элементов
diff --git a/indra/newview/skins/default/xui/en/panel_preferences_move.xml b/indra/newview/skins/default/xui/en/panel_preferences_move.xml
index 1375827547..c8cbd6d38b 100644
--- a/indra/newview/skins/default/xui/en/panel_preferences_move.xml
+++ b/indra/newview/skins/default/xui/en/panel_preferences_move.xml
@@ -325,7 +325,7 @@
follows="left|top"
enabled_control="EnableMouselook"
height="16"
- label="Don't close Conversations and Radar windows when changing into Mouselook"
+ label="Keep Conversations and Radar windows open when changing into Mouselook"
layout="topleft"
name="FSShowConvoAndRadarInML"
top_pad="5"
diff --git a/indra/newview/skins/default/xui/ru/floater_inventory_view_finder.xml b/indra/newview/skins/default/xui/ru/floater_inventory_view_finder.xml
index bdab1bfd2e..9e9f358df8 100644
--- a/indra/newview/skins/default/xui/ru/floater_inventory_view_finder.xml
+++ b/indra/newview/skins/default/xui/ru/floater_inventory_view_finder.xml
@@ -15,6 +15,9 @@
+
+
+
diff --git a/indra/newview/skins/default/xui/ru/menu_inventory_gear_default.xml b/indra/newview/skins/default/xui/ru/menu_inventory_gear_default.xml
index eea4287bb6..620a71305d 100644
--- a/indra/newview/skins/default/xui/ru/menu_inventory_gear_default.xml
+++ b/indra/newview/skins/default/xui/ru/menu_inventory_gear_default.xml
@@ -11,7 +11,6 @@
-
@@ -27,5 +26,8 @@
+
+
+
diff --git a/indra/newview/skins/default/xui/ru/strings.xml b/indra/newview/skins/default/xui/ru/strings.xml
index 7dd8e42523..d6023c63dd 100644
--- a/indra/newview/skins/default/xui/ru/strings.xml
+++ b/indra/newview/skins/default/xui/ru/strings.xml
@@ -1890,6 +1890,10 @@ http://www.firestormviewer.org/support за помощь в решении эт
+
+
+
+
Инвентарь
diff --git a/indra/newview/skins/vintage/xui/ru/panel_main_inventory.xml b/indra/newview/skins/vintage/xui/ru/panel_main_inventory.xml
index 136a4f8904..8b1e93da5d 100644
--- a/indra/newview/skins/vintage/xui/ru/panel_main_inventory.xml
+++ b/indra/newview/skins/vintage/xui/ru/panel_main_inventory.xml
@@ -67,7 +67,9 @@
-
+
+
+
@@ -96,7 +98,7 @@
-
+
Объекты: