diff --git a/indra/llcommon/llqueuedthread.cpp b/indra/llcommon/llqueuedthread.cpp index 809a626c93110eb406e1770d704af65c3e0975f6..e0b56b7973ff22e19fa9b177f03d583bf57ea4ef 100644 --- a/indra/llcommon/llqueuedthread.cpp +++ b/indra/llcommon/llqueuedthread.cpp @@ -428,9 +428,11 @@ S32 LLQueuedThread::processNextRequest() llassert_always(req->getStatus() == STATUS_QUEUED); break; } + U32 start_priority = 0 ; if (req) { req->setStatus(STATUS_INPROGRESS); + start_priority = req->getPriority(); } unlockData(); @@ -439,8 +441,7 @@ S32 LLQueuedThread::processNextRequest() // safe to access req. if (req) { - // process request - U32 start_priority = req->getPriority(); + // process request bool complete = req->processRequest(); if (complete) diff --git a/indra/llui/llnotifications.cpp b/indra/llui/llnotifications.cpp index 621e72ce38bfba728097b72d40e79c6a0633952e..9e272a09495a001a522d22c487aba14fe592cc7b 100644 --- a/indra/llui/llnotifications.cpp +++ b/indra/llui/llnotifications.cpp @@ -34,6 +34,7 @@ #include "llnotifications.h" +#include "llinstantmessage.h" #include "llxmlnode.h" #include "lluictrl.h" #include "lluictrlfactory.h" @@ -41,6 +42,7 @@ #include "llsdserialize.h" #include "lltrans.h" #include "llnotificationslistener.h" +#include "llstring.h" #include <algorithm> #include <boost/regex.hpp> @@ -1487,7 +1489,14 @@ std::ostream& operator<<(std::ostream& s, const LLNotification& notification) void LLPostponedNotification::onCachedNameReceived(const LLUUID& id, const std::string& first, const std::string& last, bool is_group) { - gCacheName->getFullName(id, mName); + mName = first + " " + last; + + LLStringUtil::trim(mName); + if (mName.empty()) + { + llwarns << "Empty name received for Id: " << id << llendl; + mName = SYSTEM_FROM; + } modifyNotificationParams(); LLNotifications::instance().add(mParams); cleanup(); diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml index e26367a011d88ecddeab76918b0acd92c2ef46d4..4a04aeb948bdd3f384266f4a41f27c1f65802a45 100644 --- a/indra/newview/app_settings/settings.xml +++ b/indra/newview/app_settings/settings.xml @@ -4666,7 +4666,7 @@ <key>Type</key> <string>String</string> <key>Value</key> - <string>https://www.xstreetsl.com/modules.php?name=Marketplace</string> + <string>http://marketplace.secondlife.com/</string> </map> <key>MarketplaceURL_objectFemale</key> <map> @@ -4721,7 +4721,7 @@ <key>Type</key> <string>String</string> <key>Value</key> - <string>https://www.xstreetsl.com/modules.php?name=Marketplace</string> + <string>http://marketplace.secondlife.com</string> </map> <key>MarketplaceURL_bodypartMale</key> <map> @@ -4732,7 +4732,7 @@ <key>Type</key> <string>String</string> <key>Value</key> - <string>https://www.xstreetsl.com/modules.php?name=Marketplace</string> + <string>http://marketplace.secondlife.com/</string> </map> <key>MarketplaceURL_glovesMale</key> <map> diff --git a/indra/newview/llagent.cpp b/indra/newview/llagent.cpp index 4e5fdb1219dbf0a2444daf1738be5d74329803cc..72d51540ef149f9796adb140838af630330a9dd8 100644 --- a/indra/newview/llagent.cpp +++ b/indra/newview/llagent.cpp @@ -3406,6 +3406,9 @@ void LLAgent::setTeleportState(ETeleportState state) } else if(mTeleportState == TELEPORT_ARRIVING) { + // First two position updates after a teleport tend to be weird + LLViewerStats::getInstance()->mAgentPositionSnaps.mCountOfNextUpdatesToIgnore = 2; + // Let the interested parties know we've teleported. LLViewerParcelMgr::getInstance()->onTeleportFinished(false, getPositionGlobal()); } diff --git a/indra/newview/llpaneloutfitedit.cpp b/indra/newview/llpaneloutfitedit.cpp index 31c427d2ba24a0a0d370cb49f4fa9dd75e497f6e..937b794686df0f0c7f2ece3685f96a6ad0d7a4a7 100644 --- a/indra/newview/llpaneloutfitedit.cpp +++ b/indra/newview/llpaneloutfitedit.cpp @@ -71,6 +71,7 @@ #include "llsdutil.h" #include "llsidepanelappearance.h" #include "lltoggleablemenu.h" +#include "llvoavatarself.h" #include "llwearablelist.h" #include "llwearableitemslist.h" #include "llwearabletype.h" @@ -347,8 +348,8 @@ BOOL LLPanelOutfitEdit::postBuild() mInventoryItemsPanel = getChild<LLInventoryPanel>("folder_view"); mInventoryItemsPanel->setFilterTypes(ALL_ITEMS_MASK); mInventoryItemsPanel->setShowFolderState(LLInventoryFilter::SHOW_NON_EMPTY_FOLDERS); - mInventoryItemsPanel->setSelectCallback(boost::bind(&LLPanelOutfitEdit::onInventorySelectionChange, this)); - mInventoryItemsPanel->getRootFolder()->setReshapeCallback(boost::bind(&LLPanelOutfitEdit::onInventorySelectionChange, this)); + mInventoryItemsPanel->setSelectCallback(boost::bind(&LLPanelOutfitEdit::updatePlusButton, this)); + mInventoryItemsPanel->getRootFolder()->setReshapeCallback(boost::bind(&LLPanelOutfitEdit::updatePlusButton, this)); mCOFDragAndDropObserver = new LLCOFDragAndDropObserver(mInventoryItemsPanel->getModel()); @@ -388,7 +389,7 @@ BOOL LLPanelOutfitEdit::postBuild() mWearablesListViewPanel = getChild<LLPanel>("filtered_wearables_panel"); mWearableItemsList = getChild<LLInventoryItemsList>("list_view"); mWearableItemsList->setCommitOnSelectionChange(true); - mWearableItemsList->setCommitCallback(boost::bind(&LLPanelOutfitEdit::onInventorySelectionChange, this)); + mWearableItemsList->setCommitCallback(boost::bind(&LLPanelOutfitEdit::updatePlusButton, this)); mWearableItemsList->setDoubleClickCallback(boost::bind(&LLPanelOutfitEdit::onPlusBtnClicked, this)); mSaveComboBtn.reset(new LLSaveOutfitComboBtn(this)); @@ -442,6 +443,9 @@ void LLPanelOutfitEdit::showAddWearablesPanel(bool show_add_wearables) mListViewFilterCmbBox->setVisible(false); showWearablesFilter(); + + // Reset mWearableItemsList position to top. See EXT-8180. + mWearableItemsList->goToTop(); } //switching button bars @@ -619,15 +623,52 @@ void LLPanelOutfitEdit::onShopButtonClicked() { static LLShopURLDispatcher url_resolver; + // will contain the resultant URL std::string url; + + if (isAgentAvatarValid()) + { + // try to get wearable type from 'Add More' panel first (EXT-7639) + LLWearableType::EType type = getAddMorePanelSelectionType(); + + if (type == LLWearableType::WT_NONE) + { + type = getCOFWearablesSelectionType(); + } + + ESex sex = gAgentAvatarp->getSex(); + + // WT_INVALID comes for attachments + if (type != LLWearableType::WT_INVALID && type != LLWearableType::WT_NONE) + { + url = url_resolver.resolveURL(type, sex); + } + + if (url.empty()) + { + url = url_resolver.resolveURL(mCOFWearables->getExpandedAccordionAssetType(), sex); + } + } + else + { + llwarns << "Agent avatar is invalid" << llendl; + + // the second argument is not important in this case: generic market place will be opened + url = url_resolver.resolveURL(LLWearableType::WT_NONE, SEX_FEMALE); + } + + LLWeb::loadURLExternal(url); +} + +LLWearableType::EType LLPanelOutfitEdit::getCOFWearablesSelectionType() const +{ std::vector<LLPanel*> selected_items; - mCOFWearables->getSelectedItems(selected_items); + LLWearableType::EType type = LLWearableType::WT_NONE; - ESex sex = gSavedSettings.getU32("AvatarSex") ? SEX_MALE : SEX_FEMALE; + mCOFWearables->getSelectedItems(selected_items); if (selected_items.size() == 1) { - LLWearableType::EType type = LLWearableType::WT_NONE; LLPanel* item = selected_items.front(); // LLPanelDummyClothingListItem is lower then LLPanelInventoryListItemBase in hierarchy tree @@ -639,20 +680,45 @@ void LLPanelOutfitEdit::onShopButtonClicked() { type = real_item->getWearableType(); } + } - // WT_INVALID comes for attachments - if (type != LLWearableType::WT_INVALID) + return type; +} + +LLWearableType::EType LLPanelOutfitEdit::getAddMorePanelSelectionType() const +{ + LLWearableType::EType type = LLWearableType::WT_NONE; + + if (mAddWearablesPanel != NULL && mAddWearablesPanel->getVisible()) + { + if (mInventoryItemsPanel != NULL && mInventoryItemsPanel->getVisible()) { - url = url_resolver.resolveURL(type, sex); + std::set<LLUUID> selected_uuids = mInventoryItemsPanel->getRootFolder()->getSelectionList(); + + if (selected_uuids.size() == 1) + { + type = getWearableTypeByItemUUID(*(selected_uuids.begin())); + } } - } + else if (mWearableItemsList != NULL && mWearableItemsList->getVisible()) + { + std::vector<LLUUID> selected_uuids; + mWearableItemsList->getSelectedUUIDs(selected_uuids); - if (url.empty()) - { - url = url_resolver.resolveURL(mCOFWearables->getExpandedAccordionAssetType(), sex); + if (selected_uuids.size() == 1) + { + type = getWearableTypeByItemUUID(selected_uuids.front()); + } + } } - LLWeb::loadURLExternal(url); + return type; +} + +LLWearableType::EType LLPanelOutfitEdit::getWearableTypeByItemUUID(const LLUUID& item_uuid) const +{ + LLViewerInventoryItem* item = gInventory.getLinkedItem(item_uuid); + return (item != NULL) ? item->getWearableType() : LLWearableType::WT_NONE; } void LLPanelOutfitEdit::onRemoveFromOutfitClicked(void) @@ -672,7 +738,7 @@ void LLPanelOutfitEdit::onEditWearableClicked(void) } } -void LLPanelOutfitEdit::onInventorySelectionChange() +void LLPanelOutfitEdit::updatePlusButton() { uuid_vec_t selected_items; getSelectedItemsUUID(selected_items); @@ -915,6 +981,9 @@ void LLPanelOutfitEdit::updateVerbs() mStatus->setText(outfit_is_dirty ? getString("unsaved_changes") : getString("now_editing")); updateCurrentOutfitName(); + + //updating state of "Wear Item" button previously known as "Plus" button + updatePlusButton(); } bool LLPanelOutfitEdit::switchPanels(LLPanel* switch_from_panel, LLPanel* switch_to_panel) @@ -950,9 +1019,6 @@ void LLPanelOutfitEdit::showFilteredWearablesListView(LLWearableType::EType type showAddWearablesPanel(true); showWearablesListView(); - // Reset mWearableItemsList position to top. See EXT-8180. - mWearableItemsList->goToTop(); - //e_list_view_item_type implicitly contains LLWearableType::EType starting from LVIT_SHAPE applyListViewFilter((EListViewItemType) (LVIT_SHAPE + type)); } diff --git a/indra/newview/llpaneloutfitedit.h b/indra/newview/llpaneloutfitedit.h index 1eef211276347797286d397d26d2265337b2246c..770e2a229b9f7a5af7f289392eb5d2fa511e6129 100644 --- a/indra/newview/llpaneloutfitedit.h +++ b/indra/newview/llpaneloutfitedit.h @@ -145,7 +145,7 @@ class LLPanelOutfitEdit : public LLPanel void onFolderViewFilterCommitted(LLUICtrl* ctrl); void onListViewFilterCommitted(LLUICtrl* ctrl); void onSearchEdit(const std::string& string); - void onInventorySelectionChange(); + void updatePlusButton(); void onPlusBtnClicked(void); void onVisibilityChange(const LLSD &in_visible_chain); @@ -198,6 +198,10 @@ class LLPanelOutfitEdit : public LLPanel void getCurrentItemUUID(LLUUID& selected_id); void onCOFChanged(); + LLWearableType::EType getCOFWearablesSelectionType() const; + LLWearableType::EType getAddMorePanelSelectionType() const; + LLWearableType::EType getWearableTypeByItemUUID(const LLUUID& item_uuid) const; + LLTextBox* mCurrentOutfitName; LLTextBox* mStatus; LLInventoryPanel* mInventoryItemsPanel; diff --git a/indra/newview/llpreviewtexture.cpp b/indra/newview/llpreviewtexture.cpp index bf18c9e5e7c1b4e5acddce3a9e8d9a4de1e9412b..c4cbbbb791b887b0e8e7f89f72052d56a2190f5a 100644 --- a/indra/newview/llpreviewtexture.cpp +++ b/indra/newview/llpreviewtexture.cpp @@ -75,7 +75,8 @@ LLPreviewTexture::LLPreviewTexture(const LLSD& key) mLastWidth(0), mAspectRatio(0.f), mPreviewToSave(FALSE), - mImage(NULL) + mImage(NULL), + mImageOldBoostLevel(LLViewerTexture::BOOST_NONE) { updateImageID(); if (key.has("save_as")) @@ -93,7 +94,7 @@ LLPreviewTexture::~LLPreviewTexture() { getWindow()->decBusyCount(); } - + mImage->setBoostLevel(mImageOldBoostLevel); mImage = NULL; } @@ -543,6 +544,7 @@ void LLPreviewTexture::onAspectRatioCommit(LLUICtrl* ctrl, void* userdata) void LLPreviewTexture::loadAsset() { mImage = LLViewerTextureManager::getFetchedTexture(mImageID, MIPMAP_TRUE, LLViewerTexture::BOOST_NONE, LLViewerTexture::LOD_TEXTURE); + mImageOldBoostLevel = mImage->getBoostLevel(); mImage->setBoostLevel(LLViewerTexture::BOOST_PREVIEW); mImage->forceToSaveRawImage(0) ; mAssetStatus = PREVIEW_ASSET_LOADING; diff --git a/indra/newview/llpreviewtexture.h b/indra/newview/llpreviewtexture.h index 0f29a741c11deff173cc4d4bbfeacba05cc498c7..cbdb057781ceb7f92426411b7a9cad730de2a885 100644 --- a/indra/newview/llpreviewtexture.h +++ b/indra/newview/llpreviewtexture.h @@ -82,9 +82,10 @@ class LLPreviewTexture : public LLPreview void updateDimensions(); LLUUID mImageID; LLPointer<LLViewerFetchedTexture> mImage; - BOOL mLoadingFullImage; + S32 mImageOldBoostLevel; std::string mSaveFileName; LLFrameTimer mSavedFileTimer; + BOOL mLoadingFullImage; BOOL mShowKeepDiscard; BOOL mCopyToInv; @@ -94,11 +95,10 @@ class LLPreviewTexture : public LLPreview // This is stored off in a member variable, because the save-as // button and drag and drop functionality need to know. BOOL mIsCopyable; - + BOOL mUpdateDimensions; S32 mLastHeight; S32 mLastWidth; - F32 mAspectRatio; - BOOL mUpdateDimensions; + F32 mAspectRatio; LLLoadedCallbackEntry::source_callback_list_t mCallbackTextureList ; }; diff --git a/indra/newview/llviewermessage.cpp b/indra/newview/llviewermessage.cpp index 4762cf3027b80db929e3e8389da433d8061ace92..d4ff05496144269d7c98c8afdf1a6eb7196f8940 100644 --- a/indra/newview/llviewermessage.cpp +++ b/indra/newview/llviewermessage.cpp @@ -2585,7 +2585,7 @@ void process_improved_im(LLMessageSystem *msg, void **user_data) params.substitutions = substitutions; params.payload = payload; - LLPostponedNotification::add<LLPostponedServerObjectNotification>(params, from_id, false); + LLPostponedNotification::add<LLPostponedServerObjectNotification>(params, from_id, from_group); } break; case IM_FROM_TASK_AS_ALERT: diff --git a/indra/newview/llviewerobject.cpp b/indra/newview/llviewerobject.cpp index 6d93de23837df9c9d9daf5e79d9cf82780ac8e62..15bdf126c532ae0705ea11fd034502499dd780b1 100644 --- a/indra/newview/llviewerobject.cpp +++ b/indra/newview/llviewerobject.cpp @@ -79,6 +79,7 @@ #include "llviewerparceloverlay.h" #include "llviewerpartsource.h" #include "llviewerregion.h" +#include "llviewerstats.h" #include "llviewertextureanim.h" #include "llviewerwindow.h" // For getSpinAxis #include "llvoavatar.h" @@ -1916,6 +1917,12 @@ U32 LLViewerObject::processUpdateMessage(LLMessageSystem *mesgsys, avatar->clampAttachmentPositions(); } + + // If we're snapping the position by more than 0.5m, update LLViewerStats::mAgentPositionSnaps + if ( asAvatar() && asAvatar()->isSelf() && (mag_sqr > 0.25f) ) + { + LLViewerStats::getInstance()->mAgentPositionSnaps.push( diff.length() ); + } } if (new_rot != mLastRot diff --git a/indra/newview/llviewerstats.cpp b/indra/newview/llviewerstats.cpp index 6ada122662812445b9676996a27b00a68c22432c..930c608e35b917932a61cb4ccc8911afbb4fc82a 100644 --- a/indra/newview/llviewerstats.cpp +++ b/indra/newview/llviewerstats.cpp @@ -280,6 +280,8 @@ LLViewerStats::LLViewerStats() : { mStats[ST_HAS_BAD_TIMER] = 1.0; } + + mAgentPositionSnaps.reset(); } LLViewerStats::~LLViewerStats() @@ -299,6 +301,8 @@ void LLViewerStats::resetStats() LLViewerStats::getInstance()->mPacketsOutStat.reset(); LLViewerStats::getInstance()->mFPSStat.reset(); LLViewerStats::getInstance()->mTexturePacketsStat.reset(); + + LLViewerStats::getInstance()->mAgentPositionSnaps.reset(); } @@ -393,6 +397,10 @@ void LLViewerStats::addToMessage(LLSD &body) const << llendl; } } + + body["AgentPositionSnaps"] = mAgentPositionSnaps.getData(); + llinfos << "STAT: AgentPositionSnaps: Mean = " << mAgentPositionSnaps.getMean() << "; StdDev = " << mAgentPositionSnaps.getStdDev() + << "; Count = " << mAgentPositionSnaps.getCount() << llendl; } // static diff --git a/indra/newview/llviewerstats.h b/indra/newview/llviewerstats.h index 13d73000d242ed6158e38821d8437bf94b2a7141..694eeaf0974d8eca1dabf795036f027c717d83d8 100644 --- a/indra/newview/llviewerstats.h +++ b/indra/newview/llviewerstats.h @@ -197,6 +197,61 @@ class LLViewerStats : public LLSingleton<LLViewerStats> void addToMessage(LLSD &body) const; + struct StatsAccumulator + { + S32 mCount; + F32 mSum; + F32 mSumOfSquares; + U32 mCountOfNextUpdatesToIgnore; + + inline void push( F32 val ) + { + if ( mCountOfNextUpdatesToIgnore > 0 ) + { + mCountOfNextUpdatesToIgnore--; + return; + } + + mCount++; + mSum += val; + mSumOfSquares += val * val; + } + + inline F32 getMean() const + { + return (mCount == 0) ? 0.f : ((F32)mSum)/mCount; + } + + inline F32 getStdDev() const + { + const F32 mean = getMean(); + return (mCount == 0) ? 0.f : sqrt( mSumOfSquares/mCount - (mean * mean) ); + } + + inline U32 getCount() const + { + return mCount; + } + + inline void reset() + { + mCount = 0; + mSum = mSumOfSquares = 0.f; + mCountOfNextUpdatesToIgnore = 0; + } + + inline LLSD getData() const + { + LLSD data; + data["mean"] = getMean(); + data["std_dev"] = getStdDev(); + data["count"] = (S32)mCount; + return data; + } + }; + + StatsAccumulator mAgentPositionSnaps; + private: F64 mStats[ST_COUNT]; diff --git a/indra/newview/llviewertexture.cpp b/indra/newview/llviewertexture.cpp index 0afbce7d513de0fd8f9efdeec761d120c1a3e473..75bb9f84e2a47b5319c2e8f246fd3c767835b1ae 100644 --- a/indra/newview/llviewertexture.cpp +++ b/indra/newview/llviewertexture.cpp @@ -495,6 +495,7 @@ LLViewerTexture::LLViewerTexture(const U32 width, const U32 height, const U8 com mFullHeight = height ; mUseMipMaps = usemipmaps ; mComponents = components ; + setTexelsPerImage(); mID.generate(); sImageCount++; @@ -522,6 +523,7 @@ void LLViewerTexture::init(bool firstinit) mFullWidth = 0; mFullHeight = 0; + mTexelsPerImage = 0 ; mUseMipMaps = FALSE ; mComponents = 0 ; @@ -530,7 +532,7 @@ void LLViewerTexture::init(bool firstinit) mMaxVirtualSize = 0.f; mNeedsGLTexture = FALSE ; mMaxVirtualSizeResetInterval = 1; - mMaxVirtualSizeResetCounter = 1 ; + mMaxVirtualSizeResetCounter = mMaxVirtualSizeResetInterval ; mAdditionalDecodePriority = 0.f ; mParcelMedia = NULL ; mNumFaces = 0 ; @@ -838,7 +840,8 @@ BOOL LLViewerTexture::createGLTexture(S32 discard_level, const LLImageRaw* image { mFullWidth = mGLTexturep->getCurrentWidth() ; mFullHeight = mGLTexturep->getCurrentHeight() ; - mComponents = mGLTexturep->getComponents() ; + mComponents = mGLTexturep->getComponents() ; + setTexelsPerImage(); } return ret ; @@ -1056,9 +1059,16 @@ void LLViewerTexture::destroyGLTexture() } } +void LLViewerTexture::setTexelsPerImage() +{ + S32 fullwidth = llmin(mFullWidth,(S32)MAX_IMAGE_SIZE_DEFAULT); + S32 fullheight = llmin(mFullHeight,(S32)MAX_IMAGE_SIZE_DEFAULT); + mTexelsPerImage = (F32)fullwidth * fullheight; +} + BOOL LLViewerTexture::isLargeImage() { - return mFullWidth * mFullHeight > LLViewerTexture::sMinLargeImageSize ; + return (S32)mTexelsPerImage > LLViewerTexture::sMinLargeImageSize ; } //virtual @@ -1415,6 +1425,7 @@ BOOL LLViewerFetchedTexture::createTexture(S32 usename/*= 0*/) mFullWidth = mRawImage->getWidth(); mFullHeight = mRawImage->getHeight(); + setTexelsPerImage(); } else { @@ -1619,11 +1630,7 @@ F32 LLViewerFetchedTexture::calcDecodePriority() { // priority range = 100,000 - 500,000 S32 desired_discard = mDesiredDiscardLevel; - if (getDontDiscard()) - { - desired_discard -= 2; - } - else if (!isJustBound() && mCachedRawImageReady) + if (!isJustBound() && mCachedRawImageReady) { if(mBoostLevel < BOOST_HIGH) { @@ -1639,7 +1646,7 @@ F32 LLViewerFetchedTexture::calcDecodePriority() S32 ddiscard = cur_discard - desired_discard; ddiscard = llclamp(ddiscard, -1, MAX_DELTA_DISCARD_LEVEL_FOR_PRIORITY); - priority = (ddiscard + 1) * PRIORITY_DELTA_DISCARD_LEVEL_FACTOR; + priority = (ddiscard + 1) * PRIORITY_DELTA_DISCARD_LEVEL_FACTOR; } // Priority Formula: @@ -1647,19 +1654,51 @@ F32 LLViewerFetchedTexture::calcDecodePriority() // [10,000,000] + [1,000,000-9,000,000] + [100,000-500,000] + [1-20,000] + [0-999] if (priority > 0.0f) { + bool large_enough = mCachedRawImageReady && ((S32)mTexelsPerImage > sMinLargeImageSize) ; + if(large_enough) + { + //Note: + //to give small, low-priority textures some chance to be fetched, + //cut the priority in half if the texture size is larger than 256 * 256 and has a 64*64 ready. + priority *= 0.5f ; + } + pixel_priority = llclamp(pixel_priority, 0.0f, MAX_PRIORITY_PIXEL); priority += pixel_priority + PRIORITY_BOOST_LEVEL_FACTOR * mBoostLevel; if ( mBoostLevel > BOOST_HIGH) { - priority += PRIORITY_BOOST_HIGH_FACTOR; + if(mBoostLevel > BOOST_SUPER_HIGH) + { + //for very important textures, always grant the highest priority. + priority += PRIORITY_BOOST_HIGH_FACTOR; + } + else if(mCachedRawImageReady) + { + //Note: + //to give small, low-priority textures some chance to be fetched, + //if high priority texture has a 64*64 ready, lower its fetching priority. + setAdditionalDecodePriority(0.5f) ; + } + else + { + priority += PRIORITY_BOOST_HIGH_FACTOR; + } } if(mAdditionalDecodePriority > 0.0f) { // priority range += 1,000,000.f-9,000,000.f - priority += PRIORITY_ADDITIONAL_FACTOR * (1.0 + mAdditionalDecodePriority * MAX_ADDITIONAL_LEVEL_FOR_PRIORITY); + F32 additional = PRIORITY_ADDITIONAL_FACTOR * (1.0 + mAdditionalDecodePriority * MAX_ADDITIONAL_LEVEL_FOR_PRIORITY); + if(large_enough) + { + //Note: + //to give small, low-priority textures some chance to be fetched, + //cut the additional priority to a quarter if the texture size is larger than 256 * 256 and has a 64*64 ready. + additional *= 0.25f ; + } + priority += additional; } } return priority; @@ -1702,11 +1741,6 @@ void LLViewerFetchedTexture::updateVirtualSize() addTextureStats(0.f, FALSE) ;//reset } - if(mForceToSaveRawImage) - { - setAdditionalDecodePriority(0.75f) ; //boost the fetching priority - } - for(U32 i = 0 ; i < mNumFaces ; i++) { LLFace* facep = mFaceList[i] ; @@ -1819,6 +1853,7 @@ bool LLViewerFetchedTexture::updateFetch() { mFullWidth = mRawImage->getWidth() << mRawDiscardLevel; mFullHeight = mRawImage->getHeight() << mRawDiscardLevel; + setTexelsPerImage(); if(mFullWidth > MAX_IMAGE_SIZE || mFullHeight > MAX_IMAGE_SIZE) { @@ -2887,10 +2922,6 @@ void LLViewerLODTexture::processTextureStats() //static const F64 log_2 = log(2.0); static const F64 log_4 = log(4.0); - S32 fullwidth = llmin(mFullWidth,(S32)MAX_IMAGE_SIZE_DEFAULT); - S32 fullheight = llmin(mFullHeight,(S32)MAX_IMAGE_SIZE_DEFAULT); - mTexelsPerImage = (F32)fullwidth * fullheight; - F32 discard_level = 0.f; // If we know the output width and height, we can force the discard diff --git a/indra/newview/llviewertexture.h b/indra/newview/llviewertexture.h index 8b69408e4bdfa52dcafc482739ab94a7fbc2fcf6..b33d04e8dd3c65c2f89f408b5468477d0c22bb36 100644 --- a/indra/newview/llviewertexture.h +++ b/indra/newview/llviewertexture.h @@ -126,15 +126,16 @@ class LLViewerTexture : public LLTexture BOOST_HIGH = 10, BOOST_BUMP , BOOST_TERRAIN , // has to be high priority for minimap / low detail - BOOST_SELECTED , - BOOST_HUD , + BOOST_SELECTED , BOOST_AVATAR_BAKED_SELF , + BOOST_AVATAR_SELF , // needed for baking avatar + BOOST_SUPER_HIGH , //textures higher than this need to be downloaded at the required resolution without delay. + BOOST_HUD , BOOST_ICON , BOOST_UI , BOOST_PREVIEW , BOOST_MAP , - BOOST_MAP_VISIBLE , - BOOST_AVATAR_SELF , // needed for baking avatar + BOOST_MAP_VISIBLE , BOOST_MAX_LEVEL, //other texture Categories @@ -268,6 +269,7 @@ class LLViewerTexture : public LLTexture void init(bool firstinit) ; void reorganizeFaceList() ; void reorganizeVolumeList() ; + void setTexelsPerImage(); private: //note: do not make this function public. /*virtual*/ LLImageGL* getGLTexture() const ; @@ -280,6 +282,7 @@ class LLViewerTexture : public LLTexture S32 mFullHeight; BOOL mUseMipMaps ; S8 mComponents; + F32 mTexelsPerImage; // Texels per image. mutable S8 mNeedsGLTexture; mutable F32 mMaxVirtualSize; // The largest virtual size of the image, in pixels - how much data to we need? mutable S32 mMaxVirtualSizeResetCounter ; @@ -598,8 +601,6 @@ class LLViewerLODTexture : public LLViewerFetchedTexture void scaleDown() ; private: - - F32 mTexelsPerImage; // Texels per image. F32 mDiscardVirtualSize; // Virtual size used to calculate desired discard F32 mCalculatedDiscardLevel; // Last calculated discard level }; diff --git a/indra/newview/llvoavatar.cpp b/indra/newview/llvoavatar.cpp index ab5a75e3074befb91edbe7bb505027313df05a66..d596b96d818a22aa461f0be9f69a450d8cedc1a5 100644 --- a/indra/newview/llvoavatar.cpp +++ b/indra/newview/llvoavatar.cpp @@ -3185,29 +3185,26 @@ BOOL LLVOAvatar::updateCharacter(LLAgent &agent) { // muted avatars update at 16 hz mUpdatePeriod = 16; } - else if (visible && mVisibilityRank <= LLVOAvatar::sMaxVisible) + else if (mVisibilityRank <= LLVOAvatar::sMaxVisible) { //first 25% of max visible avatars are not impostored mUpdatePeriod = 1; } - else if (visible && mVisibilityRank > LLVOAvatar::sMaxVisible * 4) + else if (mVisibilityRank > LLVOAvatar::sMaxVisible * 4) { //background avatars are REALLY slow updating impostors mUpdatePeriod = 16; } - else if (visible && mVisibilityRank > LLVOAvatar::sMaxVisible * 3) + else if (mVisibilityRank > LLVOAvatar::sMaxVisible * 3) { //back 25% of max visible avatars are slow updating impostors mUpdatePeriod = 8; } - else if (visible && mImpostorPixelArea <= impostor_area) + else if (mImpostorPixelArea <= impostor_area) { // stuff in between gets an update period based on pixel area mUpdatePeriod = llclamp((S32) sqrtf(impostor_area*4.f/mImpostorPixelArea), 2, 8); } - else if (visible && mVisibilityRank > LLVOAvatar::sMaxVisible) - { // force nearby impostors in ultra crowded areas - mUpdatePeriod = 2; - } else - { // not impostored - mUpdatePeriod = 1; + { + //nearby avatars, update the impostors more frequently. + mUpdatePeriod = 4; } visible = (LLDrawable::getCurrentFrame()+mID.mData[0])%mUpdatePeriod == 0 ? TRUE : FALSE; @@ -4224,10 +4221,12 @@ void LLVOAvatar::checkTextureLoading() return ; } +const F32 SELF_ADDITIONAL_PRI = 0.75f ; +const F32 ADDITIONAL_PRI = 0.5f; void LLVOAvatar::addBakedTextureStats( LLViewerFetchedTexture* imagep, F32 pixel_area, F32 texel_area_ratio, S32 boost_level) { //if this function is not called for the last 512 frames, the texture pipeline will stop fetching this texture. - static const S32 MAX_TEXTURE_VIRTURE_SIZE_RESET_INTERVAL = 512 ; //frames + static const S32 MAX_TEXTURE_VIRTURE_SIZE_RESET_INTERVAL = 512 ; //frames imagep->resetTextureStats(); imagep->setCanUseHTTP(false) ; //turn off http fetching for baked textures. @@ -4237,9 +4236,14 @@ void LLVOAvatar::addBakedTextureStats( LLViewerFetchedTexture* imagep, F32 pixel mMinPixelArea = llmin(pixel_area, mMinPixelArea); imagep->addTextureStats(pixel_area / texel_area_ratio); imagep->setBoostLevel(boost_level); - if(boost_level == LLViewerTexture::BOOST_AVATAR_BAKED_SELF) + + if(boost_level != LLViewerTexture::BOOST_AVATAR_BAKED_SELF) + { + imagep->setAdditionalDecodePriority(ADDITIONAL_PRI) ; + } + else { - imagep->setAdditionalDecodePriority(1.0f) ; + imagep->setAdditionalDecodePriority(SELF_ADDITIONAL_PRI) ; } } @@ -7143,7 +7147,7 @@ void LLVOAvatar::cullAvatarsByPixelArea() std::sort(LLCharacter::sInstances.begin(), LLCharacter::sInstances.end(), CompareScreenAreaGreater()); // Update the avatars that have changed status - U32 rank = 0; + U32 rank = 2; //1 is reserved for self. for (std::vector<LLCharacter*>::iterator iter = LLCharacter::sInstances.begin(); iter != LLCharacter::sInstances.end(); ++iter) { @@ -7167,7 +7171,7 @@ void LLVOAvatar::cullAvatarsByPixelArea() if (inst->isSelf()) { - inst->setVisibilityRank(0); + inst->setVisibilityRank(1); } else if (inst->mDrawable.notNull() && inst->mDrawable->isVisible()) { diff --git a/indra/newview/llvoavatar.h b/indra/newview/llvoavatar.h index 5737f976da969cbb45dc86cf38b1694d981cdff3..f12dbb880144a482531016535c35c1866333e57a 100644 --- a/indra/newview/llvoavatar.h +++ b/indra/newview/llvoavatar.h @@ -1048,5 +1048,6 @@ class LLVOAvatar : *******************************************************************************/ }; // LLVOAvatar +extern const F32 SELF_ADDITIONAL_PRI; #endif // LL_VO_AVATAR_H diff --git a/indra/newview/llvoavatarself.cpp b/indra/newview/llvoavatarself.cpp index 4edbbb7402ada511837fa4fa8601043f215860e5..b80e47e11a63c2312fc758ffffd966b95a3bcedb 100644 --- a/indra/newview/llvoavatarself.cpp +++ b/indra/newview/llvoavatarself.cpp @@ -2034,7 +2034,7 @@ void LLVOAvatarSelf::addLocalTextureStats( ETextureIndex type, LLViewerFetchedTe imagep->resetTextureStats(); imagep->setMaxVirtualSizeResetInterval(16); imagep->addTextureStats( desired_pixels / texel_area_ratio ); - imagep->setAdditionalDecodePriority(1.0f) ; + imagep->setAdditionalDecodePriority(SELF_ADDITIONAL_PRI) ; imagep->forceUpdateBindStats() ; if (imagep->getDiscardLevel() < 0) { diff --git a/indra/newview/skins/default/xui/en/floater_camera.xml b/indra/newview/skins/default/xui/en/floater_camera.xml index 8c3aa2c9a40570f99dc3f805ca67366e96b4f78b..da2be18db660bfb37ac054bce49357badbe53ecb 100644 --- a/indra/newview/skins/default/xui/en/floater_camera.xml +++ b/indra/newview/skins/default/xui/en/floater_camera.xml @@ -71,7 +71,8 @@ image_name="Cam_Preset_Front_Off" /> <panel_camera_item.selected_picture image_name="Cam_Preset_Front_On" /> - <panel_camera_item.text> + <panel_camera_item.text + name="front_view_text"> Front View </panel_camera_item.text> </panel_camera_item> @@ -85,7 +86,8 @@ image_name="Cam_Preset_Side_Off" /> <panel_camera_item.selected_picture image_name="Cam_Preset_Side_On" /> - <panel_camera_item.text> + <panel_camera_item.text + name="side_view_text"> Side View </panel_camera_item.text> </panel_camera_item> @@ -100,7 +102,8 @@ image_name="Cam_Preset_Back_Off" /> <panel_camera_item.selected_picture image_name="Cam_Preset_Back_On" /> - <panel_camera_item.text> + <panel_camera_item.text + name="rear_view_text"> Rear View </panel_camera_item.text> </panel_camera_item> @@ -122,7 +125,8 @@ <panel_camera_item.mousedown_callback function="CameraPresets.ChangeView" parameter="object_view" /> - <panel_camera_item.text> + <panel_camera_item.text + name="object_view_text"> Object View </panel_camera_item.text> <panel_camera_item.picture @@ -136,7 +140,8 @@ <panel_camera_item.mousedown_callback function="CameraPresets.ChangeView" parameter="mouselook_view" /> - <panel_camera_item.text> + <panel_camera_item.text + name="mouselook_view_text"> Mouselook View </panel_camera_item.text> <panel_camera_item.picture diff --git a/indra/newview/skins/default/xui/en/notifications.xml b/indra/newview/skins/default/xui/en/notifications.xml index 60d3fb708ec9ab41fc4d25d8d8eeceb1bedd1c0a..04bdb4302c2da0e022d66e75bcc722b72fe5f5f3 100644 --- a/indra/newview/skins/default/xui/en/notifications.xml +++ b/indra/newview/skins/default/xui/en/notifications.xml @@ -819,7 +819,7 @@ Delete pick <nolink>[PICK]</nolink>? icon="alertmodal.tga" name="DeleteOutfits" type="alertmodal"> - Delete the selected outfit/s? + Delete the selected outfit? <usetemplate name="okcancelbuttons" notext="Cancel" diff --git a/indra/newview/skins/default/xui/fr/panel_group_general.xml b/indra/newview/skins/default/xui/fr/panel_group_general.xml index ec6d995274f912bbd3827f87ff2ee04558789c23..a2655dcd458771818029cef5ad8fa95b5c56cc88 100644 --- a/indra/newview/skins/default/xui/fr/panel_group_general.xml +++ b/indra/newview/skins/default/xui/fr/panel_group_general.xml @@ -48,7 +48,7 @@ Faites glisser le pointeur de la souris sur les options pour en savoir plus. <spinner label="L$" name="spin_enrollment_fee" tool_tip="Les nouveaux membres doivent payer ces frais pour rejoindre le groupe quand l'option Frais d'inscription est cochée."/> <combo_box name="group_mature_check" tool_tip="Définit si votre groupe contient des informations de type Modéré" width="195"> <combo_item name="select_mature"> - - Sélectionner une catégorie de contenu - + - Catégorie de contenu - </combo_item> <combo_box.item label="Contenu Modéré" name="mature"/> <combo_box.item label="Contenu Général" name="pg"/> diff --git a/indra/newview/skins/default/xui/it/floater_about_land.xml b/indra/newview/skins/default/xui/it/floater_about_land.xml index c9a004be9f926e6ec09582c05ce7b960ee17ad49..af83a3874685b05d35e401f55c256e26c274edda 100644 --- a/indra/newview/skins/default/xui/it/floater_about_land.xml +++ b/indra/newview/skins/default/xui/it/floater_about_land.xml @@ -320,7 +320,7 @@ Solamente terreni più grandi possono essere abilitati nella ricerca. <text name="allow_label"> Permetti ad altri residenti di: </text> - <check_box label="Modificare il terreno" name="edit land check" tool_tip="Se spuntato, chiunque può terraformare il tuo terreno. E' preferibile lasciare questo quadrato non spuntato, dato che sarai sempre in grado di modificare il tuo terreno."/> + <check_box label="Modificare il terreno" name="edit land check" tool_tip="Se spuntata, chiunque può terraformare il tuo terreno. È preferibile lasciare questa opzione non spuntata, dato che sarai comunque in grado di modificare il tuo terreno."/> <check_box label="Permetti il volo" name="check fly" tool_tip="Se spuntato, gli altri residenti potranno volare sul tuo terreno. Se non spuntato, potranno solamente arrivare in volo o sorvolare il terreno."/> <text name="allow_label2"> Creare oggetti: @@ -328,7 +328,7 @@ Solamente terreni più grandi possono essere abilitati nella ricerca. <check_box label="Tutti i residenti" name="edit objects check"/> <check_box label="Gruppo" name="edit group objects check"/> <text name="allow_label3"> - Entrata oggetti: + Immissione oggetti: </text> <check_box label="Tutti i residenti" name="all object entry check"/> <check_box label="Gruppo" name="group object entry check"/> @@ -340,9 +340,9 @@ Solamente terreni più grandi possono essere abilitati nella ricerca. <text name="land_options_label"> Opzioni per il terreno: </text> - <check_box label="Sicuro (senza danno)" name="check safe" tool_tip="Se spuntato, imposta il terreno su 'sicuro', disabilitando i danni da combattimento. Se non spuntato, viene abilitato il combattimento a morte."/> + <check_box label="Sicuro (senza danno)" name="check safe" tool_tip="Se spuntato, imposta il terreno su 'sicuro', disabilitando i danni da combattimento. Se non spuntato, viene abilitato il combattimento con danni."/> <check_box label="Nessuna spinta" name="PushRestrictCheck" tool_tip="Previeni i colpi. Selezionare questa opzione può essere utile per prevenire comportamenti dannosi sul tuo terreno."/> - <check_box label="Mostra luogo nella ricerca (30 L$/settimana)" name="ShowDirectoryCheck" tool_tip="Lascia che questa terra sia vista dagli altri nei risultati di ricerca"/> + <check_box label="Mostra luogo nella ricerca (30 L$/settimana)" name="ShowDirectoryCheck" tool_tip="Consenti che il lotto sia visto nei risultati di ricerca"/> <combo_box name="land category with adult"> <combo_box.item label="Tutte le categorie" name="item0"/> <combo_box.item label="Luogo dei Linden" name="item1"/> @@ -421,7 +421,7 @@ Texture: <spinner left_delta="104" name="media_size_width" tool_tip="Aumenta larghezza per far vedere meglio i media web, lascia a 0 per impostare il default."/> <spinner name="media_size_height" tool_tip="Aumenta altezza per far vedere meglio i media web, lascia a 0 per impostare il default."/> <text name="pixels"> - pixels + pixel </text> <text name="Options:"> Opzioni diff --git a/indra/newview/skins/default/xui/it/floater_buy_currency.xml b/indra/newview/skins/default/xui/it/floater_buy_currency.xml index 1327e8b172a10dfd555ddf22279db8a75a3c92c9..0a499a6c44faa3046252204bf65a5b9c15b32599 100644 --- a/indra/newview/skins/default/xui/it/floater_buy_currency.xml +++ b/indra/newview/skins/default/xui/it/floater_buy_currency.xml @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="buy currency" title="ACQUISTA L$"> <floater.string name="buy_currency"> - Acquista [LINDENS] L$ per circa [LOCALAMOUNT] + acquistare [LINDENS] L$ per circa [LOCALAMOUNT] </floater.string> <text font="SansSerifLarge" left="5" name="info_need_more" right="-5"> Ti servono più L$ @@ -57,8 +57,8 @@ <text bottom_delta="16" name="purchase_warning_notenough"> Non stai acquistando abbastanza L$. Aumenta l'importo. </text> - <button label="Acquista adesso" name="buy_btn"/> - <button label="Cancella" name="cancel_btn"/> + <button label="Acquista" name="buy_btn"/> + <button label="Annulla" name="cancel_btn"/> <text left="5" name="info_cannot_buy" right="-5"> Non in grado di acquistare </text> diff --git a/indra/newview/skins/default/xui/it/panel_people.xml b/indra/newview/skins/default/xui/it/panel_people.xml index 056e424436e3e525bfaacacb8142325cb35d2353..3d07ff45badd699902e21148845d405f82ae2749 100644 --- a/indra/newview/skins/default/xui/it/panel_people.xml +++ b/indra/newview/skins/default/xui/it/panel_people.xml @@ -3,7 +3,7 @@ <panel label="Persone" name="people_panel"> <string name="no_recent_people" value="Nessuna persona recente. Stai cercando persone da frequentare? Prova la [secondlife:///app/search/people Ricerca] o la [secondlife:///app/worldmap Mappa del mondo]."/> <string name="no_filtered_recent_people" value="Non riesci a trovare quello che cerchi? Prova [secondlife:///app/search/people/[SEARCH_TERM] Cerca]."/> - <string name="no_one_near" value="Nessuno vicino. Stai cercando persone da frequentare? Try la [secondlife:///app/search/people Ricerca] o la [secondlife:///app/worldmap Mappa del mondo]."/> + <string name="no_one_near" value="Nessuno vicino. Stai cercando persone da frequentare? Prova a vedere la [secondlife:///app/search/people Ricerca] o la [secondlife:///app/worldmap Mappa del mondo]."/> <string name="no_one_filtered_near" value="Non riesci a trovare quello che cerchi? Prova [secondlife:///app/search/people/[SEARCH_TERM] Cerca]."/> <string name="no_friends_online" value="Nessun amico online"/> <string name="no_friends" value="Nessun amico"/> diff --git a/indra/newview/skins/default/xui/pt/floater_preview_gesture.xml b/indra/newview/skins/default/xui/pt/floater_preview_gesture.xml index 364638780a28ae041ac0e29ea2a3cddd3ae14ba0..a01bee94a123d8de8913b2977a8777cd68fd74de 100644 --- a/indra/newview/skins/default/xui/pt/floater_preview_gesture.xml +++ b/indra/newview/skins/default/xui/pt/floater_preview_gesture.xml @@ -1,16 +1,16 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="gesture_preview"> <floater.string name="step_anim"> - Selecionar animação: + Executar animação: </floater.string> <floater.string name="step_sound"> - Selecionar animação: + Executar som: </floater.string> <floater.string name="step_chat"> - Diga por bate-papo: + Executar bate-papo: </floater.string> <floater.string name="step_wait"> - Espere: + Pausa </floater.string> <floater.string name="stop_txt"> Parar @@ -31,11 +31,11 @@ Gatilho: </text> <text name="replace_text" tool_tip="Substituir a(s) palavra(s) de gatilho por estas palavras. Por exemplo, o gatilho 'oi' substituÃdo por 'olá', mudará a conversa de 'Eu digo oi' para 'Eu digo olá' e também executando o gesto!"> - Substituir por: + Trocar por: </text> - <line_editor name="replace_editor" tool_tip="Substituir a(s) palavra(s) gatilho por estas palavras.Por exemplo, o gatilho 'oi' substituÃdo por 'olá', mudará a conversa de 'Eu digo oi' para 'Eu digo olá' e também executando o gesto!"/> + <line_editor name="replace_editor" tool_tip="Substituir a(s) palavra(s) gatilho por estas palavras. Por exemplo, o gatilho 'oi' substituÃdo por 'olá', mudará a conversa de 'Eu digo oi' para 'Eu digo olá' e também executando o gesto!"/> <text name="key_label"> - Tecla de Atalho: + Atalho: </text> <combo_box label="Nenhum" left="116" name="modifier_combo" width="76"/> <combo_box label="Nenhum" left_delta="80" name="key_combo" width="76"/> @@ -55,16 +55,16 @@ (opções) </text> <radio_group name="animation_trigger_type"> - <radio_item label="OK" name="start"/> - <radio_item label="Pare" name="stop"/> + <radio_item label="Iniciar" name="start"/> + <radio_item label="Parar" name="stop"/> </radio_group> <check_box bottom_delta="34" label="até que as animações estejam concluÃdas" name="wait_anim_check"/> <check_box bottom_delta="-30" label="segundos:" name="wait_time_check"/> <line_editor left_delta="130" name="wait_time_editor"/> <text name="help_label"> - Se não incluir etapas de espera, todas as etapas ocorrem ao mesmo tempo. + Se não incluir uma pausa, todas as etapas ocorrem ao mesmo tempo. </text> - <check_box label="Ativar" name="active_check" tool_tip="Gestos ativos podem ser gatilhados escrevendo suas frases de gatilho no chat ou através de suas teclas de atalho. Gestos normalmente ficam inativos quando existe um conflito nas teclas de atalho."/> + <check_box label="Ativar" name="active_check" tool_tip="Gestos podem ser ativados escrevendo suas frases de gatilho no chat ou teclando o atalho. Gestos normalmente ficam inativos quando existe um conflito nas teclas de atalho."/> <button label="Prévia" name="preview_btn"/> <button label="Salvar" name="save_btn"/> </floater> diff --git a/indra/newview/skins/default/xui/pt/floater_tools.xml b/indra/newview/skins/default/xui/pt/floater_tools.xml index dbc8b3ffbe78dd4b455eb880aa38468df735022c..e70bd0575e4112502f90bf0585993901c3612af0 100644 --- a/indra/newview/skins/default/xui/pt/floater_tools.xml +++ b/indra/newview/skins/default/xui/pt/floater_tools.xml @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="toolbox floater" short_title="BUILD TOOLS" title="" width="288"> <floater.string name="status_rotate"> - Arrastar as bandas coloridas para girar o objeto + Arrastar as faixas coloridas para girar o objeto </floater.string> <floater.string name="status_scale"> Clicar e arrastar para esticar o lado selecionado @@ -13,13 +13,13 @@ Clicar e reter para modificar a terra </floater.string> <floater.string name="status_camera"> - Clique e arraste para mexer a câmera + Clicar e arrastar para mover a câmera </floater.string> <floater.string name="status_grab"> - Arraste para mexer, Ctrl para levantar, Ctrl+Shift para girar + Arrastar para mexer, Ctrl para levantar, Ctrl+Shift para girar </floater.string> <floater.string name="status_place"> - Clique no mundo para construir + Clicar em um lugar para construir </floater.string> <floater.string name="status_selectland"> Clicar e arrastar para selecionar a terra @@ -45,7 +45,7 @@ <button label="" label_selected="" name="button create" tool_tip="Criar"/> <button label="" label_selected="" name="button land" tool_tip="Terra"/> <text name="text status" width="280"> - Arraste para mover, shift+Arrastar para Copiar + Arrastar para mover, shift+Arrastar para copiar </text> <radio_group name="focus_radio_group"> <radio_item label="Zoom" name="radio zoom"/> @@ -58,10 +58,10 @@ <radio_item label="Spin (Ctrl+Shift)" name="radio spin"/> </radio_group> <radio_group name="edit_radio_group"> - <radio_item label="Movimentar" name="radio position"/> + <radio_item label="Mover" name="radio position"/> <radio_item label="Rotacionar (Ctrl)" name="radio rotate"/> - <radio_item label="Stretch (Ctrl+Shift)" name="radio stretch"/> - <radio_item label="Face selecionada" name="radio select face"/> + <radio_item label="Esticar (Ctrl+Shift)" name="radio stretch"/> + <radio_item label="Selecionar face" name="radio select face"/> </radio_group> <check_box label="Editar partes linkadas" name="checkbox edit linked parts"/> <text name="RenderingCost" tool_tip="Mostra o cálculo do custo de renderização do objeto"> @@ -73,10 +73,10 @@ </text> <check_box initial_value="true" label="Esticar texturas" name="checkbox stretch textures"/> <check_box initial_value="true" label="Mostrar na grade" name="checkbox snap to grid"/> - <combo_box name="combobox grid mode" tool_tip="Selecione o tipo de régua da grade onde o objeto será colocado"> - <combo_box.item label="Grid SL" name="World"/> - <combo_box.item label="Grid local" name="Local"/> - <combo_box.item label="Grid de referência" name="Reference"/> + <combo_box name="combobox grid mode" tool_tip="Selecione a régua da grade onde o objeto será colocado"> + <combo_box.item label="Grade SL" name="World"/> + <combo_box.item label="Local" name="Local"/> + <combo_box.item label="Referência" name="Reference"/> </combo_box> <button label="Opções..." label_selected="Opções..." name="Options..." tool_tip="Mais opções de grade"/> <button label="" label_selected="" name="ToolCube" tool_tip="Cubo"/> @@ -99,12 +99,12 @@ <check_box initial_value="true" label="Copiar parte central" name="checkbox copy centers"/> <check_box label="Girar cópia" name="checkbox copy rotates"/> <radio_group name="land_radio_group"> - <radio_item label="Selecionar Terra" name="radio select land"/> + <radio_item label="Selecionar terra" name="radio select land"/> <radio_item label="Aplainar" name="radio flatten"/> - <radio_item label="Subir" name="radio raise"/> + <radio_item label="Elevar" name="radio raise"/> <radio_item label="Abaixar" name="radio lower"/> - <radio_item label="Suavizar" name="radio smooth"/> - <radio_item label="Endurecer" name="radio noise"/> + <radio_item label="Alisar" name="radio smooth"/> + <radio_item label="Irregularizar" name="radio noise"/> <radio_item label="Reverter" name="radio revert"/> </radio_group> <text name="Bulldozer:"> @@ -144,7 +144,7 @@ Você não pode modificar estes objetos </panel.string> <panel.string name="text modify warning"> - Selecione o objeto intereiro para configurar as autorizações + Selecione o objeto inteiro para configurar as autorizações </panel.string> <panel.string name="Cost Default"> Preço: L$ @@ -156,10 +156,10 @@ Preço unitário: L$ </panel.string> <panel.string name="Cost Mixed"> - Preço Misturado + Preço misto </panel.string> <panel.string name="Sale Mixed"> - Venda Misturada + Venda mista </panel.string> <text name="Name:"> Nome: @@ -193,7 +193,7 @@ <combo_box.item label="Tocar (padrão)" name="Touch/grab(default)"/> <combo_box.item label="Sentar no objeto" name="Sitonobject"/> <combo_box.item label="Comprar objeto" name="Buyobject"/> - <combo_box.item label="Pagar Objeto" name="Payobject"/> + <combo_box.item label="Pagar objeto" name="Payobject"/> <combo_box.item label="Abrir" name="Open"/> <combo_box.item label="Zoom" name="Zoom"/> </combo_box> @@ -358,7 +358,7 @@ </panel> <panel label="Recursos" name="Features"> <text name="select_single" width="272"> - Selecione apenas uma primitiva para editar suas caracterÃsticas. + Selecione apenas um prim para editar suas caracterÃsticas. </text> <text name="edit_object"> Editar caracterÃsticas do Objeto: @@ -480,7 +480,7 @@ <button label="Sobre terrenos" label_selected="Sobre terrenos" name="button about land"/> <check_box label="Mostrar donos" name="checkbox show owners" tool_tip="Colorir lotes de acordo com seus donos: Green = Sua terra Aqua = Terra do seu grupo Red = PossuÃda por outros Yellow = À venda Purple = A leilão Grey = Pública"/> <text name="label_parcel_modify"> - Modificar Lote + Modificar lote </text> <button label="Subdividir" label_selected="Subdividir" name="button subdivide land"/> <button label="Juntar" label_selected="Juntar" name="button join land"/> diff --git a/indra/newview/skins/default/xui/pt/floater_voice_effect.xml b/indra/newview/skins/default/xui/pt/floater_voice_effect.xml index b9f96778339768bd0660ae16a5ca28e3e725fc97..cb9b3c8c0d6af6febd7655e8e5b2e3eadb99c487 100644 --- a/indra/newview/skins/default/xui/pt/floater_voice_effect.xml +++ b/indra/newview/skins/default/xui/pt/floater_voice_effect.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater label="Lugares" name="voice_effects" title="DISTORCENDO VOZ"> +<floater label="Lugares" name="voice_effects" title="EFEITOS DE VOZ"> <string name="no_voice_effect"> (Não distorcer voz) </string> diff --git a/indra/newview/skins/default/xui/pt/floater_world_map.xml b/indra/newview/skins/default/xui/pt/floater_world_map.xml index 3952b80269b792b13b41e47d8d988ff12a15f7b9..77d0c787e753b8fa4e6af1a727585c4eec94d58e 100644 --- a/indra/newview/skins/default/xui/pt/floater_world_map.xml +++ b/indra/newview/skins/default/xui/pt/floater_world_map.xml @@ -20,13 +20,13 @@ </text> <check_box label="Terra à Venda" name="land_for_sale_chk"/> <text name="land_sale_label"> - Venda de terreno + Terreno à venda </text> <text name="by_owner_label"> - o proprietário + pelo dono </text> <text name="auction_label"> - leilão de terrenos + leilão </text> <button label="Voltar ao meu inÃcio" label_selected="Voltar ao meu inÃcio" name="Go Home" tool_tip="Teletransportar para meu inÃcio"/> <text name="Home_label"> @@ -37,7 +37,7 @@ </text> <check_box label="PG" name="event_chk"/> <text name="pg_label"> - Público geral + Geral </text> <check_box label="Mature" name="events_mature_chk"/> <text name="events_mature_label"> diff --git a/indra/newview/skins/default/xui/pt/menu_inventory.xml b/indra/newview/skins/default/xui/pt/menu_inventory.xml index d1ab3e976e0ec6648f0c5f4fa507c62624326618..1ee197ce30913641c1ac7f14e1aa74b867d5dc8b 100644 --- a/indra/newview/skins/default/xui/pt/menu_inventory.xml +++ b/indra/newview/skins/default/xui/pt/menu_inventory.xml @@ -16,7 +16,7 @@ <menu label="Novas roupas" name="New Clothes"> <menu_item_call label="Nova camisa" name="New Shirt"/> <menu_item_call label="Nova calça" name="New Pants"/> - <menu_item_call label="Novos calçados" name="New Shoes"/> + <menu_item_call label="Novos sapatos" name="New Shoes"/> <menu_item_call label="Novas meias" name="New Socks"/> <menu_item_call label="Nova jaqueta" name="New Jacket"/> <menu_item_call label="Nova saia" name="New Skirt"/> @@ -47,8 +47,8 @@ <menu_item_call label="Teletransporte" name="Landmark Open"/> <menu_item_call label="Abrir" name="Animation Open"/> <menu_item_call label="Abrir" name="Sound Open"/> - <menu_item_call label="Substituir equipamento" name="Replace Outfit"/> - <menu_item_call label="Adicionar ao equipamento" name="Add To Outfit"/> + <menu_item_call label="Substituir look" name="Replace Outfit"/> + <menu_item_call label="Adicionar a look" name="Add To Outfit"/> <menu_item_call label="Tirar do look atual" name="Remove From Outfit"/> <menu_item_call label="Encontrar original" name="Find Original"/> <menu_item_call label="Remover item" name="Purge Item"/> @@ -75,7 +75,7 @@ <menu_item_call label="Ativar" name="Activate"/> <menu_item_call label="Desativar" name="Deactivate"/> <menu_item_call label="Salvar como" name="Save As"/> - <menu_item_call label="Retirar de si mesmo" name="Detach From Yourself"/> + <menu_item_call label="Tirar de si mesmo" name="Detach From Yourself"/> <menu_item_call label="Vestir" name="Wearable And Object Wear"/> <menu label="Anexar a" name="Attach To"/> <menu label="Anexar ao HUD" name="Attach To HUD"/> diff --git a/indra/newview/skins/default/xui/pt/panel_landmark_info.xml b/indra/newview/skins/default/xui/pt/panel_landmark_info.xml index 6196c06d09dd0510d86fd571d28cb8a0cba1effa..39c19a22d4250309df0fe73f955754c15e44fe8b 100644 --- a/indra/newview/skins/default/xui/pt/panel_landmark_info.xml +++ b/indra/newview/skins/default/xui/pt/panel_landmark_info.xml @@ -1,25 +1,25 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel name="landmark_info"> - <string name="title_create_landmark" value="Criar Landmark"/> - <string name="title_edit_landmark" value="Editar Landmark"/> - <string name="title_landmark" value="Landmark"/> - <string name="not_available" value="(N\A)"/> + <string name="title_create_landmark" value="Criar marco"/> + <string name="title_edit_landmark" value="Editar marco"/> + <string name="title_landmark" value="Marco"/> + <string name="not_available" value="(N/A)"/> <string name="unknown" value="(desconhecido)"/> <string name="public" value="(público)"/> <string name="server_update_text"> Informação do lugar não disponÃvel sem atualização do servidor. </string> <string name="server_error_text"> - Informações sobre esta localização não está disponÃvel neste momento, por favor, tente novamente mais tarde. + No momento não há informações sobre este lugar; por favor tente novamente mais tarde. </string> <string name="server_forbidden_text"> - Informações sobre esta localização está indisponÃvel devido a restrições de acesso. Por favor, verifique as permissões com o proprietário da parcela. + Os dados deste lugar não estão indisponÃveis devido a restrições de acesso. Verifique as permissões com o proprietário do terreno ou parcela. </string> <string name="acquired_date"> [wkday,datetime,local] [mth,datetime,local] [day,datetime,local] [hour,datetime,local]:[min,datetime,local]:[second,datetime,local] [year,datetime,local] </string> <button name="back_btn" tool_tip="Atrás"/> - <text name="title" value="Perfil do Lugar"/> + <text name="title" value="Perfil do lugar"/> <scroll_container name="place_scroll"> <panel name="scrolling_panel"> <text name="maturity_value" value="desconhecido"/> @@ -31,7 +31,7 @@ <panel name="landmark_edit_panel"> <text name="title_label" value="TÃtulo:"/> <text name="notes_label" value="Minhas notas:"/> - <text name="folder_label" value="Localização da Landmark:"/> + <text name="folder_label" value="Localização do marco:"/> </panel> </panel> </scroll_container> diff --git a/indra/newview/skins/default/xui/pt/panel_place_profile.xml b/indra/newview/skins/default/xui/pt/panel_place_profile.xml index 03f997f31bd0fb580a90db3c60c7ba64d55888eb..554c4d897d171b6ab7c3c86203edd5ad90eca285 100644 --- a/indra/newview/skins/default/xui/pt/panel_place_profile.xml +++ b/indra/newview/skins/default/xui/pt/panel_place_profile.xml @@ -36,7 +36,7 @@ Dados sobre o local não disponÃveis no momento. Favor tentar mais tarde. </string> <string name="server_forbidden_text"> - Dados sobre o local controlados por lista de acesso. Verifique se você está autorizado a acessá-los com o dono do lote. + Dados sobre o local controlados por lista de acesso. Verifique se você está autorizado a acessá-los com o dono do lote. </string> <string name="acquired_date"> [wkday,datetime,local] [mth,datetime,local] [day,datetime,local] [hour,datetime,local]:[min,datetime,local]:[second,datetime,local] [year,datetime,local] @@ -53,18 +53,18 @@ <text name="rating_label" value="Classificação:"/> <text name="rating_value" value="desconhecido"/> <text name="voice_label" value="Voz:"/> - <text name="voice_value" value="Ligar"/> + <text name="voice_value" value="Ligado"/> <text name="fly_label" value="Voar:"/> - <text name="fly_value" value="Ligar"/> + <text name="fly_value" value="Ligado"/> <text name="push_label" value="Empurrar:"/> - <text name="push_value" value="Desligar"/> + <text name="push_value" value="Desligado"/> <text name="build_label" value="Construir:"/> - <text name="build_value" value="Ligar"/> + <text name="build_value" value="Ligado"/> <text name="scripts_label" value="Scripts:"/> - <text name="scripts_value" value="Ligar"/> + <text name="scripts_value" value="Ligado"/> <text name="damage_label" value="Dano:"/> - <text name="damage_value" value="Desligar"/> - <button label="Sobre terrenos" name="about_land_btn"/> + <text name="damage_value" value="Desligado"/> + <button label="Sobre o terreno" name="about_land_btn"/> </panel> </accordion_tab> <accordion_tab name="region_information_tab" title="Região"> diff --git a/indra/newview/skins/default/xui/pt/panel_preferences_privacy.xml b/indra/newview/skins/default/xui/pt/panel_preferences_privacy.xml index 0cf2b7a4afe924ceb78093bf9bcc3500cd5a9dee..ba4ebdb9bffe70c1d3a3af1882150713e65b27f3 100644 --- a/indra/newview/skins/default/xui/pt/panel_preferences_privacy.xml +++ b/indra/newview/skins/default/xui/pt/panel_preferences_privacy.xml @@ -21,6 +21,6 @@ Localização dos logs: </text> <line_editor left="278" name="log_path_string" right="-20"/> - <button label="Navegar" label_selected="Navegar" name="log_path_button" width="120"/> - <button label="Lista dos bloqueados" name="block_list"/> + <button label="Procurar" label_selected="Procurar" name="log_path_button" width="120"/> + <button label="Lista de bloqueados" name="block_list"/> </panel> diff --git a/indra/newview/skins/default/xui/pt/role_actions.xml b/indra/newview/skins/default/xui/pt/role_actions.xml index 2e6e4dd133abea4c47f0d681fedccb000c53e09c..88fd4b3ca81ff95199c68490e407d2bbdf2b501a 100644 --- a/indra/newview/skins/default/xui/pt/role_actions.xml +++ b/indra/newview/skins/default/xui/pt/role_actions.xml @@ -2,7 +2,7 @@ <role_actions> <action_set description="Esta habilidades incluem poderes de adicionar ou remover membros do grupo e permitir que novos membros se juntem sem um convite." name="Membership"> <action description="Convidar pessoas para este grupo" longdescription="Em Membros > Cargos, use o botão 'Convidar' para convidar pessoas para entrar no grupo." name="member invite"/> - <action description="Expulsar membros deste grupo" longdescription="Em Membros > Cargos, use o botão 'Ejetar' para tirar pessoas do grupo. Proprietários podem expulsar qualquer pessoa, menos outro proprietário. Se você não é Proprietário, um membro só pode ser expulso se tiver cargo 'Todos' e nenhum outro cargo. Para destituir um membro de seu cargo, você precisa ter a função 'Destituir membro com cargo'." name="member eject"/> + <action description="Expulsar membros deste grupo" longdescription="Em Membros > Cargos, use o botão 'Ejetar' para tirar pessoas do grupo. Proprietários podem expulsar qualquer pessoa, menos outro proprietário. Se você não é Proprietário, um membro só pode ser expulso se tiver cargo 'Todos' e nenhum outro cargo. Para destituir um membro de seu cargo, você precisa ter a função 'Destituir membro com cargo'." name="member eject"/> <action description="Alterna entre 'Inscrições abertas' e 'Taxa de associação'." longdescription="Ative 'Inscrições abertas' para que novos membros entrem no grupo sem convite, mude a 'Taxa de associação' na seção Geral." name="member options"/> </action_set> <action_set description="Estas habilidades incluem poderes de adicionar, remover e mudar funções do grupo; adicionar e remover membros em funções e designar habilidades a funções." name="Roles"> @@ -18,7 +18,7 @@ <action description="Mudar apresentação, insÃgnia, 'Publicar na web', e quais membros estão publicamente visÃveis em Informações do Grupo." longdescription="Modificar o estatuto, sÃmbolo e exibição nos resultados de busca. Use a seção Geral." name="group change identity"/> </action_set> <action_set description="Estas funções incluem poderes de transferir, vender e modificar os terrenos do grupo. Para acessar a janela 'Sobre terrenos', clique no chão com o botão direito e selecione 'Sobre terrenos'. Ou clique no Ãcone 'i' da barra de navegação." name="Parcel Management"> - <action description="Transferir e comprar terreno para o grupo" longdescription="Transfere e compre terreno para o grupo. É feito em Sobre o terreno > aba Geral." name="land deed"/> + <action description="Transferir e comprar terreno para o grupo" longdescription="Transfere e compre terreno para o grupo. É feito em Sobre o terreno > aba Geral." name="land deed"/> <action description="Abandonar terreno para Governador Linden" longdescription="Abandone terreno para Governador Linden. *AVISO* Qualquer membro em uma função com esta habilidade pode abandonar o terreno pertencente ao grupo em Sobre o terreno > aba Geral, revertendo à posse Linden sem uma venda! Certifique-se de saber o que está fazendo antes de designar esta habilidade." name="land release"/> <action description="Definir terreno para informação de venda" longdescription="Defina informações de venda para terreno. *AVISO* Qualquer membro em uma função com esta habilidade pode vender terrenos pertencentes ao grupo em Sobre o terreno > aba Geral como quiser! Certifique-se de sabe o que está fazendo antes de designar esta habilidade." name="land set sale info"/> <action description="Subdividir e unir parcelas" longdescription="Juntar ou dividir lotes. Clique no chão com o botão direito, selecione 'Editar terreno' e arraste o mouse sobre o terreno para ver as opções. Para dividir um terreno, selecione a área a ser dividida e clique em 'Dividir'. Para juntar terrenos, selecione dois ou mais lotes adjacentes e clique em 'Juntar'." name="land divide join"/>