Merge branch 'master' of https://vcs.firestormviewer.org/phoenix-firestorm into linux-updates
commit
1f550f2fd0
|
|
@ -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.
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
// <FS:Ansariel> 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;
|
||||
//}
|
||||
// </FS:Ansariel>
|
||||
mLastCountAfterPurge = loaded_count;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -134,6 +134,8 @@ public:
|
|||
|
||||
typedef std::vector<LLUUID> uuid_vec_t;
|
||||
typedef std::set<LLUUID> uuid_set_t;
|
||||
// <FS:Beq> cleanupDeadObject spam avoidance
|
||||
typedef std::multiset<LLUUID> uuid_multiset_t;
|
||||
|
||||
// Helper structure for ordering lluuids in stl containers. eg:
|
||||
// std::map<LLUUID, LLWidget*, lluuid_less> widget_map;
|
||||
|
|
|
|||
|
|
@ -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",
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -567,13 +567,6 @@ bool LLInventoryFilter::checkAgainstPermissions(const LLFolderViewModelItemInven
|
|||
{
|
||||
if (!listener) return FALSE;
|
||||
|
||||
// <FS:Zi> Fix empty filtered folders still showing
|
||||
if (listener->getInventoryType() == LLInventoryType::IT_CATEGORY)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
// </FS:Zi>
|
||||
|
||||
PermissionMask perm = listener->getPermissionMask();
|
||||
const LLInvFVBridge *bridge = dynamic_cast<const LLInvFVBridge *>(listener);
|
||||
if (bridge && bridge->isLink())
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
// <FS:Beq> 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;
|
||||
// </FS:Beq>
|
||||
}
|
||||
else
|
||||
// <FS:Beq> detect but still delete dupes
|
||||
// else
|
||||
{
|
||||
// <FS:Beq> 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() );
|
||||
// </FS:Beq>
|
||||
}
|
||||
|
||||
|
|
@ -1641,11 +1637,17 @@ void LLViewerObjectList::cleanDeadObjects(BOOL use_timer)
|
|||
{
|
||||
// <FS:Beq> FIRE-30694 DeadObject Spam
|
||||
// mDeadObjects.erase(objectp->mID); // <FS:Ansariel> 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<LLViewerObject>::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;
|
||||
}
|
||||
// </FS:Ansariel>
|
||||
}
|
||||
|
|
@ -2326,7 +2328,7 @@ LLViewerObject *LLViewerObjectList::createObject(const LLPCode pcode, LLViewerRe
|
|||
return NULL;
|
||||
}
|
||||
// </FS:Ansariel>
|
||||
|
||||
|
||||
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;
|
||||
// <FS:Beq> 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);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -223,7 +223,10 @@ protected:
|
|||
|
||||
vobj_list_t mMapObjects;
|
||||
|
||||
uuid_set_t mDeadObjects;
|
||||
// <FS:Beq> deadobject cleanup
|
||||
// uuid_set_t mDeadObjects;
|
||||
uuid_multiset_t mDeadObjects;
|
||||
// </FS:Beq>
|
||||
|
||||
std::map<LLUUID, LLPointer<LLViewerObject> > mUUIDObjectMap;
|
||||
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
// <FS:Ansariel> 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;
|
||||
//}
|
||||
// </FS:Ansariel>
|
||||
|
||||
// bool selected = facep->getViewerObject()->isSelected();
|
||||
//
|
||||
|
|
|
|||
|
|
@ -6,9 +6,10 @@
|
|||
<panel.string name="ItemcountCompleted">
|
||||
[ITEM_COUNT] Элементов [FILTER]
|
||||
</panel.string>
|
||||
<text name="ItemcountText">
|
||||
Объекты:
|
||||
</text>
|
||||
<panel.string name="ItemcountUnknown">
|
||||
Обнаружено [ITEM_COUNT] элементов [FILTER]
|
||||
</panel.string>
|
||||
|
||||
<menu_bar name="inventory_menu_bar">
|
||||
<menu label="Инвентарь" name="inventory_inventory_menu">
|
||||
<menu_item_call name="inventory_open" label="Открыть" />
|
||||
|
|
@ -70,7 +71,9 @@
|
|||
<menu_item_check name="inventory_filter_show_links" label="Показать ссылки" />
|
||||
<menu_item_check name="inventory_filter_only_links" label="Показать только ссылки" />
|
||||
<menu_item_check name="inventory_filter_hide_links" label="Скрыть ссылки" />
|
||||
<menu_item_check name="inventory_show_partial_results" label="Показать частичные результаты поиска" />
|
||||
<menu_item_check name="inventory_filter_only_modify" label="Только изменяемое"/>
|
||||
<menu_item_check name="inventory_filter_only_copy" label="Только копируемое"/>
|
||||
<menu_item_check name="inventory_filter_only_transfer" label="Только передаваемое"/>
|
||||
</menu>
|
||||
</menu_bar>
|
||||
<filter_editor label="Фильтр" name="inventory search editor" tool_tip="Напишите одно или несколько слов для поиска. Для разделения используйте '+' "/>
|
||||
|
|
@ -108,7 +111,7 @@
|
|||
<button name="new_inv_btn" tool_tip="Дополнительное окно инвентаря"/>
|
||||
</panel>
|
||||
<panel name="dummy_panel">
|
||||
<text name="ItemcountText">
|
||||
<text name="ItemcountText" tool_tip="[ITEMS] предметов, [CATEGORIES] папок">
|
||||
Элементов
|
||||
</text>
|
||||
</panel>
|
||||
|
|
|
|||
|
|
@ -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"
|
||||
|
|
|
|||
|
|
@ -15,6 +15,9 @@
|
|||
<check_box label="Настройки" name="check_settings"/>
|
||||
<button label="Все" label_selected="Все" name="All"/>
|
||||
<button label="Нет" label_selected="Нет" name="None"/>
|
||||
<check_box label="Изм." name="check_modify"/>
|
||||
<check_box label="Коп." name="check_copy"/>
|
||||
<check_box label="Пер." name="check_transfer"/>
|
||||
<check_box label="Показывать папки" name="check_show_empty"/>
|
||||
<check_box label="Создано мной" name="check_created_by_me"/>
|
||||
<check_box label="Создано другими" name="check_created_by_others"/>
|
||||
|
|
|
|||
|
|
@ -11,7 +11,6 @@
|
|||
<menu_item_check name="inventory_search_by_creator" label="Создателю"/>
|
||||
<menu_item_check name="inventory_search_by_description" label="Описанию"/>
|
||||
<menu_item_check name="inventory_search_by_all" label="Всему"/>
|
||||
<menu_item_check name="inventory_show_partial_results" label="Частичные результаты"/>
|
||||
</context_menu>
|
||||
<menu_item_check label="Добавление объектов по двойному нажатию" name="add_inv_toggle"/>
|
||||
<menu_item_check label="Добавление одежды по двойному нажатию" name="add_invclothing_toggle"/>
|
||||
|
|
@ -27,5 +26,8 @@
|
|||
<menu_item_check name="inventory_filter_show_links" label="Показать ссылки"/>
|
||||
<menu_item_check name="inventory_filter_only_links" label="Показать только ссылки"/>
|
||||
<menu_item_check name="inventory_filter_hide_links" label="Скрыть ссылки"/>
|
||||
<menu_item_check name="inventory_filter_only_modify" label="Только изменяемое"/>
|
||||
<menu_item_check name="inventory_filter_only_copy" label="Только копируемое"/>
|
||||
<menu_item_check name="inventory_filter_only_transfer" label="Показать передаваемое"/>
|
||||
<menu_item_call label="Очистить корзину" name="empty_trash"/>
|
||||
</toggleable_menu>
|
||||
|
|
|
|||
|
|
@ -1890,6 +1890,10 @@ http://www.firestormviewer.org/support за помощь в решении эт
|
|||
<string name="Snapshots" value=" Снимки,"/>
|
||||
<string name="No Filters" value="Нет "/>
|
||||
<string name="Since Logoff" value=" - с выхода"/>
|
||||
<string name="Modifiable" value="Изменяемое"/>
|
||||
<string name="Copyable" value="Копируемое"/>
|
||||
<string name="Transferable" value="Передаваемое"/>
|
||||
<string name="PermissionsFilter" value=" - Только [PERMISSIONS]"/>
|
||||
<string name="InvFolder My Inventory">
|
||||
Инвентарь
|
||||
</string>
|
||||
|
|
|
|||
|
|
@ -67,7 +67,9 @@
|
|||
<menu_item_check name="inventory_filter_show_links" label="Показать ссылки" />
|
||||
<menu_item_check name="inventory_filter_only_links" label="Показать только ссылки" />
|
||||
<menu_item_check name="inventory_filter_hide_links" label="Скрыть ссылки" />
|
||||
<menu_item_check name="inventory_show_partial_results" label="Показать частичные результаты поиска" />
|
||||
<menu_item_check name="inventory_filter_only_modify" label="Только изменяемые"/>
|
||||
<menu_item_check name="inventory_filter_only_copy" label="Только копируемые"/>
|
||||
<menu_item_check name="inventory_filter_only_transfer" label="Только передаваемые"/>
|
||||
</menu>
|
||||
</menu_bar>
|
||||
<filter_editor label="Фильтр" name="inventory search editor" tool_tip="Напишите одно или несколько слов для поиска. Для разделения используйте '+' "/>
|
||||
|
|
@ -96,7 +98,7 @@
|
|||
<recent_inventory_panel label="Недавние" name="Recent Items"/>
|
||||
<worn_inventory_panel label="Надетые" name="Worn Items"/>
|
||||
</tab_container>
|
||||
<text name="ItemcountText">
|
||||
<text name="ItemcountText" tool_tip="[ITEMS] предметов, [CATEGORIES] папок">
|
||||
Объекты:
|
||||
</text>
|
||||
</panel>
|
||||
|
|
|
|||
Loading…
Reference in New Issue