Merge Firestorm LGPL
commit
3fed6c743a
|
|
@ -84,87 +84,76 @@ if(WINDOWS)
|
|||
# Copy MS C runtime dlls, required for packaging.
|
||||
# *TODO - Adapt this to support VC9
|
||||
if (MSVC80)
|
||||
list(APPEND LMSVC_VER 80)
|
||||
list(APPEND LMSVC_VERDOT 8.0)
|
||||
set(MSVC_VER 80)
|
||||
set(MSVC_VERDOT 8.0)
|
||||
elseif (MSVC_VERSION EQUAL 1600) # VisualStudio 2010
|
||||
MESSAGE(STATUS "MSVC_VERSION ${MSVC_VERSION}")
|
||||
set(MSVC_VER 100)
|
||||
set(MSVC_VERDOT 10.0)
|
||||
elseif (MSVC_VERSION EQUAL 1800) # VisualStudio 2013, which is (sigh) VS 12
|
||||
list(APPEND LMSVC_VER 120)
|
||||
list(APPEND LMSVC_VERDOT 12.0)
|
||||
set(MSVC_VER 120)
|
||||
set(MSVC_VERDOT 12.0)
|
||||
else (MSVC80)
|
||||
MESSAGE(WARNING "New MSVC_VERSION ${MSVC_VERSION} of MSVC: adapt Copy3rdPartyLibs.cmake")
|
||||
endif (MSVC80)
|
||||
|
||||
# try to copy VS2010 redist independently of system version
|
||||
list(APPEND LMSVC_VER 100)
|
||||
list(APPEND LMSVC_VERDOT 10.0)
|
||||
|
||||
list(LENGTH LMSVC_VER count)
|
||||
math(EXPR count "${count}-1")
|
||||
foreach(i RANGE ${count})
|
||||
list(GET LMSVC_VER ${i} MSVC_VER)
|
||||
list(GET LMSVC_VERDOT ${i} MSVC_VERDOT)
|
||||
MESSAGE(STATUS "Copying redist libs for VC ${MSVC_VERDOT}")
|
||||
FIND_PATH(debug_msvc_redist_path NAME msvcr${MSVC_VER}d.dll
|
||||
PATHS
|
||||
[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\VisualStudio\\${MSVC_VERDOT}\\Setup\\VC;ProductDir]/redist/Debug_NonRedist/x86/Microsoft.VC${MSVC_VER}.DebugCRT
|
||||
[HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Control\\Windows;Directory]/SysWOW64
|
||||
[HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Control\\Windows;Directory]/System32
|
||||
${MSVC_DEBUG_REDIST_PATH}
|
||||
NO_DEFAULT_PATH
|
||||
FIND_PATH(debug_msvc_redist_path msvcr${MSVC_VER}d.dll
|
||||
PATHS
|
||||
${MSVC_DEBUG_REDIST_PATH}
|
||||
[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\VisualStudio\\${MSVC_VERDOT}\\Setup\\VC;ProductDir]/redist/Debug_NonRedist/x86/Microsoft.VC${MSVC_VER}.DebugCRT
|
||||
[HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Control\\Windows;Directory]/SysWOW64
|
||||
[HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Control\\Windows;Directory]/System32
|
||||
NO_DEFAULT_PATH
|
||||
)
|
||||
|
||||
if(EXISTS ${debug_msvc_redist_path})
|
||||
set(debug_msvc_files
|
||||
msvcr${MSVC_VER}d.dll
|
||||
msvcp${MSVC_VER}d.dll
|
||||
)
|
||||
|
||||
if(EXISTS ${debug_msvc_redist_path})
|
||||
set(debug_msvc_files
|
||||
msvcr${MSVC_VER}d.dll
|
||||
msvcp${MSVC_VER}d.dll
|
||||
)
|
||||
copy_if_different(
|
||||
${debug_msvc_redist_path}
|
||||
"${SHARED_LIB_STAGING_DIR_DEBUG}"
|
||||
out_targets
|
||||
${debug_msvc_files}
|
||||
)
|
||||
set(third_party_targets ${third_party_targets} ${out_targets})
|
||||
|
||||
copy_if_different(
|
||||
${debug_msvc_redist_path}
|
||||
"${SHARED_LIB_STAGING_DIR_DEBUG}"
|
||||
out_targets
|
||||
${debug_msvc_files}
|
||||
)
|
||||
set(third_party_targets ${third_party_targets} ${out_targets})
|
||||
endif ()
|
||||
|
||||
unset(debug_msvc_redist_path CACHE)
|
||||
endif()
|
||||
FIND_PATH(release_msvc_redist_path msvcr${MSVC_VER}.dll
|
||||
PATHS
|
||||
${MSVC_REDIST_PATH}
|
||||
[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\VisualStudio\\${MSVC_VERDOT}\\Setup\\VC;ProductDir]/redist/x86/Microsoft.VC${MSVC_VER}.CRT
|
||||
[HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Control\\Windows;Directory]/SysWOW64
|
||||
[HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Control\\Windows;Directory]/System32
|
||||
NO_DEFAULT_PATH
|
||||
)
|
||||
|
||||
FIND_PATH(release_msvc_redist_path NAME msvcr${MSVC_VER}.dll
|
||||
PATHS
|
||||
[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\VisualStudio\\${MSVC_VERDOT}\\Setup\\VC;ProductDir]/redist/x86/Microsoft.VC${MSVC_VER}.CRT
|
||||
[HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Control\\Windows;Directory]/SysWOW64
|
||||
[HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Control\\Windows;Directory]/System32
|
||||
${MSVC_REDIST_PATH}
|
||||
NO_DEFAULT_PATH
|
||||
if(EXISTS ${release_msvc_redist_path})
|
||||
set(release_msvc_files
|
||||
msvcr${MSVC_VER}.dll
|
||||
msvcp${MSVC_VER}.dll
|
||||
)
|
||||
|
||||
if(EXISTS ${release_msvc_redist_path})
|
||||
set(release_msvc_files
|
||||
msvcr${MSVC_VER}.dll
|
||||
msvcp${MSVC_VER}.dll
|
||||
)
|
||||
copy_if_different(
|
||||
${release_msvc_redist_path}
|
||||
"${SHARED_LIB_STAGING_DIR_RELEASE}"
|
||||
out_targets
|
||||
${release_msvc_files}
|
||||
)
|
||||
set(third_party_targets ${third_party_targets} ${out_targets})
|
||||
|
||||
copy_if_different(
|
||||
${release_msvc_redist_path}
|
||||
"${SHARED_LIB_STAGING_DIR_RELEASE}"
|
||||
out_targets
|
||||
${release_msvc_files}
|
||||
)
|
||||
set(third_party_targets ${third_party_targets} ${out_targets})
|
||||
copy_if_different(
|
||||
${release_msvc_redist_path}
|
||||
"${SHARED_LIB_STAGING_DIR_RELWITHDEBINFO}"
|
||||
out_targets
|
||||
${release_msvc_files}
|
||||
)
|
||||
set(third_party_targets ${third_party_targets} ${out_targets})
|
||||
|
||||
endif ()
|
||||
|
||||
copy_if_different(
|
||||
${release_msvc_redist_path}
|
||||
"${SHARED_LIB_STAGING_DIR_RELWITHDEBINFO}"
|
||||
out_targets
|
||||
${release_msvc_files}
|
||||
)
|
||||
set(third_party_targets ${third_party_targets} ${out_targets})
|
||||
|
||||
unset(release_msvc_redist_path CACHE)
|
||||
endif()
|
||||
endforeach()
|
||||
|
||||
elseif(DARWIN)
|
||||
set(SHARED_LIB_STAGING_DIR_DEBUG "${SHARED_LIB_STAGING_DIR}/Debug/Resources")
|
||||
|
|
|
|||
|
|
@ -1200,6 +1200,7 @@ bool LLSDBinaryParser::parseString(
|
|||
read(istr, (char*)&value_nbo, sizeof(U32)); /*Flawfinder: ignore*/
|
||||
S32 size = (S32)ntohl(value_nbo);
|
||||
if(mCheckLimits && (size > mMaxBytesLeft)) return false;
|
||||
if(size < 0) return false;
|
||||
std::vector<char> buf;
|
||||
if(size)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -265,6 +265,18 @@ void LLAvatarNameCache::handleAvNameCacheSuccess(const LLSD &data, const LLSD &h
|
|||
LLUUID agent_id = row["id"].asUUID();
|
||||
|
||||
LLAvatarName av_name;
|
||||
// <FS> Contact sets alias
|
||||
if (LGGContactSets::getInstance()->hasPseudonym(agent_id))
|
||||
{
|
||||
LLSD info(row);
|
||||
info["is_display_name_default"] = LGGContactSets::getInstance()->hasDisplayNameRemoved(agent_id);
|
||||
info["display_name"] = LGGContactSets::getInstance()->hasDisplayNameRemoved(agent_id)
|
||||
? (info["legacy_first_name"].asString() + " " + info["legacy_last_name"].asString())
|
||||
: LGGContactSets::getInstance()->getPseudonym(agent_id);
|
||||
av_name.fromLLSD(info);
|
||||
}
|
||||
else
|
||||
// </FS> Contact sets alias
|
||||
av_name.fromLLSD(row);
|
||||
|
||||
// Use expiration time from header
|
||||
|
|
@ -668,7 +680,8 @@ bool LLAvatarNameCache::get(const LLUUID& agent_id, LLAvatarName *av_name)
|
|||
if (it != sCache.end())
|
||||
{
|
||||
*av_name = it->second;
|
||||
if(LGGContactSets::getInstance()->hasPseudonym(agent_id))
|
||||
// <FS> Contact sets alias
|
||||
if (LGGContactSets::getInstance()->hasPseudonym(agent_id))
|
||||
{
|
||||
LLSD info = av_name->asLLSD();
|
||||
info["is_display_name_default"] = LGGContactSets::getInstance()->hasDisplayNameRemoved(agent_id);
|
||||
|
|
@ -677,6 +690,7 @@ bool LLAvatarNameCache::get(const LLUUID& agent_id, LLAvatarName *av_name)
|
|||
: LGGContactSets::getInstance()->getPseudonym(agent_id);
|
||||
av_name->fromLLSD(info);
|
||||
}
|
||||
// <FS/> Contact sets alias
|
||||
|
||||
// re-request name if entry is expired
|
||||
if (av_name->mExpires < LLFrameTimer::getTotalSeconds())
|
||||
|
|
@ -723,8 +737,9 @@ LLAvatarNameCache::callback_connection_t LLAvatarNameCache::get(const LLUUID& ag
|
|||
{
|
||||
LLAvatarName& av_name = it->second;
|
||||
LLSD test = av_name.asLLSD();
|
||||
|
||||
if(LGGContactSets::getInstance()->hasPseudonym(agent_id))
|
||||
|
||||
// <FS> Contact sets alias
|
||||
if (LGGContactSets::getInstance()->hasPseudonym(agent_id))
|
||||
{
|
||||
LL_DEBUGS("AvNameCache") << "DN cache hit via alias " << agent_id << LL_ENDL;
|
||||
LLSD info = av_name.asLLSD();
|
||||
|
|
@ -734,7 +749,8 @@ LLAvatarNameCache::callback_connection_t LLAvatarNameCache::get(const LLUUID& ag
|
|||
: LGGContactSets::getInstance()->getPseudonym(agent_id);
|
||||
av_name.fromLLSD(info);
|
||||
}
|
||||
|
||||
// </FS> Contact sets alias
|
||||
|
||||
if (av_name.mExpires > LLFrameTimer::getTotalSeconds())
|
||||
{
|
||||
// ...name already exists in cache, fire callback now
|
||||
|
|
|
|||
|
|
@ -202,6 +202,7 @@ LLMessageSystem::LLMessageSystem(const std::string& filename, U32 port,
|
|||
const F32 circuit_heartbeat_interval, const F32 circuit_timeout) :
|
||||
mCircuitInfo(F32Seconds(circuit_heartbeat_interval), F32Seconds(circuit_timeout)),
|
||||
mLastMessageFromTrustedMessageService(false)
|
||||
,mIsInSecondLife(true) // <FS:Ansariel> Restore original LLMessageSystem HTTP options for OpenSim
|
||||
{
|
||||
init();
|
||||
|
||||
|
|
@ -4024,6 +4025,14 @@ void LLMessageSystem::sendUntrustedSimulatorMessageCoro(std::string url, std::st
|
|||
LLCore::HttpRequest::ptr_t httpRequest(new LLCore::HttpRequest);
|
||||
LLCore::HttpOptions::ptr_t httpOpts = LLCore::HttpOptions::ptr_t(new LLCore::HttpOptions);
|
||||
|
||||
// <FS:Ansariel> Restore original LLMessageSystem HTTP options for OpenSim
|
||||
if (!mIsInSecondLife)
|
||||
{
|
||||
httpOpts->setRetries(0);
|
||||
httpOpts->setTimeout(60);
|
||||
httpOpts->setTransferTimeout(60);
|
||||
}
|
||||
// </FS:Ansariel>
|
||||
|
||||
if (url.empty())
|
||||
{
|
||||
|
|
|
|||
|
|
@ -737,6 +737,9 @@ public:
|
|||
// This will cause all trust queries to return true until the next message
|
||||
// is read: use with caution!
|
||||
void receivedMessageFromTrustedSender();
|
||||
|
||||
// <FS:Ansariel> Restore original LLMessageSystem HTTP options for OpenSim
|
||||
void setIsInSecondLife(bool in_second_life) { mIsInSecondLife = in_second_life; }
|
||||
|
||||
private:
|
||||
typedef boost::function<void(S32)> UntrustedCallback_t;
|
||||
|
|
@ -828,6 +831,9 @@ private:
|
|||
|
||||
/** Find, create or revive circuit for host as needed */
|
||||
LLCircuitData* findCircuit(const LLHost& host, bool resetPacketId);
|
||||
|
||||
// <FS:Ansariel> Restore original LLMessageSystem HTTP options for OpenSim
|
||||
bool mIsInSecondLife;
|
||||
};
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -352,6 +352,7 @@ void LLLineEditor::reshape(S32 width, S32 height, BOOL called_from_parent)
|
|||
|
||||
void LLLineEditor::setEnabled(BOOL enabled)
|
||||
{
|
||||
LLUICtrl::setEnabled(enabled); // <FS:Ansariel> Enabling LLLineEditor via XUI breaks enabled-state
|
||||
mReadOnly = !enabled;
|
||||
setTabStop(!mReadOnly);
|
||||
updateAllowingLanguageInput();
|
||||
|
|
|
|||
|
|
@ -1521,7 +1521,7 @@ std::string LLUrlEntryJira::getUrl(const std::string &string) const
|
|||
string.find("SLS") != std::string::npos ||
|
||||
string.find("SUP") != std::string::npos )
|
||||
{
|
||||
return llformat("http://jira.phoenixviewer.com/browse/%s", string.c_str());
|
||||
return llformat("https://jira.phoenixviewer.com/browse/%s", string.c_str());
|
||||
}
|
||||
else
|
||||
{
|
||||
|
|
|
|||
|
|
@ -12970,7 +12970,7 @@ Change of this parameter will affect the layout of buttons in notification toast
|
|||
<key>Type</key>
|
||||
<string>String</string>
|
||||
<key>Value</key>
|
||||
<string>http://jira.phoenixviewer.com/secure/CreateIssueDetails!init.jspa?pid=10005&issuetype=1&priority=3&environment=[ENVIRONMENT]</string>
|
||||
<string>https://jira.phoenixviewer.com/secure/CreateIssueDetails!init.jspa?pid=10005&issuetype=1&priority=3&environment=[ENVIRONMENT]</string>
|
||||
</map>
|
||||
<key>RevokePermsOnStopAnimation</key>
|
||||
<map>
|
||||
|
|
|
|||
|
|
@ -333,7 +333,6 @@ bool FSFloaterIMContainer::hasFloater(LLFloater* floaterp)
|
|||
void FSFloaterIMContainer::onCloseFloater(LLUUID& id)
|
||||
{
|
||||
mSessions.erase(id);
|
||||
setFocus(TRUE);
|
||||
}
|
||||
|
||||
void FSFloaterIMContainer::onNewMessageReceived(const LLSD& data)
|
||||
|
|
|
|||
|
|
@ -223,14 +223,15 @@ void FSFloaterLinkReplace::linkCreatedCallback(const LLUUID& old_item_id,
|
|||
// *after* the original link has been removed. LLAppearanceMgr abuses the actual link
|
||||
// description to store the clothing ordering information it. We will have to update
|
||||
// the clothing ordering information or the outfit will be in dirty state when worn.
|
||||
remove_inventory_object(old_item_id, new LLBoostFuncInventoryCallback(boost::bind(&LLAppearanceMgr::updateClothingOrderingInfo,
|
||||
LLPointer<LLInventoryCallback> cb = new LLBoostFuncInventoryCallback(boost::bind(&LLAppearanceMgr::updateClothingOrderingInfo,
|
||||
LLAppearanceMgr::getInstance(),
|
||||
outfit_folder_id,
|
||||
LLPointer<LLInventoryCallback>(NULL))));
|
||||
LLPointer<LLInventoryCallback>(NULL)));
|
||||
remove_inventory_object(old_item_id, cb);
|
||||
}
|
||||
else
|
||||
{
|
||||
remove_inventory_object(old_item_id, NULL);
|
||||
remove_inventory_object(old_item_id, LLPointer<LLInventoryCallback>(NULL));
|
||||
}
|
||||
|
||||
if (mInstance)
|
||||
|
|
@ -306,15 +307,14 @@ void FSFloaterLinkReplace::processBatch(LLInventoryModel::item_array_t items)
|
|||
|
||||
LLInventoryObject::const_object_list_t obj_array;
|
||||
obj_array.push_back(LLConstPointer<LLInventoryObject>(target_item));
|
||||
link_inventory_array(source_item->getParentUUID(),
|
||||
obj_array,
|
||||
new LLBoostFuncInventoryCallback(boost::bind(&FSFloaterLinkReplace::linkCreatedCallback,
|
||||
LLPointer<LLInventoryCallback> cb = new LLBoostFuncInventoryCallback(boost::bind(&FSFloaterLinkReplace::linkCreatedCallback,
|
||||
this,
|
||||
source_item->getUUID(),
|
||||
target_item->getUUID(),
|
||||
needs_wearable_ordering_update,
|
||||
needs_description_update,
|
||||
(is_outfit_folder ? source_item->getParentUUID() : LLUUID::null) )));
|
||||
(is_outfit_folder ? source_item->getParentUUID() : LLUUID::null) ));
|
||||
link_inventory_array(source_item->getParentUUID(), obj_array, cb);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
|
|
|||
|
|
@ -1501,10 +1501,12 @@ void LLAppearanceMgr::wearItemsOnAvatar(const uuid_vec_t& item_ids_to_wear,
|
|||
}
|
||||
|
||||
// [RLVa:KB] - Checked: 2013-02-12 (RLVa-1.4.8)
|
||||
if ( (rlv_handler_t::isEnabled()) && (!rlvPredCanWearItem(item_to_wear, (replace) ? RLV_WEAR_REPLACE : RLV_WEAR_ADD)) )
|
||||
{
|
||||
continue;
|
||||
}
|
||||
if ( (rlv_handler_t::isEnabled()) && (!rlvPredCanWearItem(item_to_wear, (item_to_wear->getType() == LLAssetType::AT_BODYPART || replace) ? RLV_WEAR_REPLACE : RLV_WEAR_ADD)) )
|
||||
{
|
||||
LL_DEBUGS("Avatar") << "inventory item cannot be worn because of RLV restriction, skipping "
|
||||
<< item_to_wear->getName() << " id " << item_id_to_wear << LL_ENDL;
|
||||
continue;
|
||||
}
|
||||
// [/RLVa:KB]
|
||||
|
||||
switch (item_to_wear->getType())
|
||||
|
|
@ -1524,9 +1526,9 @@ void LLAppearanceMgr::wearItemsOnAvatar(const uuid_vec_t& item_ids_to_wear,
|
|||
LLUUID item_id = gAgentWearables.getWearableItemID(item_to_wear->getWearableType(),
|
||||
wearable_count-1);
|
||||
// [SL:KB] - Patch: Appearance-AISFilter | Checked: 2015-05-02 (Catznip-3.7)
|
||||
removeCOFItemLinks(item_id, NULL, true);
|
||||
removeCOFItemLinks(item_id, NULL, true);
|
||||
// [/SL:KB]
|
||||
// removeCOFItemLinks(item_id, cb);
|
||||
// removeCOFItemLinks(item_id, cb);
|
||||
}
|
||||
|
||||
items_to_link.push_back(item_to_wear);
|
||||
|
|
|
|||
|
|
@ -1393,7 +1393,10 @@ void LLSpatialBridge::setVisible(LLCamera& camera_in, std::vector<LLDrawable*>*
|
|||
LLVOAvatar* avatarp = (LLVOAvatar*) objparent;
|
||||
if (avatarp->isVisible())
|
||||
{
|
||||
impostor = objparent->isAvatar() && ((LLVOAvatar*) objparent)->isImpostor();
|
||||
// <FS:Ansariel> Fix LL impostor hacking
|
||||
//impostor = objparent->isAvatar() && ((LLVOAvatar*) objparent)->isImpostor();
|
||||
impostor = objparent->isAvatar() && avatarp->isImpostor() && !avatarp->needsImpostorUpdate();
|
||||
// </FS:Ansariel>
|
||||
loaded = objparent->isAvatar() && ((LLVOAvatar*) objparent)->isFullyLoaded();
|
||||
}
|
||||
else
|
||||
|
|
@ -1483,7 +1486,10 @@ void LLSpatialBridge::updateDistance(LLCamera& camera_in, bool force_update)
|
|||
if (parent && parent->getVObj())
|
||||
{
|
||||
LLVOAvatar* av = parent->getVObj()->asAvatar();
|
||||
if (av && av->isImpostor())
|
||||
// <FS:Ansariel> Fix LL impostor hacking
|
||||
//if (av && av->isImpostor())
|
||||
if (av && av->isImpostor() && !av->needsImpostorUpdate())
|
||||
// </FS:Ansariel>
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -489,8 +489,11 @@ void LLDrawPoolAvatar::renderShadow(S32 pass)
|
|||
|
||||
BOOL impostor = avatarp->isImpostor();
|
||||
if (impostor
|
||||
&& LLVOAvatar::AV_DO_NOT_RENDER != avatarp->getVisualMuteSettings()
|
||||
&& LLVOAvatar::AV_ALWAYS_RENDER != avatarp->getVisualMuteSettings())
|
||||
// <FS:Ansariel> Fix LL impostor hacking; No shadow for impostors
|
||||
//&& LLVOAvatar::AV_DO_NOT_RENDER != avatarp->getVisualMuteSettings()
|
||||
//&& LLVOAvatar::AV_ALWAYS_RENDER != avatarp->getVisualMuteSettings())
|
||||
)
|
||||
// </FS:Ansariel>
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
|
@ -1370,9 +1373,12 @@ void LLDrawPoolAvatar::renderAvatars(LLVOAvatar* single_avatar, S32 pass)
|
|||
|
||||
BOOL impostor = avatarp->isImpostor() && !single_avatar;
|
||||
|
||||
if (( /*avatarp->isInMuteList() // <FS:Ansariel> Partially undo MAINT-5700: Draw imposter for muted avatars
|
||||
||*/ impostor
|
||||
|| (LLVOAvatar::AV_DO_NOT_RENDER == avatarp->getVisualMuteSettings() && !avatarp->needsImpostorUpdate()) ) && pass != 0)
|
||||
// <FS:Ansariel> Fix LL impostor hacking; Don't render impostored avatars unless it needs an update
|
||||
//if (( avatarp->isInMuteList()
|
||||
// || impostor
|
||||
// || (LLVOAvatar::AV_DO_NOT_RENDER == avatarp->getVisualMuteSettings() && !avatarp->needsImpostorUpdate()) ) && pass != 0)
|
||||
if (impostor && !avatarp->needsImpostorUpdate() && pass != 0)
|
||||
// </FS:Ansariel>
|
||||
{ //don't draw anything but the impostor for impostored avatars
|
||||
return;
|
||||
}
|
||||
|
|
@ -1389,7 +1395,10 @@ void LLDrawPoolAvatar::renderAvatars(LLVOAvatar* single_avatar, S32 pass)
|
|||
LLVOAvatar::sNumVisibleAvatars++;
|
||||
}
|
||||
|
||||
if (impostor || (LLVOAvatar::AV_DO_NOT_RENDER == avatarp->getVisualMuteSettings() && !avatarp->needsImpostorUpdate()))
|
||||
// <FS:Ansariel> Fix LL impostor hacking
|
||||
//if (impostor || (LLVOAvatar::AV_DO_NOT_RENDER == avatarp->getVisualMuteSettings() && !avatarp->needsImpostorUpdate()))
|
||||
if (impostor && !avatarp->needsImpostorUpdate())
|
||||
// </FS:Ansariel>
|
||||
{
|
||||
if (LLPipeline::sRenderDeferred && !LLPipeline::sReflectionRender && avatarp->mImpostor.isComplete())
|
||||
{
|
||||
|
|
|
|||
|
|
@ -243,7 +243,7 @@ BOOL LLFastTimerView::handleHover(S32 x, S32 y, MASK mask)
|
|||
{
|
||||
return TRUE;
|
||||
}
|
||||
else if (mHoverBarIndex == -1)
|
||||
else if (mHoverBarIndex < 0)
|
||||
{
|
||||
mHoverBarIndex = 0;
|
||||
}
|
||||
|
|
@ -283,7 +283,7 @@ BOOL LLFastTimerView::handleHover(S32 x, S32 y, MASK mask)
|
|||
{
|
||||
hover_bar = &bar;
|
||||
if (bar.mTimeBlock->getTreeNode().mCollapsed)
|
||||
{
|
||||
{
|
||||
// stop on first collapsed BlockTimerStatHandle, since we can't select any children
|
||||
break;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -80,6 +80,7 @@ void LLFloaterModelUploadBase::requestAgentUploadPermissionsCoro(std::string url
|
|||
if (!observer)
|
||||
{
|
||||
LL_WARNS("MeshUploadFlag") << "Unable to get observer after call to '" << url << "' aborting." << LL_ENDL;
|
||||
return;
|
||||
}
|
||||
|
||||
if (!status)
|
||||
|
|
|
|||
|
|
@ -576,10 +576,6 @@ LLFloaterPreference::LLFloaterPreference(const LLSD& key)
|
|||
|
||||
// <FS:Ansariel> FIRE-2912: Reset voice button
|
||||
mCommitCallbackRegistrar.add("Pref.ResetVoice", boost::bind(&LLFloaterPreference::onClickResetVoice, this));
|
||||
|
||||
// <FS: KC> FIRE-18250: Option to disable default eye movement
|
||||
mCommitCallbackRegistrar.add("Pref.StaticEyes", boost::bind(&LLFloaterPreference::onClickStaticEyes, this));
|
||||
// </Firestorm callbacks>
|
||||
|
||||
mCommitCallbackRegistrar.add("UpdateFilter", boost::bind(&LLFloaterPreference::onUpdateFilterTerm, this, false)); // <FS:ND/> Hook up for filtering
|
||||
}
|
||||
|
|
@ -5367,7 +5363,7 @@ void LLFloaterPreference::loadFontPresetsFromDir(const std::string& dir, LLCombo
|
|||
void LLFloaterPreference::populateFontSelectionCombo()
|
||||
{
|
||||
LLComboBox* font_selection_combo = getChild<LLComboBox>("Fontsettingsfile");
|
||||
if(font_selection_combo)
|
||||
if (font_selection_combo)
|
||||
{
|
||||
const std::string fontDir(gDirUtilp->getExpandedFilename(LL_PATH_FONTS, "", ""));
|
||||
const std::string userfontDir(gDirUtilp->getExpandedFilename(LL_PATH_USER_SETTINGS , "fonts", ""));
|
||||
|
|
@ -5375,29 +5371,12 @@ void LLFloaterPreference::populateFontSelectionCombo()
|
|||
// Load fonts.xmls from the install dir first then user_settings
|
||||
loadFontPresetsFromDir(fontDir, font_selection_combo);
|
||||
loadFontPresetsFromDir(userfontDir, font_selection_combo);
|
||||
|
||||
|
||||
font_selection_combo->setValue(gSavedSettings.getString("FSFontSettingsFile"));
|
||||
}
|
||||
}
|
||||
// </FS:Kadah>
|
||||
|
||||
// <FS:KC> FIRE-18250: Option to disable default eye movement
|
||||
void LLFloaterPreference::onClickStaticEyes()
|
||||
{
|
||||
LLUUID anim_id(gSavedSettings.getString("FSStaticEyesUUID"));
|
||||
if (gSavedPerAccountSettings.getBOOL("FSStaticEyes"))
|
||||
{
|
||||
gAgentAvatarp->startMotion(anim_id);
|
||||
gAgent.sendAnimationRequest(anim_id, ANIM_REQUEST_START);
|
||||
}
|
||||
else
|
||||
{
|
||||
gAgentAvatarp->stopMotion(anim_id);
|
||||
gAgent.sendAnimationRequest(anim_id, ANIM_REQUEST_STOP);
|
||||
}
|
||||
}
|
||||
// </FS:KC>
|
||||
|
||||
// <FS:AW optional opensim support>
|
||||
#ifdef OPENSIM
|
||||
static LLPanelInjector<LLPanelPreferenceOpensim> t_pref_opensim("panel_preference_opensim");
|
||||
|
|
|
|||
|
|
@ -180,9 +180,6 @@ public:
|
|||
// <FS:Ansariel> FIRE-2912: Reset voice button
|
||||
void onClickResetVoice();
|
||||
|
||||
// <FS:KC> FIRE-18250: Option to disable default eye movement
|
||||
void onClickStaticEyes();
|
||||
|
||||
void onClickSetCache();
|
||||
void onClickBrowseCache();
|
||||
void onClickBrowseCrashLogs();
|
||||
|
|
|
|||
|
|
@ -883,7 +883,8 @@ void LLFloaterSnapshot::Impl::updateResolution(LLUICtrl* ctrl, void* data, BOOL
|
|||
// hide old preview as the aspect ratio could be wrong
|
||||
checkAutoSnapshot(previewp, FALSE);
|
||||
LL_DEBUGS() << "updating thumbnail" << LL_ENDL;
|
||||
getPreviewView()->updateSnapshot(TRUE);
|
||||
// Don't update immediately, give window chance to redraw
|
||||
getPreviewView()->updateSnapshot(TRUE, FALSE, 1.f);
|
||||
if(do_update)
|
||||
{
|
||||
LL_DEBUGS() << "Will update controls" << LL_ENDL;
|
||||
|
|
|
|||
|
|
@ -690,7 +690,7 @@ void LLInventoryCategoriesObserver::changed(U32 mask)
|
|||
}
|
||||
}
|
||||
|
||||
bool LLInventoryCategoriesObserver::addCategory(const LLUUID& cat_id, callback_t cb)
|
||||
bool LLInventoryCategoriesObserver::addCategory(const LLUUID& cat_id, callback_t cb, bool init_name_hash)
|
||||
{
|
||||
S32 version = LLViewerInventoryCategory::VERSION_UNKNOWN;
|
||||
S32 current_num_known_descendents = LLViewerInventoryCategory::DESCENDENT_COUNT_UNKNOWN;
|
||||
|
|
@ -728,8 +728,15 @@ bool LLInventoryCategoriesObserver::addCategory(const LLUUID& cat_id, callback_t
|
|||
|
||||
if (can_be_added)
|
||||
{
|
||||
mCategoryMap.insert(category_map_value_t(
|
||||
cat_id,LLCategoryData(cat_id, cb, version, current_num_known_descendents)));
|
||||
if(init_name_hash)
|
||||
{
|
||||
LLMD5 item_name_hash = gInventory.hashDirectDescendentNames(cat_id);
|
||||
mCategoryMap.insert(category_map_value_t(cat_id,LLCategoryData(cat_id, cb, version, current_num_known_descendents,item_name_hash)));
|
||||
}
|
||||
else
|
||||
{
|
||||
mCategoryMap.insert(category_map_value_t(cat_id,LLCategoryData(cat_id, cb, version, current_num_known_descendents)));
|
||||
}
|
||||
}
|
||||
|
||||
return can_be_added;
|
||||
|
|
@ -752,6 +759,18 @@ LLInventoryCategoriesObserver::LLCategoryData::LLCategoryData(
|
|||
mItemNameHash.finalize();
|
||||
}
|
||||
|
||||
LLInventoryCategoriesObserver::LLCategoryData::LLCategoryData(
|
||||
const LLUUID& cat_id, callback_t cb, S32 version, S32 num_descendents, LLMD5 name_hash)
|
||||
|
||||
: mCatID(cat_id)
|
||||
, mCallback(cb)
|
||||
, mVersion(version)
|
||||
, mDescendentsCount(num_descendents)
|
||||
, mIsNameHashInitialized(true)
|
||||
, mItemNameHash(name_hash)
|
||||
{
|
||||
}
|
||||
|
||||
void LLScrollOnRenameObserver::changed(U32 mask)
|
||||
{
|
||||
if (mask & LLInventoryObserver::LABEL)
|
||||
|
|
|
|||
|
|
@ -267,14 +267,14 @@ public:
|
|||
* @return "true" if category was added, "false" if it could
|
||||
* not be found.
|
||||
*/
|
||||
bool addCategory(const LLUUID& cat_id, callback_t cb);
|
||||
bool addCategory(const LLUUID& cat_id, callback_t cb, bool init_name_hash = false);
|
||||
void removeCategory(const LLUUID& cat_id);
|
||||
|
||||
protected:
|
||||
struct LLCategoryData
|
||||
{
|
||||
LLCategoryData(const LLUUID& cat_id, callback_t cb, S32 version, S32 num_descendents);
|
||||
|
||||
LLCategoryData(const LLUUID& cat_id, callback_t cb, S32 version, S32 num_descendents, LLMD5 name_hash);
|
||||
callback_t mCallback;
|
||||
S32 mVersion;
|
||||
S32 mDescendentsCount;
|
||||
|
|
|
|||
|
|
@ -241,6 +241,7 @@ void LLOutfitGallery::removeLastRow()
|
|||
{
|
||||
mRowCount--;
|
||||
mGalleryPanel->removeChild(mLastRowPanel);
|
||||
mUnusedRowPanels.push_back(mLastRowPanel);
|
||||
mRowPanels.pop_back();
|
||||
mLastRowPanel = mRowPanels.back();
|
||||
}
|
||||
|
|
@ -342,6 +343,7 @@ void LLOutfitGallery::removeFromLastRow(LLOutfitGalleryItem* item)
|
|||
{
|
||||
mItemPanels.back()->removeChild(item);
|
||||
mLastRowPanel->removeChild(mItemPanels.back());
|
||||
mUnusedItemPanels.push_back(mItemPanels.back());
|
||||
mItemPanels.pop_back();
|
||||
}
|
||||
|
||||
|
|
@ -381,7 +383,16 @@ LLPanel* LLOutfitGallery::buildItemPanel(int left)
|
|||
{
|
||||
LLPanel::Params lpparams;
|
||||
int top = 0;
|
||||
LLPanel* lpanel = LLUICtrlFactory::create<LLPanel>(lpparams);
|
||||
LLPanel* lpanel = NULL;
|
||||
if(mUnusedItemPanels.empty())
|
||||
{
|
||||
lpanel = LLUICtrlFactory::create<LLPanel>(lpparams);
|
||||
}
|
||||
else
|
||||
{
|
||||
lpanel = mUnusedItemPanels.back();
|
||||
mUnusedItemPanels.pop_back();
|
||||
}
|
||||
LLRect rect = LLRect(left, top + mItemHeight, left + mItemWidth + mItemHorizontalGap, top);
|
||||
lpanel->setRect(rect);
|
||||
lpanel->reshape(mItemWidth + mItemHorizontalGap, mItemHeight);
|
||||
|
|
@ -394,7 +405,16 @@ LLPanel* LLOutfitGallery::buildItemPanel(int left)
|
|||
LLPanel* LLOutfitGallery::buildRowPanel(int left, int bottom)
|
||||
{
|
||||
LLPanel::Params sparams;
|
||||
LLPanel* stack = LLUICtrlFactory::create<LLPanel>(sparams);
|
||||
LLPanel* stack = NULL;
|
||||
if(mUnusedRowPanels.empty())
|
||||
{
|
||||
stack = LLUICtrlFactory::create<LLPanel>(sparams);
|
||||
}
|
||||
else
|
||||
{
|
||||
stack = mUnusedRowPanels.back();
|
||||
mUnusedRowPanels.pop_back();
|
||||
}
|
||||
moveRowPanel(stack, left, bottom);
|
||||
return stack;
|
||||
}
|
||||
|
|
@ -424,6 +444,19 @@ LLOutfitGallery::~LLOutfitGallery()
|
|||
gInventory.removeObserver(mOutfitsObserver);
|
||||
}
|
||||
delete mOutfitsObserver;
|
||||
|
||||
while (!mUnusedRowPanels.empty())
|
||||
{
|
||||
LLPanel* panelp = mUnusedRowPanels.back();
|
||||
mUnusedRowPanels.pop_back();
|
||||
panelp->die();
|
||||
}
|
||||
while (!mUnusedItemPanels.empty())
|
||||
{
|
||||
LLPanel* panelp = mUnusedItemPanels.back();
|
||||
mUnusedItemPanels.pop_back();
|
||||
panelp->die();
|
||||
}
|
||||
}
|
||||
|
||||
void LLOutfitGallery::setFilterSubString(const std::string& string)
|
||||
|
|
@ -504,7 +537,7 @@ void LLOutfitGallery::updateAddedCategory(LLUUID cat_id)
|
|||
|
||||
// Start observing changes in "My Outfits" category.
|
||||
mOutfitsObserver->addCategory(cat_id,
|
||||
boost::bind(&LLOutfitGallery::refreshOutfit, this, cat_id));
|
||||
boost::bind(&LLOutfitGallery::refreshOutfit, this, cat_id), true);
|
||||
|
||||
outfit_category->fetch();
|
||||
refreshOutfit(cat_id);
|
||||
|
|
|
|||
|
|
@ -158,6 +158,8 @@ private:
|
|||
void moveRowPanel(LLPanel* stack, int left, int bottom);
|
||||
std::vector<LLPanel*> mRowPanels;
|
||||
std::vector<LLPanel*> mItemPanels;
|
||||
std::vector<LLPanel*> mUnusedRowPanels;
|
||||
std::vector<LLPanel*> mUnusedItemPanels;
|
||||
std::vector<LLOutfitGalleryItem*> mItems;
|
||||
std::vector<LLOutfitGalleryItem*> mHiddenItems;
|
||||
LLScrollContainer* mScrollPanel;
|
||||
|
|
|
|||
|
|
@ -520,10 +520,6 @@ void LLPanelPlaceProfile::displaySelectedParcelInfo(LLParcel* parcel,
|
|||
|
||||
if(!parcel->getGroupID().isNull())
|
||||
{
|
||||
// FIXME: Using parcel group as region group.
|
||||
gCacheName->getGroup(parcel->getGroupID(),
|
||||
boost::bind(&LLPanelPlaceInfo::onNameCache, mRegionGroupText, _2));
|
||||
|
||||
std::string owner =
|
||||
LLSLURL("group", parcel->getGroupID(), "inspect").getSLURLString();
|
||||
mParcelOwner->setText(owner);
|
||||
|
|
@ -542,12 +538,20 @@ void LLPanelPlaceProfile::displaySelectedParcelInfo(LLParcel* parcel,
|
|||
LLSLURL("agent", parcel->getOwnerID(), "inspect").getSLURLString();
|
||||
mParcelOwner->setText(parcel_owner);
|
||||
LLAvatarNameCache::get(region->getOwner(), boost::bind(&LLPanelPlaceInfo::onAvatarNameCache, _1, _2, mRegionOwnerText));
|
||||
mRegionGroupText->setText( getString("none_text"));
|
||||
}
|
||||
|
||||
if(LLParcel::OS_LEASE_PENDING == parcel->getOwnershipStatus())
|
||||
{
|
||||
mRegionOwnerText->setText(mRegionOwnerText->getText() + getString("sale_pending_text"));
|
||||
}
|
||||
|
||||
if(!parcel->getGroupID().isNull())
|
||||
{
|
||||
// FIXME: Using parcel group as region group.
|
||||
gCacheName->getGroup(parcel->getGroupID(),
|
||||
boost::bind(&LLPanelPlaceInfo::onNameCache, mRegionGroupText, _2));
|
||||
}
|
||||
}
|
||||
|
||||
mEstateRatingText->setText(region->getSimAccessString());
|
||||
|
|
|
|||
|
|
@ -469,7 +469,11 @@ void LLSnapshotLivePreview::reshape(S32 width, S32 height, BOOL called_from_pare
|
|||
LL_DEBUGS() << "window reshaped, updating thumbnail" << LL_ENDL;
|
||||
if (mViewContainer && mViewContainer->isInVisibleChain())
|
||||
{
|
||||
updateSnapshot(TRUE);
|
||||
// We usually resize only on window reshape, so give it a chance to redraw, assign delay
|
||||
updateSnapshot(
|
||||
TRUE, // new snapshot is needed
|
||||
FALSE, // thumbnail will be updated either way.
|
||||
AUTO_SNAPSHOT_TIME_DELAY); // shutter delay.
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1711,6 +1711,9 @@ bool idle_startup()
|
|||
}
|
||||
// </FS:Ansariel>
|
||||
|
||||
// <FS:Ansariel> Restore original LLMessageSystem HTTP options for OpenSim
|
||||
gMessageSystem->setIsInSecondLife(LLGridManager::getInstance()->isInSecondLife());
|
||||
|
||||
// Finish agent initialization. (Requires gSavedSettings, builds camera)
|
||||
gAgent.init();
|
||||
display_startup();
|
||||
|
|
@ -1966,9 +1969,9 @@ bool idle_startup()
|
|||
display_startup();
|
||||
// </FS:Ansariel> [FS communication UI]
|
||||
|
||||
// <FS:KC> FIRE-18250: Option to disable default eye movement
|
||||
gAgent.addRegionChangedCallback(boost::bind(&update_static_eyes));
|
||||
update_static_eyes();
|
||||
// <FS:KC> FIRE-18250: Option to disable default eye movement
|
||||
gAgent.addRegionChangedCallback(boost::bind(&update_static_eyes));
|
||||
update_static_eyes();
|
||||
// </FS:KC>
|
||||
|
||||
// *Note: this is where gWorldMap used to be initialized.
|
||||
|
|
@ -4505,11 +4508,12 @@ void transition_back_to_login_panel(const std::string& emsg)
|
|||
|
||||
// <FS:KC> FIRE-18250: Option to disable default eye movement
|
||||
//static
|
||||
void update_static_eyes() {
|
||||
if (gSavedPerAccountSettings.getBOOL("FSStaticEyes"))
|
||||
{
|
||||
LLUUID anim_id(gSavedSettings.getString("FSStaticEyesUUID"));
|
||||
gAgent.sendAnimationRequest(anim_id, ANIM_REQUEST_START);
|
||||
}
|
||||
void update_static_eyes()
|
||||
{
|
||||
if (gSavedPerAccountSettings.getBOOL("FSStaticEyes"))
|
||||
{
|
||||
LLUUID anim_id(gSavedSettings.getString("FSStaticEyesUUID"));
|
||||
gAgent.sendAnimationRequest(anim_id, ANIM_REQUEST_START);
|
||||
}
|
||||
}
|
||||
// </FS:KC>
|
||||
|
|
|
|||
|
|
@ -903,6 +903,28 @@ void handleLogThrottleChanged(const LLSD& newvalue)
|
|||
}
|
||||
// </FS:Ansariel>
|
||||
|
||||
// <FS:Ansariel> FIRE-18250: Option to disable default eye movement
|
||||
void handleStaticEyesChanged()
|
||||
{
|
||||
if (!isAgentAvatarValid())
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
LLUUID anim_id(gSavedSettings.getString("FSStaticEyesUUID"));
|
||||
if (gSavedPerAccountSettings.getBOOL("FSStaticEyes"))
|
||||
{
|
||||
gAgentAvatarp->startMotion(anim_id);
|
||||
gAgent.sendAnimationRequest(anim_id, ANIM_REQUEST_START);
|
||||
}
|
||||
else
|
||||
{
|
||||
gAgentAvatarp->stopMotion(anim_id);
|
||||
gAgent.sendAnimationRequest(anim_id, ANIM_REQUEST_STOP);
|
||||
}
|
||||
}
|
||||
// </FS:Ansariel>
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
void settings_setup_listeners()
|
||||
|
|
@ -1120,6 +1142,11 @@ void settings_setup_listeners()
|
|||
|
||||
// <FS:Ansariel> Debug setting to disable log throttle
|
||||
gSavedSettings.getControl("FSEnableLogThrottle")->getSignal()->connect(boost::bind(&handleLogThrottleChanged, _2));
|
||||
|
||||
// <FS:Ansariel> FIRE-18250: Option to disable default eye movement
|
||||
gSavedSettings.getControl("FSStaticEyesUUID")->getSignal()->connect(boost::bind(&handleStaticEyesChanged));
|
||||
gSavedPerAccountSettings.getControl("FSStaticEyes")->getSignal()->connect(boost::bind(&handleStaticEyesChanged));
|
||||
// </FS:Ansariel>
|
||||
}
|
||||
|
||||
#if TEST_CACHED_CONTROL
|
||||
|
|
|
|||
|
|
@ -1441,12 +1441,24 @@ void update_inventory_item(
|
|||
if (updates.has("asset_id"))
|
||||
{
|
||||
updates.erase("asset_id");
|
||||
updates["hash_id"] = update_item->getTransactionID();
|
||||
// <FS:Ansariel> Check for non-null UUID as in LLViewerInventoryItem::updateServer
|
||||
//updates["hash_id"] = update_item->getTransactionID();
|
||||
if(update_item->getTransactionID().notNull())
|
||||
{
|
||||
updates["hash_id"] = update_item->getTransactionID();
|
||||
}
|
||||
// </FS:Ansariel>
|
||||
}
|
||||
if (updates.has("shadow_id"))
|
||||
{
|
||||
updates.erase("shadow_id");
|
||||
updates["hash_id"] = update_item->getTransactionID();
|
||||
// <FS:Ansariel> Check for non-null UUID as in LLViewerInventoryItem::updateServer
|
||||
//updates["hash_id"] = update_item->getTransactionID();
|
||||
if(update_item->getTransactionID().notNull())
|
||||
{
|
||||
updates["hash_id"] = update_item->getTransactionID();
|
||||
}
|
||||
// </FS:Ansariel>
|
||||
}
|
||||
AISAPI::completion_t cr = boost::bind(&doInventoryCb, cb, _1);
|
||||
AISAPI::UpdateItem(item_id, updates, cr);
|
||||
|
|
|
|||
|
|
@ -9725,6 +9725,12 @@ void process_covenant_reply(LLMessageSystem* msg, void**)
|
|||
{
|
||||
panel->updateCovenantText(covenant_text);
|
||||
}
|
||||
// <FS:Ansariel> Standalone location profile floater
|
||||
if (fs_floater)
|
||||
{
|
||||
fs_floater->updateCovenantText(covenant_text);
|
||||
}
|
||||
// </FS:Ansariel>
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -643,9 +643,9 @@ void LLViewerObjectList::processObjectUpdate(LLMessageSystem *mesgsys,
|
|||
}
|
||||
#endif
|
||||
|
||||
if (FSAssetBlacklist::getInstance()->isBlacklisted(fullid, LLAssetType::AT_OBJECT))
|
||||
if (FSAssetBlacklist::getInstance()->isBlacklisted(fullid, (pcode == LL_PCODE_LEGACY_AVATAR ? LLAssetType::AT_PERSON : LLAssetType::AT_OBJECT)))
|
||||
{
|
||||
LL_INFOS() << "Blacklisted object blocked." << LL_ENDL;
|
||||
LL_INFOS() << "Blacklisted " << (pcode == LL_PCODE_LEGACY_AVATAR ? "avatar" : "object") << " blocked." << LL_ENDL;
|
||||
continue;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -465,7 +465,7 @@ LLViewerOctreeGroup::LLViewerOctreeGroup(OctreeNode* node)
|
|||
{
|
||||
LLVector4a tmp;
|
||||
tmp.splat(0.f);
|
||||
mExtents[0] = mExtents[1] = mObjectBounds[0] = mObjectBounds[1] =
|
||||
mExtents[0] = mExtents[1] = mObjectBounds[0] = mObjectBounds[0] = mObjectBounds[1] =
|
||||
mObjectExtents[0] = mObjectExtents[1] = tmp;
|
||||
|
||||
mBounds[0] = node->getCenter();
|
||||
|
|
|
|||
|
|
@ -709,12 +709,10 @@ void LLViewerPartSim::updateSimulation()
|
|||
BOOL upd = TRUE;
|
||||
LLViewerObject* vobj = mViewerPartSources[i]->mSourceObjectp;
|
||||
|
||||
// <FS:Ansariel> Partially undo MAINT-5700: Draw imposter for muted avatars
|
||||
//if (vobj && vobj->isAvatar() && ((LLVOAvatar*)vobj)->isInMuteList())
|
||||
//{
|
||||
// upd = FALSE;
|
||||
//}
|
||||
// </FS:Ansariel>
|
||||
if (vobj && vobj->isAvatar() && ((LLVOAvatar*)vobj)->isInMuteList())
|
||||
{
|
||||
upd = FALSE;
|
||||
}
|
||||
|
||||
if (upd && vobj && (vobj->getPCode() == LL_PCODE_VOLUME))
|
||||
{
|
||||
|
|
|
|||
|
|
@ -2596,7 +2596,10 @@ void LLVOAvatar::idleUpdateMisc(bool detailed_update)
|
|||
BOOL visible = isVisible() || mNeedsAnimUpdate;
|
||||
|
||||
// update attachments positions
|
||||
if (detailed_update || !sUseImpostors)
|
||||
// <FS:Ansariel> Fix LL impostor hacking; No detailed updates if muted when using no impostors
|
||||
//if (detailed_update || !sUseImpostors)
|
||||
if (detailed_update || (!sUseImpostors && !isInMuteList()))
|
||||
// </FS:Ansariel>
|
||||
{
|
||||
LL_RECORD_BLOCK_TIME(FTM_ATTACHMENT_UPDATE);
|
||||
for (attachment_map_t::iterator iter = mAttachmentPoints.begin();
|
||||
|
|
@ -3998,7 +4001,10 @@ BOOL LLVOAvatar::updateCharacter(LLAgent &agent)
|
|||
//--------------------------------------------------------------------
|
||||
|
||||
bool visually_muted = isVisuallyMuted();
|
||||
if (visible && (!isSelf() || visually_muted) && !mIsDummy && sUseImpostors && !mNeedsAnimUpdate && !sFreezeCounter)
|
||||
// <FS:Ansariel> Fix LL impostor hacking; Adjust update period for muted avatars if using no impostors
|
||||
//if (visible && (!isSelf() || visually_muted) && !mIsDummy && sUseImpostors && !mNeedsAnimUpdate && !sFreezeCounter)
|
||||
if (visible && (!isSelf() || visually_muted) && !mIsDummy && (sUseImpostors || isInMuteList()) && !mNeedsAnimUpdate && !sFreezeCounter)
|
||||
// </FS:Ansariel>
|
||||
{
|
||||
const LLVector4a* ext = mDrawable->getSpatialExtents();
|
||||
LLVector4a size;
|
||||
|
|
@ -9638,7 +9644,10 @@ void LLVOAvatar::updateFreezeCounter(S32 counter)
|
|||
|
||||
BOOL LLVOAvatar::updateLOD()
|
||||
{
|
||||
if (isImpostor() && 0 != mDrawable->getNumFaces() && mDrawable->getFace(0)->hasGeometry())
|
||||
// <FS:Ansariel> Fix LL impostor hacking
|
||||
//if (isImpostor() && 0 != mDrawable->getNumFaces() && mDrawable->getFace(0)->hasGeometry())
|
||||
if (isImpostor() && !needsImpostorUpdate() && 0 != mDrawable->getNumFaces() && mDrawable->getFace(0)->hasGeometry())
|
||||
// </FS:Ansariel>
|
||||
{
|
||||
return TRUE;
|
||||
}
|
||||
|
|
@ -9686,7 +9695,10 @@ void LLVOAvatar::updateImpostors()
|
|||
LLVOAvatar* avatar = (LLVOAvatar*) *iter;
|
||||
if (!avatar->isDead() && avatar->isVisible()
|
||||
&& (
|
||||
(avatar->isImpostor() || LLVOAvatar::AV_DO_NOT_RENDER == avatar->getVisualMuteSettings()) && avatar->needsImpostorUpdate())
|
||||
// <FS:Ansariel> Fix LL impostor hacking; Generate new impostor if update is needed
|
||||
//(avatar->isImpostor() || LLVOAvatar::AV_DO_NOT_RENDER == avatar->getVisualMuteSettings()) && avatar->needsImpostorUpdate())
|
||||
avatar->isImpostor() && avatar->needsImpostorUpdate())
|
||||
// </FS:Ansariel>
|
||||
)
|
||||
{
|
||||
avatar->calcMutedAVColor();
|
||||
|
|
@ -9699,7 +9711,24 @@ void LLVOAvatar::updateImpostors()
|
|||
|
||||
BOOL LLVOAvatar::isImpostor()
|
||||
{
|
||||
return sUseImpostors && (isVisuallyMuted() || (mUpdatePeriod >= IMPOSTOR_PERIOD)) ? TRUE : FALSE;
|
||||
// <FS:Ansariel> Fix LL impostor hacking
|
||||
// IMPORTANT: LLPipeline::generateImpostor() will set sUseImporstors = FALSE when generating
|
||||
// an impostor. If checking for isImpostor() somewhere else to skip parts in the
|
||||
// rendering process, an additional check for needsImpostorUpdate() needs to be
|
||||
// done to determine if the particular part can really be skipped
|
||||
// (mNeedsImpostorUpdate = FALSE) or is currently needed to generate the
|
||||
// impostor (mNeedsImpostorUpdate = TRUE).
|
||||
|
||||
//return sUseImpostors && (isVisuallyMuted() || (mUpdatePeriod >= IMPOSTOR_PERIOD)) ? TRUE : FALSE;
|
||||
if (sUseImpostors)
|
||||
{
|
||||
return (isVisuallyMuted() || (mUpdatePeriod >= IMPOSTOR_PERIOD));
|
||||
}
|
||||
else
|
||||
{
|
||||
return (LLVOAvatar::AV_DO_NOT_RENDER == getVisualMuteSettings() || isInMuteList());
|
||||
}
|
||||
// </FS:Ansariel>
|
||||
}
|
||||
|
||||
BOOL LLVOAvatar::shouldImpostor(const U32 rank_factor) const
|
||||
|
|
|
|||
|
|
@ -1820,10 +1820,7 @@ BOOL LLVOVolume::updateGeometry(LLDrawable *drawable)
|
|||
dirtySpatialGroup(drawable->isState(LLDrawable::IN_REBUILD_Q1));
|
||||
compiled = TRUE;
|
||||
lodOrSculptChanged(drawable, compiled);
|
||||
if (!mLODChanged)
|
||||
{
|
||||
genBBoxes(FALSE);
|
||||
}
|
||||
genBBoxes(FALSE);
|
||||
}
|
||||
// it has its own drawable (it's moved) or it has changed UVs or it has changed xforms from global<->local
|
||||
else
|
||||
|
|
|
|||
|
|
@ -3194,9 +3194,12 @@ void LLPipeline::markVisible(LLDrawable *drawablep, LLCamera& camera)
|
|||
if (vobj) // this test may not be needed, see above
|
||||
{
|
||||
LLVOAvatar* av = vobj->asAvatar();
|
||||
if (av && (av->isImpostor()
|
||||
//|| av->isInMuteList() // <FS:Ansariel> Partially undo MAINT-5700: Draw imposter for muted avatars
|
||||
|| (LLVOAvatar::AV_DO_NOT_RENDER == av->getVisualMuteSettings() && !av->needsImpostorUpdate()) ))
|
||||
// <FS:Ansariel> Fix LL impostor hacking; Don't render impostored avatars unless it needs an update
|
||||
//if (av && (av->isImpostor()
|
||||
// || av->isInMuteList()
|
||||
// || (LLVOAvatar::AV_DO_NOT_RENDER == av->getVisualMuteSettings() && !av->needsImpostorUpdate()) ))
|
||||
if (av && av->isImpostor() && !av->needsImpostorUpdate())
|
||||
// </FS:Ansariel>
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
|
@ -11728,7 +11731,10 @@ void LLPipeline::generateImpostor(LLVOAvatar* avatar)
|
|||
|
||||
avatar->setImpostorDim(tdim);
|
||||
|
||||
LLVOAvatar::sUseImpostors = true; // @TODO ???
|
||||
// <FS:Ansariel> FIRE-20333: Set back to correct value depending on sMaxNonImpostors
|
||||
//LLVOAvatar::sUseImpostors = true; // @TODO ???
|
||||
LLVOAvatar::sUseImpostors = (0 != LLVOAvatar::sMaxNonImpostors);
|
||||
// </FS:Ansariel>
|
||||
sUseOcclusion = occlusion;
|
||||
sReflectionRender = FALSE;
|
||||
sImpostorRender = FALSE;
|
||||
|
|
|
|||
|
|
@ -556,10 +556,7 @@
|
|||
left="15"
|
||||
name="FSStaticEyes"
|
||||
width="250"
|
||||
control_name="FSStaticEyes">
|
||||
<check_box.commit_callback
|
||||
function="Pref.StaticEyes" />
|
||||
</check_box>
|
||||
control_name="FSStaticEyes"/>
|
||||
|
||||
<!-- LGG Color Beams -->
|
||||
<text
|
||||
|
|
|
|||
|
|
@ -486,13 +486,9 @@ class Windows_i686_Manifest(ViewerManifest):
|
|||
if self.args['configuration'].lower() == 'debug':
|
||||
self.path("msvcr120d.dll")
|
||||
self.path("msvcp120d.dll")
|
||||
self.path("msvcr100d.dll")
|
||||
self.path("msvcp100d.dll")
|
||||
else:
|
||||
self.path("msvcr120.dll")
|
||||
self.path("msvcp120.dll")
|
||||
self.path("msvcr100.dll")
|
||||
self.path("msvcp100.dll")
|
||||
|
||||
# Vivox runtimes
|
||||
self.path("SLVoice.exe")
|
||||
|
|
|
|||
Loading…
Reference in New Issue