diff --git a/indra/cmake/Copy3rdPartyLibs.cmake b/indra/cmake/Copy3rdPartyLibs.cmake index 6e80bc40da..c1df11d543 100644 --- a/indra/cmake/Copy3rdPartyLibs.cmake +++ b/indra/cmake/Copy3rdPartyLibs.cmake @@ -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") diff --git a/indra/llcommon/llsdserialize.cpp b/indra/llcommon/llsdserialize.cpp index 8355720fd7..906c55b14d 100644 --- a/indra/llcommon/llsdserialize.cpp +++ b/indra/llcommon/llsdserialize.cpp @@ -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 buf; if(size) { diff --git a/indra/llmessage/llavatarnamecache.cpp b/indra/llmessage/llavatarnamecache.cpp index c9cdbb17f2..77d7200fad 100644 --- a/indra/llmessage/llavatarnamecache.cpp +++ b/indra/llmessage/llavatarnamecache.cpp @@ -265,6 +265,18 @@ void LLAvatarNameCache::handleAvNameCacheSuccess(const LLSD &data, const LLSD &h LLUUID agent_id = row["id"].asUUID(); LLAvatarName av_name; + // 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 + // 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)) + // 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); } + // 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)) + + // 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); } - + // Contact sets alias + if (av_name.mExpires > LLFrameTimer::getTotalSeconds()) { // ...name already exists in cache, fire callback now diff --git a/indra/llmessage/message.cpp b/indra/llmessage/message.cpp index 3a3585dc58..0572f60ba0 100644 --- a/indra/llmessage/message.cpp +++ b/indra/llmessage/message.cpp @@ -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) // 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); + // Restore original LLMessageSystem HTTP options for OpenSim + if (!mIsInSecondLife) + { + httpOpts->setRetries(0); + httpOpts->setTimeout(60); + httpOpts->setTransferTimeout(60); + } + // if (url.empty()) { diff --git a/indra/llmessage/message.h b/indra/llmessage/message.h index 133db620e6..5ed66439e5 100644 --- a/indra/llmessage/message.h +++ b/indra/llmessage/message.h @@ -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(); + + // Restore original LLMessageSystem HTTP options for OpenSim + void setIsInSecondLife(bool in_second_life) { mIsInSecondLife = in_second_life; } private: typedef boost::function UntrustedCallback_t; @@ -828,6 +831,9 @@ private: /** Find, create or revive circuit for host as needed */ LLCircuitData* findCircuit(const LLHost& host, bool resetPacketId); + + // Restore original LLMessageSystem HTTP options for OpenSim + bool mIsInSecondLife; }; diff --git a/indra/llui/lllineeditor.cpp b/indra/llui/lllineeditor.cpp index 79fcf7b85a..51ec9c256b 100644 --- a/indra/llui/lllineeditor.cpp +++ b/indra/llui/lllineeditor.cpp @@ -352,6 +352,7 @@ void LLLineEditor::reshape(S32 width, S32 height, BOOL called_from_parent) void LLLineEditor::setEnabled(BOOL enabled) { + LLUICtrl::setEnabled(enabled); // Enabling LLLineEditor via XUI breaks enabled-state mReadOnly = !enabled; setTabStop(!mReadOnly); updateAllowingLanguageInput(); diff --git a/indra/llui/llurlentry.cpp b/indra/llui/llurlentry.cpp index e3b67ffd35..606c236202 100644 --- a/indra/llui/llurlentry.cpp +++ b/indra/llui/llurlentry.cpp @@ -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 { diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml index 19b609ebd8..0bfebd97cc 100644 --- a/indra/newview/app_settings/settings.xml +++ b/indra/newview/app_settings/settings.xml @@ -12970,7 +12970,7 @@ Change of this parameter will affect the layout of buttons in notification toast Type String Value - http://jira.phoenixviewer.com/secure/CreateIssueDetails!init.jspa?pid=10005&issuetype=1&priority=3&environment=[ENVIRONMENT] + https://jira.phoenixviewer.com/secure/CreateIssueDetails!init.jspa?pid=10005&issuetype=1&priority=3&environment=[ENVIRONMENT] RevokePermsOnStopAnimation diff --git a/indra/newview/fsfloaterimcontainer.cpp b/indra/newview/fsfloaterimcontainer.cpp index b9c81f5fcf..e60eece27d 100644 --- a/indra/newview/fsfloaterimcontainer.cpp +++ b/indra/newview/fsfloaterimcontainer.cpp @@ -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) diff --git a/indra/newview/fsfloaterlinkreplace.cpp b/indra/newview/fsfloaterlinkreplace.cpp index db02332c5d..7284419d51 100644 --- a/indra/newview/fsfloaterlinkreplace.cpp +++ b/indra/newview/fsfloaterlinkreplace.cpp @@ -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 cb = new LLBoostFuncInventoryCallback(boost::bind(&LLAppearanceMgr::updateClothingOrderingInfo, LLAppearanceMgr::getInstance(), outfit_folder_id, - LLPointer(NULL)))); + LLPointer(NULL))); + remove_inventory_object(old_item_id, cb); } else { - remove_inventory_object(old_item_id, NULL); + remove_inventory_object(old_item_id, LLPointer(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(target_item)); - link_inventory_array(source_item->getParentUUID(), - obj_array, - new LLBoostFuncInventoryCallback(boost::bind(&FSFloaterLinkReplace::linkCreatedCallback, + LLPointer 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 { diff --git a/indra/newview/llappearancemgr.cpp b/indra/newview/llappearancemgr.cpp index 0aaa6336c1..d0ca61d0b3 100644 --- a/indra/newview/llappearancemgr.cpp +++ b/indra/newview/llappearancemgr.cpp @@ -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); diff --git a/indra/newview/lldrawable.cpp b/indra/newview/lldrawable.cpp index fec8b3c008..6d52c2ce56 100644 --- a/indra/newview/lldrawable.cpp +++ b/indra/newview/lldrawable.cpp @@ -1393,7 +1393,10 @@ void LLSpatialBridge::setVisible(LLCamera& camera_in, std::vector* LLVOAvatar* avatarp = (LLVOAvatar*) objparent; if (avatarp->isVisible()) { - impostor = objparent->isAvatar() && ((LLVOAvatar*) objparent)->isImpostor(); + // Fix LL impostor hacking + //impostor = objparent->isAvatar() && ((LLVOAvatar*) objparent)->isImpostor(); + impostor = objparent->isAvatar() && avatarp->isImpostor() && !avatarp->needsImpostorUpdate(); + // 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()) + // Fix LL impostor hacking + //if (av && av->isImpostor()) + if (av && av->isImpostor() && !av->needsImpostorUpdate()) + // { return; } diff --git a/indra/newview/lldrawpoolavatar.cpp b/indra/newview/lldrawpoolavatar.cpp index e960322a44..9536feca19 100644 --- a/indra/newview/lldrawpoolavatar.cpp +++ b/indra/newview/lldrawpoolavatar.cpp @@ -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()) + // Fix LL impostor hacking; No shadow for impostors + //&& LLVOAvatar::AV_DO_NOT_RENDER != avatarp->getVisualMuteSettings() + //&& LLVOAvatar::AV_ALWAYS_RENDER != avatarp->getVisualMuteSettings()) + ) + // { return; } @@ -1370,9 +1373,12 @@ void LLDrawPoolAvatar::renderAvatars(LLVOAvatar* single_avatar, S32 pass) BOOL impostor = avatarp->isImpostor() && !single_avatar; - if (( /*avatarp->isInMuteList() // Partially undo MAINT-5700: Draw imposter for muted avatars - ||*/ impostor - || (LLVOAvatar::AV_DO_NOT_RENDER == avatarp->getVisualMuteSettings() && !avatarp->needsImpostorUpdate()) ) && pass != 0) + // 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) + // { //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())) + // Fix LL impostor hacking + //if (impostor || (LLVOAvatar::AV_DO_NOT_RENDER == avatarp->getVisualMuteSettings() && !avatarp->needsImpostorUpdate())) + if (impostor && !avatarp->needsImpostorUpdate()) + // { if (LLPipeline::sRenderDeferred && !LLPipeline::sReflectionRender && avatarp->mImpostor.isComplete()) { diff --git a/indra/newview/llfasttimerview.cpp b/indra/newview/llfasttimerview.cpp index 90b89db64b..e27335ddeb 100644 --- a/indra/newview/llfasttimerview.cpp +++ b/indra/newview/llfasttimerview.cpp @@ -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; } diff --git a/indra/newview/llfloatermodeluploadbase.cpp b/indra/newview/llfloatermodeluploadbase.cpp index 0fe97fd610..7cdfd56d9a 100644 --- a/indra/newview/llfloatermodeluploadbase.cpp +++ b/indra/newview/llfloatermodeluploadbase.cpp @@ -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) diff --git a/indra/newview/llfloaterpreference.cpp b/indra/newview/llfloaterpreference.cpp index 6da72f358a..086d114094 100644 --- a/indra/newview/llfloaterpreference.cpp +++ b/indra/newview/llfloaterpreference.cpp @@ -576,10 +576,6 @@ LLFloaterPreference::LLFloaterPreference(const LLSD& key) // FIRE-2912: Reset voice button mCommitCallbackRegistrar.add("Pref.ResetVoice", boost::bind(&LLFloaterPreference::onClickResetVoice, this)); - - // FIRE-18250: Option to disable default eye movement - mCommitCallbackRegistrar.add("Pref.StaticEyes", boost::bind(&LLFloaterPreference::onClickStaticEyes, this)); - // mCommitCallbackRegistrar.add("UpdateFilter", boost::bind(&LLFloaterPreference::onUpdateFilterTerm, this, false)); // Hook up for filtering } @@ -5367,7 +5363,7 @@ void LLFloaterPreference::loadFontPresetsFromDir(const std::string& dir, LLCombo void LLFloaterPreference::populateFontSelectionCombo() { LLComboBox* font_selection_combo = getChild("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")); } } // -// 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); - } -} -// - // #ifdef OPENSIM static LLPanelInjector t_pref_opensim("panel_preference_opensim"); diff --git a/indra/newview/llfloaterpreference.h b/indra/newview/llfloaterpreference.h index 9d417c024c..940ba43115 100644 --- a/indra/newview/llfloaterpreference.h +++ b/indra/newview/llfloaterpreference.h @@ -180,9 +180,6 @@ public: // FIRE-2912: Reset voice button void onClickResetVoice(); - // FIRE-18250: Option to disable default eye movement - void onClickStaticEyes(); - void onClickSetCache(); void onClickBrowseCache(); void onClickBrowseCrashLogs(); diff --git a/indra/newview/llfloatersnapshot.cpp b/indra/newview/llfloatersnapshot.cpp index 7d5d805ee3..a6c0b068e3 100644 --- a/indra/newview/llfloatersnapshot.cpp +++ b/indra/newview/llfloatersnapshot.cpp @@ -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; diff --git a/indra/newview/llinventoryobserver.cpp b/indra/newview/llinventoryobserver.cpp index c2fc4c0004..4016b89554 100644 --- a/indra/newview/llinventoryobserver.cpp +++ b/indra/newview/llinventoryobserver.cpp @@ -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) diff --git a/indra/newview/llinventoryobserver.h b/indra/newview/llinventoryobserver.h index 8cf6a6bdab..36d8ee3f59 100644 --- a/indra/newview/llinventoryobserver.h +++ b/indra/newview/llinventoryobserver.h @@ -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; diff --git a/indra/newview/lloutfitgallery.cpp b/indra/newview/lloutfitgallery.cpp index 4b50caf87c..5b88afa9ae 100644 --- a/indra/newview/lloutfitgallery.cpp +++ b/indra/newview/lloutfitgallery.cpp @@ -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(lpparams); + LLPanel* lpanel = NULL; + if(mUnusedItemPanels.empty()) + { + lpanel = LLUICtrlFactory::create(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(sparams); + LLPanel* stack = NULL; + if(mUnusedRowPanels.empty()) + { + stack = LLUICtrlFactory::create(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); diff --git a/indra/newview/lloutfitgallery.h b/indra/newview/lloutfitgallery.h index e239210237..79ac78c42e 100644 --- a/indra/newview/lloutfitgallery.h +++ b/indra/newview/lloutfitgallery.h @@ -158,6 +158,8 @@ private: void moveRowPanel(LLPanel* stack, int left, int bottom); std::vector mRowPanels; std::vector mItemPanels; + std::vector mUnusedRowPanels; + std::vector mUnusedItemPanels; std::vector mItems; std::vector mHiddenItems; LLScrollContainer* mScrollPanel; diff --git a/indra/newview/llpanelplaceprofile.cpp b/indra/newview/llpanelplaceprofile.cpp index 9761631f3d..ed4fe5166f 100644 --- a/indra/newview/llpanelplaceprofile.cpp +++ b/indra/newview/llpanelplaceprofile.cpp @@ -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()); diff --git a/indra/newview/llsnapshotlivepreview.cpp b/indra/newview/llsnapshotlivepreview.cpp index f81ef53760..51de8b4318 100644 --- a/indra/newview/llsnapshotlivepreview.cpp +++ b/indra/newview/llsnapshotlivepreview.cpp @@ -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. } } } diff --git a/indra/newview/llstartup.cpp b/indra/newview/llstartup.cpp index ed58e2cb81..28c7d95641 100644 --- a/indra/newview/llstartup.cpp +++ b/indra/newview/llstartup.cpp @@ -1711,6 +1711,9 @@ bool idle_startup() } // + // 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 communication UI] - // FIRE-18250: Option to disable default eye movement - gAgent.addRegionChangedCallback(boost::bind(&update_static_eyes)); - update_static_eyes(); + // FIRE-18250: Option to disable default eye movement + gAgent.addRegionChangedCallback(boost::bind(&update_static_eyes)); + update_static_eyes(); // // *Note: this is where gWorldMap used to be initialized. @@ -4505,11 +4508,12 @@ void transition_back_to_login_panel(const std::string& emsg) // 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); + } } // diff --git a/indra/newview/llviewercontrol.cpp b/indra/newview/llviewercontrol.cpp index 7cd066d7c3..e397c27a7a 100644 --- a/indra/newview/llviewercontrol.cpp +++ b/indra/newview/llviewercontrol.cpp @@ -903,6 +903,28 @@ void handleLogThrottleChanged(const LLSD& newvalue) } // +// 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); + } +} +// + //////////////////////////////////////////////////////////////////////////// void settings_setup_listeners() @@ -1120,6 +1142,11 @@ void settings_setup_listeners() // Debug setting to disable log throttle gSavedSettings.getControl("FSEnableLogThrottle")->getSignal()->connect(boost::bind(&handleLogThrottleChanged, _2)); + + // FIRE-18250: Option to disable default eye movement + gSavedSettings.getControl("FSStaticEyesUUID")->getSignal()->connect(boost::bind(&handleStaticEyesChanged)); + gSavedPerAccountSettings.getControl("FSStaticEyes")->getSignal()->connect(boost::bind(&handleStaticEyesChanged)); + // } #if TEST_CACHED_CONTROL diff --git a/indra/newview/llviewerinventory.cpp b/indra/newview/llviewerinventory.cpp index 620d69e820..b9149875aa 100644 --- a/indra/newview/llviewerinventory.cpp +++ b/indra/newview/llviewerinventory.cpp @@ -1441,12 +1441,24 @@ void update_inventory_item( if (updates.has("asset_id")) { updates.erase("asset_id"); - updates["hash_id"] = update_item->getTransactionID(); + // 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(); + } + // } if (updates.has("shadow_id")) { updates.erase("shadow_id"); - updates["hash_id"] = update_item->getTransactionID(); + // 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(); + } + // } AISAPI::completion_t cr = boost::bind(&doInventoryCb, cb, _1); AISAPI::UpdateItem(item_id, updates, cr); diff --git a/indra/newview/llviewermessage.cpp b/indra/newview/llviewermessage.cpp index 146368f6ba..f85ef7bf86 100644 --- a/indra/newview/llviewermessage.cpp +++ b/indra/newview/llviewermessage.cpp @@ -9725,6 +9725,12 @@ void process_covenant_reply(LLMessageSystem* msg, void**) { panel->updateCovenantText(covenant_text); } + // Standalone location profile floater + if (fs_floater) + { + fs_floater->updateCovenantText(covenant_text); + } + // } } diff --git a/indra/newview/llviewerobjectlist.cpp b/indra/newview/llviewerobjectlist.cpp index a7f57816a8..97067f9554 100644 --- a/indra/newview/llviewerobjectlist.cpp +++ b/indra/newview/llviewerobjectlist.cpp @@ -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; } diff --git a/indra/newview/llvieweroctree.cpp b/indra/newview/llvieweroctree.cpp index 86591ff4df..023f1b92ba 100644 --- a/indra/newview/llvieweroctree.cpp +++ b/indra/newview/llvieweroctree.cpp @@ -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(); diff --git a/indra/newview/llviewerpartsim.cpp b/indra/newview/llviewerpartsim.cpp index 91d99fb475..85aaf39ab5 100644 --- a/indra/newview/llviewerpartsim.cpp +++ b/indra/newview/llviewerpartsim.cpp @@ -709,12 +709,10 @@ void LLViewerPartSim::updateSimulation() BOOL upd = TRUE; LLViewerObject* vobj = mViewerPartSources[i]->mSourceObjectp; - // Partially undo MAINT-5700: Draw imposter for muted avatars - //if (vobj && vobj->isAvatar() && ((LLVOAvatar*)vobj)->isInMuteList()) - //{ - // upd = FALSE; - //} - // + if (vobj && vobj->isAvatar() && ((LLVOAvatar*)vobj)->isInMuteList()) + { + upd = FALSE; + } if (upd && vobj && (vobj->getPCode() == LL_PCODE_VOLUME)) { diff --git a/indra/newview/llvoavatar.cpp b/indra/newview/llvoavatar.cpp index 80ab009cc4..46d500479c 100644 --- a/indra/newview/llvoavatar.cpp +++ b/indra/newview/llvoavatar.cpp @@ -2596,7 +2596,10 @@ void LLVOAvatar::idleUpdateMisc(bool detailed_update) BOOL visible = isVisible() || mNeedsAnimUpdate; // update attachments positions - if (detailed_update || !sUseImpostors) + // Fix LL impostor hacking; No detailed updates if muted when using no impostors + //if (detailed_update || !sUseImpostors) + if (detailed_update || (!sUseImpostors && !isInMuteList())) + // { 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) + // 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) + // { 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()) + // Fix LL impostor hacking + //if (isImpostor() && 0 != mDrawable->getNumFaces() && mDrawable->getFace(0)->hasGeometry()) + if (isImpostor() && !needsImpostorUpdate() && 0 != mDrawable->getNumFaces() && mDrawable->getFace(0)->hasGeometry()) + // { 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()) + // 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()) + // ) { avatar->calcMutedAVColor(); @@ -9699,7 +9711,24 @@ void LLVOAvatar::updateImpostors() BOOL LLVOAvatar::isImpostor() { - return sUseImpostors && (isVisuallyMuted() || (mUpdatePeriod >= IMPOSTOR_PERIOD)) ? TRUE : FALSE; + // 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()); + } + // } BOOL LLVOAvatar::shouldImpostor(const U32 rank_factor) const diff --git a/indra/newview/llvovolume.cpp b/indra/newview/llvovolume.cpp index 18699a1935..1489de1ab9 100644 --- a/indra/newview/llvovolume.cpp +++ b/indra/newview/llvovolume.cpp @@ -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 diff --git a/indra/newview/pipeline.cpp b/indra/newview/pipeline.cpp index 87b4ee99e0..d26243191e 100644 --- a/indra/newview/pipeline.cpp +++ b/indra/newview/pipeline.cpp @@ -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() // Partially undo MAINT-5700: Draw imposter for muted avatars - || (LLVOAvatar::AV_DO_NOT_RENDER == av->getVisualMuteSettings() && !av->needsImpostorUpdate()) )) + // 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()) + // { return; } @@ -11728,7 +11731,10 @@ void LLPipeline::generateImpostor(LLVOAvatar* avatar) avatar->setImpostorDim(tdim); - LLVOAvatar::sUseImpostors = true; // @TODO ??? + // FIRE-20333: Set back to correct value depending on sMaxNonImpostors + //LLVOAvatar::sUseImpostors = true; // @TODO ??? + LLVOAvatar::sUseImpostors = (0 != LLVOAvatar::sMaxNonImpostors); + // sUseOcclusion = occlusion; sReflectionRender = FALSE; sImpostorRender = FALSE; diff --git a/indra/newview/skins/default/xui/en/panel_preferences_firestorm.xml b/indra/newview/skins/default/xui/en/panel_preferences_firestorm.xml index a0dfa1feb0..627f7f8c10 100644 --- a/indra/newview/skins/default/xui/en/panel_preferences_firestorm.xml +++ b/indra/newview/skins/default/xui/en/panel_preferences_firestorm.xml @@ -556,10 +556,7 @@ left="15" name="FSStaticEyes" width="250" - control_name="FSStaticEyes"> - - + control_name="FSStaticEyes"/>