From aa96a6a4e8ebd86b8dc8da530b79f6cbb0365b04 Mon Sep 17 00:00:00 2001 From: Xiaohong Bao Date: Thu, 10 Jun 2010 12:51:25 -0600 Subject: EXT-7760: FIXED: only 10 avatars render non-impostored --- indra/newview/app_settings/settings.xml | 2 +- indra/newview/featuretable.txt | 2 +- indra/newview/featuretable_linux.txt | 2 +- indra/newview/featuretable_mac.txt | 2 +- indra/newview/llappviewer.cpp | 2 +- indra/newview/llviewerdisplay.cpp | 2 +- indra/newview/llvoavatar.cpp | 16 ++++++++-------- indra/newview/llvoavatar.h | 4 ++-- .../default/xui/en/panel_preferences_graphics1.xml | 22 +++++----------------- 9 files changed, 21 insertions(+), 33 deletions(-) diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml index b0211dd85b..d94814d781 100644 --- a/indra/newview/app_settings/settings.xml +++ b/indra/newview/app_settings/settings.xml @@ -6202,7 +6202,7 @@ Type S32 Value - 35 + 12 RenderAvatarVP diff --git a/indra/newview/featuretable.txt b/indra/newview/featuretable.txt index de4d787d65..e8591ca086 100644 --- a/indra/newview/featuretable.txt +++ b/indra/newview/featuretable.txt @@ -26,7 +26,7 @@ list all RenderAnisotropic 1 0 RenderAvatarCloth 1 1 RenderAvatarLODFactor 1 1.0 -RenderAvatarMaxVisible 1 35 +RenderAvatarMaxVisible 1 12 RenderAvatarVP 1 1 RenderCubeMap 1 1 RenderDelayVBUpdate 1 0 diff --git a/indra/newview/featuretable_linux.txt b/indra/newview/featuretable_linux.txt index adda7cec4d..779490c9f7 100644 --- a/indra/newview/featuretable_linux.txt +++ b/indra/newview/featuretable_linux.txt @@ -26,7 +26,7 @@ list all RenderAnisotropic 1 0 RenderAvatarCloth 1 1 RenderAvatarLODFactor 1 1.0 -RenderAvatarMaxVisible 1 35 +RenderAvatarMaxVisible 1 12 RenderAvatarVP 1 1 RenderCubeMap 1 1 RenderDelayVBUpdate 1 0 diff --git a/indra/newview/featuretable_mac.txt b/indra/newview/featuretable_mac.txt index 82886d7e2c..47033efc47 100644 --- a/indra/newview/featuretable_mac.txt +++ b/indra/newview/featuretable_mac.txt @@ -26,7 +26,7 @@ list all RenderAnisotropic 1 0 RenderAvatarCloth 0 0 RenderAvatarLODFactor 1 1.0 -RenderAvatarMaxVisible 1 35 +RenderAvatarMaxVisible 1 12 RenderAvatarVP 1 0 RenderCubeMap 1 1 RenderDelayVBUpdate 1 0 diff --git a/indra/newview/llappviewer.cpp b/indra/newview/llappviewer.cpp index 95084666bb..7f0186575d 100644 --- a/indra/newview/llappviewer.cpp +++ b/indra/newview/llappviewer.cpp @@ -416,7 +416,7 @@ static void settings_to_globals() LLVolumeImplFlexible::sUpdateFactor = gSavedSettings.getF32("RenderFlexTimeFactor"); LLVOTree::sTreeFactor = gSavedSettings.getF32("RenderTreeLODFactor"); LLVOAvatar::sLODFactor = gSavedSettings.getF32("RenderAvatarLODFactor"); - LLVOAvatar::sMaxVisible = gSavedSettings.getS32("RenderAvatarMaxVisible"); + LLVOAvatar::sMaxVisible = (U32)gSavedSettings.getS32("RenderAvatarMaxVisible"); LLVOAvatar::sVisibleInFirstPerson = gSavedSettings.getBOOL("FirstPersonAvatarVisible"); // clamp auto-open time to some minimum usable value LLFolderView::sAutoOpenTime = llmax(0.25f, gSavedSettings.getF32("FolderAutoOpenDelay")); diff --git a/indra/newview/llviewerdisplay.cpp b/indra/newview/llviewerdisplay.cpp index 3482ac508e..f7cde9a6cb 100644 --- a/indra/newview/llviewerdisplay.cpp +++ b/indra/newview/llviewerdisplay.cpp @@ -597,7 +597,7 @@ void display(BOOL rebuild, F32 zoom_factor, int subfield, BOOL for_snapshot) LLPipeline::sFastAlpha = gSavedSettings.getBOOL("RenderFastAlpha"); LLPipeline::sUseFarClip = gSavedSettings.getBOOL("RenderUseFarClip"); - LLVOAvatar::sMaxVisible = gSavedSettings.getS32("RenderAvatarMaxVisible"); + LLVOAvatar::sMaxVisible = (U32)gSavedSettings.getS32("RenderAvatarMaxVisible"); LLPipeline::sDelayVBUpdate = gSavedSettings.getBOOL("RenderDelayVBUpdate"); S32 occlusion = LLPipeline::sUseOcclusion; diff --git a/indra/newview/llvoavatar.cpp b/indra/newview/llvoavatar.cpp index 3e93dc1a90..411809d4ba 100644 --- a/indra/newview/llvoavatar.cpp +++ b/indra/newview/llvoavatar.cpp @@ -595,7 +595,7 @@ LLVOAvatarSkeletonInfo* LLVOAvatar::sAvatarSkeletonInfo = NULL; LLVOAvatar::LLVOAvatarXmlInfo* LLVOAvatar::sAvatarXmlInfo = NULL; LLVOAvatarDictionary *LLVOAvatar::sAvatarDictionary = NULL; S32 LLVOAvatar::sFreezeCounter = 0; -S32 LLVOAvatar::sMaxVisible = 50; +U32 LLVOAvatar::sMaxVisible = 12; F32 LLVOAvatar::sRenderDistance = 256.f; S32 LLVOAvatar::sNumVisibleAvatars = 0; S32 LLVOAvatar::sNumLODChangesThisFrame = 0; @@ -3173,23 +3173,23 @@ BOOL LLVOAvatar::updateCharacter(LLAgent &agent) { // muted avatars update at 16 hz mUpdatePeriod = 16; } - else if (visible && mVisibilityRank <= LLVOAvatar::sMaxVisible * 0.25f) + else if (visible && mVisibilityRank <= LLVOAvatar::sMaxVisible) { //first 25% of max visible avatars are not impostored mUpdatePeriod = 1; } - else if (visible && mVisibilityRank > LLVOAvatar::sMaxVisible * 0.75f) - { //back 25% of max visible avatars are slow updating impostors - mUpdatePeriod = 8; - } - else if (visible && mVisibilityRank > (U32) LLVOAvatar::sMaxVisible) + else if (visible && mVisibilityRank > LLVOAvatar::sMaxVisible * 4) { //background avatars are REALLY slow updating impostors mUpdatePeriod = 16; } + else if (visible && mVisibilityRank > LLVOAvatar::sMaxVisible * 3) + { //back 25% of max visible avatars are slow updating impostors + mUpdatePeriod = 8; + } else if (visible && 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 * 0.25f) + else if (visible && mVisibilityRank > LLVOAvatar::sMaxVisible) { // force nearby impostors in ultra crowded areas mUpdatePeriod = 2; } diff --git a/indra/newview/llvoavatar.h b/indra/newview/llvoavatar.h index b30cce09f6..4259bb8e73 100644 --- a/indra/newview/llvoavatar.h +++ b/indra/newview/llvoavatar.h @@ -223,8 +223,8 @@ public: public: static S32 sRenderName; static BOOL sRenderGroupTitles; - static S32 sMaxVisible; - static F32 sRenderDistance; //distance at which avatars will render (affected by control "RenderAvatarMaxVisible") + static U32 sMaxVisible; //(affected by control "RenderAvatarMaxVisible") + static F32 sRenderDistance; //distance at which avatars will render. static BOOL sShowAnimationDebug; // show animation debug info static BOOL sUseImpostors; //use impostors for far away avatars static BOOL sShowFootPlane; // show foot collision plane reported by server diff --git a/indra/newview/skins/default/xui/en/panel_preferences_graphics1.xml b/indra/newview/skins/default/xui/en/panel_preferences_graphics1.xml index 266fd6cb5e..ccd99c6fb5 100644 --- a/indra/newview/skins/default/xui/en/panel_preferences_graphics1.xml +++ b/indra/newview/skins/default/xui/en/panel_preferences_graphics1.xml @@ -372,30 +372,18 @@ decimal_digits="0" follows="left|top" height="16" - increment="2" - initial_value="35" - label="Max. avatar draw distance:" + increment="1" + initial_value="12" + label="Max. # of non-impostor avatars:" label_width="185" layout="topleft" left_delta="0" max_val="65" min_val="1" - name="MaxAvatarDrawDistance" + name="MaxNumberAvatarDrawn" top_pad="4" width="290" /> - - m - - Date: Wed, 16 Jun 2010 11:42:05 -0600 Subject: EXT-6567: POSSIBLE FIXED: crash at LLImageBase::allocateData [secondlife-bin llimage.cpp:170]; also removed the debug code for this bug. --- indra/llimage/llimage.cpp | 8 ++------ indra/newview/lltexturefetch.cpp | 11 +++++++++-- 2 files changed, 11 insertions(+), 8 deletions(-) diff --git a/indra/llimage/llimage.cpp b/indra/llimage/llimage.cpp index aa7c8c789a..0fc5ca1ad6 100644 --- a/indra/llimage/llimage.cpp +++ b/indra/llimage/llimage.cpp @@ -168,8 +168,8 @@ U8* LLImageBase::allocateData(S32 size) } else { - llerrs << "LLImageBase::allocateData: bad size: " << size << llendl; - } + llerrs << "LLImageBase::allocateData: bad size: " << size << llendl; + } } if (!mData || size != mDataSize) { @@ -267,10 +267,6 @@ LLImageRaw::LLImageRaw(U16 width, U16 height, S8 components) { mMemType = LLMemType::MTYPE_IMAGERAW; //llassert( S32(width) * S32(height) * S32(components) <= MAX_IMAGE_DATA_SIZE ); - if(S32(width) * S32(height) * S32(components) > MAX_IMAGE_DATA_SIZE) - { - llwarns << "over size: width: " << (S32)width << " height: " << (S32)height << " components: " << (S32)components << llendl ; - } allocateDataSize(width, height, components); ++sRawImageCount; } diff --git a/indra/newview/lltexturefetch.cpp b/indra/newview/lltexturefetch.cpp index 52d227f827..ffd0330ace 100644 --- a/indra/newview/lltexturefetch.cpp +++ b/indra/newview/lltexturefetch.cpp @@ -582,14 +582,21 @@ bool LLTextureFetchWorker::doWork(S32 param) { LLMutexLock lock(&mWorkMutex); - if ((mFetcher->isQuitting() || mImagePriority < 1.0f || getFlags(LLWorkerClass::WCF_DELETE_REQUESTED))) + if ((mFetcher->isQuitting() || getFlags(LLWorkerClass::WCF_DELETE_REQUESTED))) { if (mState < DECODE_IMAGE) { return true; // abort } } - + if(mImagePriority < 1.0f) + { + if (mState == INIT || mState == LOAD_FROM_NETWORK || mState == LOAD_FROM_SIMULATOR) + { + return true; // abort + } + } + if (mFetcher->mDebugPause) { return false; // debug: don't do any work -- cgit v1.2.3 From 5c7911f1e2cb060e5e2353cec01a7ecc09f05126 Mon Sep 17 00:00:00 2001 From: Xiaohong Bao Date: Wed, 16 Jun 2010 14:03:56 -0600 Subject: EXT-7032: POSSIBLE FIXED: [crashhunters] crash in libcurl background thread on windows --- indra/newview/lltexturefetch.cpp | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/indra/newview/lltexturefetch.cpp b/indra/newview/lltexturefetch.cpp index ffd0330ace..ceed90e210 100644 --- a/indra/newview/lltexturefetch.cpp +++ b/indra/newview/lltexturefetch.cpp @@ -596,6 +596,11 @@ bool LLTextureFetchWorker::doWork(S32 param) return true; // abort } } + if(mState > CACHE_POST && !mCanUseNET && !mCanUseHTTP) + { + //nowhere to get data, abort. + return true ; + } if (mFetcher->mDebugPause) { @@ -784,7 +789,7 @@ bool LLTextureFetchWorker::doWork(S32 param) } // don't return, fall through to next state } - else if (mSentRequest == UNSENT) + else if (mSentRequest == UNSENT && mCanUseNET) { // Add this to the network queue and sit here. // LLTextureFetch::update() will send off a request which will change our state @@ -837,6 +842,7 @@ bool LLTextureFetchWorker::doWork(S32 param) if (mState == SEND_HTTP_REQ) { + if(mCanUseHTTP) { const S32 HTTP_QUEUE_MAX_SIZE = 8; // *TODO: Integrate this with llviewerthrottle @@ -902,6 +908,10 @@ bool LLTextureFetchWorker::doWork(S32 param) } // fall through } + else //can not use http fetch. + { + return true ; //abort + } } if (mState == WAIT_HTTP_REQ) -- cgit v1.2.3 From b9a468aff6b4b9bdaf4ac0ab2a309902c6c203ed Mon Sep 17 00:00:00 2001 From: Vladimir Pchelko Date: Wed, 16 Jun 2010 13:53:39 +0300 Subject: EXT-7751 FIXED Sets title text for ToolTip and show ToolTip when title text > text boxsize Reviewed by Vadim Savchuk and Mike Antipov at https://codereview.productengine.com/secondlife/r/576/ --HG-- branch : product-engine --- indra/newview/llinventoryitemslist.cpp | 14 +++++++++++++- indra/newview/llinventoryitemslist.h | 4 ++++ 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/indra/newview/llinventoryitemslist.cpp b/indra/newview/llinventoryitemslist.cpp index 23ea786484..c4efd70385 100644 --- a/indra/newview/llinventoryitemslist.cpp +++ b/indra/newview/llinventoryitemslist.cpp @@ -288,11 +288,23 @@ void LLPanelInventoryListItemBase::setIconImage(const LLUIImagePtr& image) void LLPanelInventoryListItemBase::setTitle(const std::string& title, const std::string& highlit_text) { + setToolTip(title); + LLTextUtil::textboxSetHighlightedVal( mTitleCtrl, LLStyle::Params(), title, - highlit_text); + highlit_text); +} + +BOOL LLPanelInventoryListItemBase::handleToolTip( S32 x, S32 y, MASK mask) +{ + LLTextBox* item_name = getChild("item_name"); + if (item_name->getRect().getWidth() < item_name->getTextPixelWidth()) + { + return LLPanel::handleToolTip(x,y,mask); + } + return FALSE; } void LLPanelInventoryListItemBase::reshapeLeftWidgets() diff --git a/indra/newview/llinventoryitemslist.h b/indra/newview/llinventoryitemslist.h index d6132717e8..c24e8b63e0 100644 --- a/indra/newview/llinventoryitemslist.h +++ b/indra/newview/llinventoryitemslist.h @@ -179,6 +179,10 @@ protected: /** Set item title - inventory item name usually */ virtual void setTitle(const std::string& title, const std::string& highlit_text); + /** + * Show tool tip if item name text size > panel size + */ + virtual BOOL handleToolTip( S32 x, S32 y, MASK mask); LLViewerInventoryItem* mItem; -- cgit v1.2.3 From 83c1ca9a0539e7c458927c88f7795963f56b4bf7 Mon Sep 17 00:00:00 2001 From: Andrew Polunin Date: Wed, 16 Jun 2010 16:10:16 +0300 Subject: EXT-7693 ADDITIONAL FIX Added assertion in the type_map to make sure xml and code are in sync --HG-- branch : product-engine --- indra/newview/llcofwearables.cpp | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/indra/newview/llcofwearables.cpp b/indra/newview/llcofwearables.cpp index 880d79222b..46d2e0a5db 100644 --- a/indra/newview/llcofwearables.cpp +++ b/indra/newview/llcofwearables.cpp @@ -576,7 +576,9 @@ void LLCOFWearables::clear() LLAssetType::EType LLCOFWearables::getExpandedAccordionAssetType() { - static std::map type_map; + typedef std::map type_map_t; + + static type_map_t type_map; static LLAccordionCtrl* accordion_ctrl = getChild("cof_wearables_accordion"); if (type_map.empty()) @@ -587,14 +589,16 @@ LLAssetType::EType LLCOFWearables::getExpandedAccordionAssetType() } const LLAccordionCtrlTab* tab = accordion_ctrl->getExpandedTab(); + LLAssetType::EType result = LLAssetType::AT_NONE; - if (!tab) + if (tab) { - llwarns << "No accordion is expanded" << llendl; - return LLAssetType::AT_NONE; + type_map_t::iterator i = type_map.find(tab->getName()); + llassert(i != type_map.end()); + result = i->second; } - return type_map[tab->getName()]; + return result; } void LLCOFWearables::onListRightClick(LLUICtrl* ctrl, S32 x, S32 y, LLListContextMenu* menu) -- cgit v1.2.3 From 81e2aad38828b753e31e8a907aaa59f4aacd48b7 Mon Sep 17 00:00:00 2001 From: Mike Antipov Date: Wed, 16 Jun 2010 16:11:19 +0300 Subject: EXT-7475 FIXED Added callback to update verbs in My Inventory SP when tab in inventory panel is changed. Reviewed by Vadim Savchuk at https://codereview.productengine.com/secondlife/r/597/ --HG-- branch : product-engine --- indra/newview/llsidepanelinventory.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/indra/newview/llsidepanelinventory.cpp b/indra/newview/llsidepanelinventory.cpp index fc5143d33b..63b6fe5ef0 100644 --- a/indra/newview/llsidepanelinventory.cpp +++ b/indra/newview/llsidepanelinventory.cpp @@ -88,6 +88,8 @@ BOOL LLSidepanelInventory::postBuild() mPanelMainInventory = mInventoryPanel->getChild("panel_main_inventory"); mPanelMainInventory->setSelectCallback(boost::bind(&LLSidepanelInventory::onSelectionChange, this, _1, _2)); + LLTabContainer* tabs = mPanelMainInventory->getChild("inventory filter tabs"); + tabs->setCommitCallback(boost::bind(&LLSidepanelInventory::updateVerbs, this)); /* EXT-4846 : "Can we suppress the "Landmarks" and "My Favorites" folder since they have their own Task Panel?" -- cgit v1.2.3 From 630296551b57a4df0e6369ec1eb263d4799dc565 Mon Sep 17 00:00:00 2001 From: Vadim Savchuk Date: Wed, 16 Jun 2010 16:04:26 +0300 Subject: EXT-7747 FIXED Disable the "Add" item of wearable context menu when it's inappropriate. The "Add" item of wearable context menu is now disabled if multiple clothes selected or when you can't add more wearables of the given type (max number is worn). Reviewed by Nyx at https://codereview.productengine.com/secondlife/r/595/ --HG-- branch : product-engine --- indra/newview/llwearableitemslist.cpp | 20 ++++++++++++++++++++ indra/newview/llwearableitemslist.h | 1 + 2 files changed, 21 insertions(+) diff --git a/indra/newview/llwearableitemslist.cpp b/indra/newview/llwearableitemslist.cpp index 5e9c4dcec8..ea0c5f1d0f 100644 --- a/indra/newview/llwearableitemslist.cpp +++ b/indra/newview/llwearableitemslist.cpp @@ -647,6 +647,7 @@ void LLWearableItemsList::ContextMenu::updateItemsVisibility(LLContextMenu* menu // *TODO: eliminate multiple traversals over the menu items setMenuItemVisible(menu, "wear_add", mask == MASK_CLOTHING && n_worn == 0); + setMenuItemEnabled(menu, "wear_add", n_items == 1 && canAddWearable(ids.front())); setMenuItemVisible(menu, "wear", n_worn == 0); setMenuItemVisible(menu, "edit", !standalone && mask & (MASK_CLOTHING|MASK_BODYPART)); setMenuItemEnabled(menu, "edit", n_editable == 1 && n_worn == 1 && n_items == 1); @@ -740,4 +741,23 @@ void LLWearableItemsList::ContextMenu::createNewWearable(const LLUUID& item_id) LLAgentWearables::createWearable(item->getWearableType(), true); } +// Can we wear another wearable of the given item's wearable type? +// static +bool LLWearableItemsList::ContextMenu::canAddWearable(const LLUUID& item_id) +{ + if (!gAgentWearables.areWearablesLoaded()) + { + return false; + } + + LLViewerInventoryItem* item = gInventory.getItem(item_id); + if (!item || item->getType() != LLAssetType::AT_CLOTHING) + { + return false; + } + + U32 wearable_count = gAgentWearables.getWearableCount(item->getWearableType()); + return wearable_count < LLAgentWearables::MAX_CLOTHING_PER_TYPE; +} + // EOF diff --git a/indra/newview/llwearableitemslist.h b/indra/newview/llwearableitemslist.h index fe859075c4..69134dd646 100644 --- a/indra/newview/llwearableitemslist.h +++ b/indra/newview/llwearableitemslist.h @@ -342,6 +342,7 @@ public: static void setMenuItemEnabled(LLContextMenu* menu, const std::string& name, bool val); static void updateMask(U32& mask, LLAssetType::EType at); static void createNewWearable(const LLUUID& item_id); + static bool canAddWearable(const LLUUID& item_id); LLWearableItemsList* mParent; }; -- cgit v1.2.3 From 3ad0981d2f80a053a4bc22d659a129b3640852d4 Mon Sep 17 00:00:00 2001 From: Vladimir Pchelko Date: Wed, 16 Jun 2010 19:43:24 +0300 Subject: EXT-7823 FIXED Accordion widget was improved to show different message when no_matched_tabs in panel or no_visible_tabs in panel. Added "no_matched" and "no_visible" text for TeleportHistory. + Added "no_visible" text for My Outfit list. + Fixed filtering in TeleportHistory. Reviewed by Mike Antipov at https://codereview.productengine.com/secondlife/r/591/ --HG-- branch : product-engine --- indra/llui/llaccordionctrl.cpp | 7 ++++--- indra/llui/llaccordionctrl.h | 8 ++++++-- indra/newview/llpanelpeople.cpp | 2 +- indra/newview/llpanelteleporthistory.cpp | 10 +++++++--- indra/newview/skins/default/xui/en/panel_outfits_list.xml | 3 ++- indra/newview/skins/default/xui/en/panel_people.xml | 1 - indra/newview/skins/default/xui/en/panel_teleport_history.xml | 6 ++++-- indra/newview/skins/default/xui/en/widgets/accordion.xml | 8 ++++++-- 8 files changed, 30 insertions(+), 15 deletions(-) diff --git a/indra/llui/llaccordionctrl.cpp b/indra/llui/llaccordionctrl.cpp index 3a1e9f19fa..237d42090f 100644 --- a/indra/llui/llaccordionctrl.cpp +++ b/indra/llui/llaccordionctrl.cpp @@ -68,8 +68,9 @@ LLAccordionCtrl::LLAccordionCtrl(const Params& params):LLPanel(params) , mSelectedTab( NULL ) , mTabComparator( NULL ) , mNoVisibleTabsHelpText(NULL) + , mNoVisibleTabsOrigString(params.no_visible_tabs_text.initial_value().asString()) { - initNoTabsWidget(params.empty_accordion_text); + initNoTabsWidget(params.no_matched_tabs_text); mSingleExpansion = params.single_expansion; if(mFitParent && !mSingleExpansion) @@ -379,7 +380,7 @@ void LLAccordionCtrl::initNoTabsWidget(const LLTextBox::Params& tb_params) { LLTextBox::Params tp = tb_params; tp.rect(getLocalRect()); - mNoVisibleTabsOrigString = tp.initial_value().asString(); + mNoMatchedTabsOrigString = tp.initial_value().asString(); mNoVisibleTabsHelpText = LLUICtrlFactory::create(tp, this); } @@ -820,7 +821,7 @@ void LLAccordionCtrl::setFilterSubString(const std::string& filter_string) { LLStringUtil::format_map_t args; args["[SEARCH_TERM]"] = LLURI::escape(filter_string); - std::string text = filter_string.empty() ? LLStringUtil::null : mNoVisibleTabsOrigString; + std::string text = filter_string.empty() ? mNoVisibleTabsOrigString : mNoMatchedTabsOrigString; LLStringUtil::format(text, args); mNoVisibleTabsHelpText->setValue(text); diff --git a/indra/llui/llaccordionctrl.h b/indra/llui/llaccordionctrl.h index 677b598a32..3ad5274085 100644 --- a/indra/llui/llaccordionctrl.h +++ b/indra/llui/llaccordionctrl.h @@ -78,12 +78,14 @@ public: accordion tabs are responsible for scrolling their content. *NOTE fit_parent works best when combined with single_expansion. Accordion view should implement getRequiredRect() and provide valid height*/ - Optional empty_accordion_text; + Optional no_matched_tabs_text; + Optional no_visible_tabs_text; Params() : single_expansion("single_expansion",false) , fit_parent("fit_parent", false) - , empty_accordion_text("empty_accordion_text") + , no_matched_tabs_text("no_matched_tabs_text") + , no_visible_tabs_text("no_visible_tabs_text") {}; }; @@ -180,6 +182,8 @@ private: bool mAutoScrolling; F32 mAutoScrollRate; LLTextBox* mNoVisibleTabsHelpText; + + std::string mNoMatchedTabsOrigString; std::string mNoVisibleTabsOrigString; LLAccordionCtrlTab* mSelectedTab; diff --git a/indra/newview/llpanelpeople.cpp b/indra/newview/llpanelpeople.cpp index f16d1d8fda..6dd800c0c6 100644 --- a/indra/newview/llpanelpeople.cpp +++ b/indra/newview/llpanelpeople.cpp @@ -1450,7 +1450,7 @@ void LLPanelPeople::showFriendsAccordionsIfNeeded() LLAccordionCtrl* accordion = getChild("friends_accordion"); accordion->arrange(); - // *TODO: new empty_accordion_text attribute was implemented in accordion (EXT-7368). + // *TODO: new no_matched_tabs_text attribute was implemented in accordion (EXT-7368). // this code should be refactored to use it // keep help text in a synchronization with accordions visibility. updateFriendListHelpText(); diff --git a/indra/newview/llpanelteleporthistory.cpp b/indra/newview/llpanelteleporthistory.cpp index 494cba8c6f..1048e3fcc0 100644 --- a/indra/newview/llpanelteleporthistory.cpp +++ b/indra/newview/llpanelteleporthistory.cpp @@ -648,16 +648,18 @@ void LLTeleportHistoryPanel::refresh() LLDate tab_boundary_date = LLDate::now(); LLFlatListView* curr_flat_view = NULL; + std::string filter_string = sFilterSubString; + LLStringUtil::toUpper(filter_string); U32 added_items = 0; while (mCurrentItem >= 0) { // Filtering - if (!sFilterSubString.empty()) + if (!filter_string.empty()) { std::string landmark_title(items[mCurrentItem].mTitle); LLStringUtil::toUpper(landmark_title); - if( std::string::npos == landmark_title.find(sFilterSubString) ) + if( std::string::npos == landmark_title.find(filter_string) ) { mCurrentItem--; continue; @@ -706,7 +708,7 @@ void LLTeleportHistoryPanel::refresh() .getFlatItemForPersistentItem(&mContextMenu, items[mCurrentItem], mCurrentItem, - sFilterSubString); + filter_string); if ( !curr_flat_view->addItem(item, LLUUID::null, ADD_BOTTOM, false) ) llerrs << "Couldn't add flat item to teleport history." << llendl; if (mLastSelectedItemIndex == mCurrentItem) @@ -729,6 +731,8 @@ void LLTeleportHistoryPanel::refresh() } } + mHistoryAccordion->setFilterSubString(sFilterSubString); + mHistoryAccordion->arrange(); updateVerbs(); diff --git a/indra/newview/skins/default/xui/en/panel_outfits_list.xml b/indra/newview/skins/default/xui/en/panel_outfits_list.xml index 5c9ae51a48..d0c44c4328 100644 --- a/indra/newview/skins/default/xui/en/panel_outfits_list.xml +++ b/indra/newview/skins/default/xui/en/panel_outfits_list.xml @@ -14,7 +14,8 @@ background_visible="true" bg_alpha_color="DkGray2" bg_opaque_color="DkGray2" - empty_accordion_text.value="Didn't find what you're looking for? Try [secondlife:///app/search/all/[SEARCH_TERM] Search]." + no_matched_tabs_text.value="Didn't find what you're looking for? Try [secondlife:///app/search/all/[SEARCH_TERM] Search]." + no_visible_tabs_text.value="There are no any outfits. Try [secondlife:///app/search/all/ Search]." follows="all" height="400" layout="topleft" diff --git a/indra/newview/skins/default/xui/en/panel_people.xml b/indra/newview/skins/default/xui/en/panel_people.xml index da28773c74..b79ef1e287 100644 --- a/indra/newview/skins/default/xui/en/panel_people.xml +++ b/indra/newview/skins/default/xui/en/panel_people.xml @@ -173,7 +173,6 @@ Looking for people to hang out with? Try the [secondlife:///app/worldmap World M background_visible="true" bg_alpha_color="DkGray2" bg_opaque_color="DkGray2" - empty_accordion_text.value="" follows="all" height="356" layout="topleft" diff --git a/indra/newview/skins/default/xui/en/panel_teleport_history.xml b/indra/newview/skins/default/xui/en/panel_teleport_history.xml index 21addb8e6f..daa4356c83 100644 --- a/indra/newview/skins/default/xui/en/panel_teleport_history.xml +++ b/indra/newview/skins/default/xui/en/panel_teleport_history.xml @@ -5,14 +5,16 @@ background_visible="true" bg_alpha_color="DkGray"> - + + -- cgit v1.2.3 From bc91053543278b56d7009ab6bbcdee88a0ee1418 Mon Sep 17 00:00:00 2001 From: "Brad Payne (Vir Linden)" Date: Wed, 16 Jun 2010 15:26:53 -0400 Subject: EXT-6571 FIX - avoid removing links to missing wearables, which fixes a problem with ordering in multi-wearables --- indra/newview/llappearancemgr.cpp | 19 ++++++++++++++++--- .../skins/default/xui/en/panel_outfits_inventory.xml | 4 ++-- 2 files changed, 18 insertions(+), 5 deletions(-) diff --git a/indra/newview/llappearancemgr.cpp b/indra/newview/llappearancemgr.cpp index 3c267b3308..1ce5206e89 100644 --- a/indra/newview/llappearancemgr.cpp +++ b/indra/newview/llappearancemgr.cpp @@ -652,7 +652,15 @@ bool LLWearableHoldingPattern::pollMissingWearables() if (done) { gAgentAvatarp->debugWearablesLoaded(); - clearCOFLinksForMissingWearables(); + + // BAP - if we don't call clearCOFLinksForMissingWearables() + // here, we won't have to add the link back in later if the + // wearable arrives late. This is to avoid corruption of + // wearable ordering info. Also has the effect of making + // unworn item links visible in the COF under some + // circumstances. + + //clearCOFLinksForMissingWearables(); onAllComplete(); } return done; @@ -698,8 +706,13 @@ void LLWearableHoldingPattern::handleLateArrivals() data.mWearable = wearable; replaced_types.insert(data.mWearableType); - - LLAppearanceMgr::instance().addCOFItemLink(data.mItemID,false); + + // BAP - if we didn't call + // clearCOFLinksForMissingWearables() earlier, we + // don't need to restore the link here. Fixes + // wearable ordering problems. + + // LLAppearanceMgr::instance().addCOFItemLink(data.mItemID,false); // BAP failing this means inventory or asset server // are corrupted in a way we don't handle. diff --git a/indra/newview/skins/default/xui/en/panel_outfits_inventory.xml b/indra/newview/skins/default/xui/en/panel_outfits_inventory.xml index c1e5ae50e6..a59070496e 100644 --- a/indra/newview/skins/default/xui/en/panel_outfits_inventory.xml +++ b/indra/newview/skins/default/xui/en/panel_outfits_inventory.xml @@ -48,7 +48,7 @@ mouse_opaque="true" name="cof_tab" start_folder="Current Outfit" - use_label_suffix="false" + use_label_suffix="true" width="315" /> - \ No newline at end of file + -- cgit v1.2.3 From 70ba555a2a639a325420628d8212a8784dab91b9 Mon Sep 17 00:00:00 2001 From: Xiaohong Bao Date: Wed, 16 Jun 2010 16:38:51 -0600 Subject: adjust debug code for EXT-6792: Crash on ATI 3200 --- indra/newview/pipeline.cpp | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/indra/newview/pipeline.cpp b/indra/newview/pipeline.cpp index cc65b34a61..2de27b2b9e 100644 --- a/indra/newview/pipeline.cpp +++ b/indra/newview/pipeline.cpp @@ -2207,7 +2207,6 @@ void LLPipeline::stateSort(LLCamera& camera, LLCullResult &result) //LLVertexBuffer::unbind(); grabReferences(result); - llpushcallstacks ; for (LLCullResult::sg_list_t::iterator iter = sCull->beginDrawableGroups(); iter != sCull->endDrawableGroups(); ++iter) { LLSpatialGroup* group = *iter; @@ -2225,7 +2224,6 @@ void LLPipeline::stateSort(LLCamera& camera, LLCullResult &result) } } } - llpushcallstacks ; for (LLCullResult::sg_list_t::iterator iter = sCull->beginVisibleGroups(); iter != sCull->endVisibleGroups(); ++iter) { LLSpatialGroup* group = *iter; @@ -2241,7 +2239,6 @@ void LLPipeline::stateSort(LLCamera& camera, LLCullResult &result) } } - llpushcallstacks ; if (LLViewerCamera::sCurCameraID == LLViewerCamera::CAMERA_WORLD) { for (LLCullResult::bridge_list_t::iterator i = sCull->beginVisibleBridge(); i != sCull->endVisibleBridge(); ++i) @@ -2268,12 +2265,13 @@ void LLPipeline::stateSort(LLCamera& camera, LLCullResult &result) } } } - + llpushcallstacks ; { LLFastTimer ftm(FTM_CLIENT_COPY); LLVertexBuffer::clientCopy(); } - + llpushcallstacks ; + postSort(camera); llpushcallstacks ; } -- cgit v1.2.3 From 599a9a97b42626f2e45d4a9bf8e2dc297b3c31b1 Mon Sep 17 00:00:00 2001 From: Xiaohong Bao Date: Wed, 16 Jun 2010 16:47:56 -0600 Subject: trivial: remove some debug code of llpushcallstacks. --- indra/newview/llviewerdisplay.cpp | 4 +--- indra/newview/pipeline.cpp | 5 ----- 2 files changed, 1 insertion(+), 8 deletions(-) diff --git a/indra/newview/llviewerdisplay.cpp b/indra/newview/llviewerdisplay.cpp index f7cde9a6cb..ab6ff88073 100644 --- a/indra/newview/llviewerdisplay.cpp +++ b/indra/newview/llviewerdisplay.cpp @@ -699,8 +699,7 @@ void display(BOOL rebuild, F32 zoom_factor, int subfield, BOOL for_snapshot) // Doing this here gives hardware occlusion queries extra time to complete LLAppViewer::instance()->pingMainloopTimeout("Display:UpdateImages"); LLError::LLCallStacks::clear() ; - llpushcallstacks ; - + { LLMemType mt_iu(LLMemType::MTYPE_DISPLAY_IMAGE_UPDATE); LLFastTimer t(FTM_IMAGE_UPDATE); @@ -718,7 +717,6 @@ void display(BOOL rebuild, F32 zoom_factor, int subfield, BOOL for_snapshot) LLImageGL::deleteDeadTextures(); stop_glerror(); } - llpushcallstacks ; /////////////////////////////////// // // StateSort diff --git a/indra/newview/pipeline.cpp b/indra/newview/pipeline.cpp index 2de27b2b9e..ee3a2fc34f 100644 --- a/indra/newview/pipeline.cpp +++ b/indra/newview/pipeline.cpp @@ -7115,7 +7115,6 @@ void LLPipeline::generateWaterReflection(LLCamera& camera_in) skip_avatar_update = TRUE; } - llpushcallstacks ; if (!skip_avatar_update) { gAgentAvatarp->updateAttachmentVisibility(CAMERA_MODE_THIRD_PERSON); @@ -7214,7 +7213,6 @@ void LLPipeline::generateWaterReflection(LLCamera& camera_in) (1 << LLPipeline::RENDER_TYPE_WL_SKY)); static LLCullResult result; updateCull(camera, result); - llpushcallstacks ; stateSort(camera, result); mRenderTypeMask = tmp & ((1 << LLPipeline::RENDER_TYPE_SKY) | (1 << LLPipeline::RENDER_TYPE_CLOUDS) | @@ -7249,7 +7247,6 @@ void LLPipeline::generateWaterReflection(LLCamera& camera_in) LLGLUserClipPlane clip_plane(plane, mat, projection); LLGLDisable cull(GL_CULL_FACE); updateCull(camera, ref_result, 1); - llpushcallstacks ; stateSort(camera, ref_result); } @@ -7306,7 +7303,6 @@ void LLPipeline::generateWaterReflection(LLCamera& camera_in) LLGLUserClipPlane clip_plane(LLPlane(-pnorm, -(pd+pad)), mat, projection); static LLCullResult result; updateCull(camera, result, water_clip); - llpushcallstacks ; stateSort(camera, result); gGL.setColorMask(true, true); @@ -7345,7 +7341,6 @@ void LLPipeline::generateWaterReflection(LLCamera& camera_in) { gAgentAvatarp->updateAttachmentVisibility(gAgentCamera.getCameraMode()); } - llpushcallstacks ; } } -- cgit v1.2.3 From 9eeaaf67387377fcf552be7cae5191df338f5a1e Mon Sep 17 00:00:00 2001 From: Yuri Chebotarev Date: Thu, 17 Jun 2010 11:02:12 +0300 Subject: EXT-7791 FIX Show inventory panel if its not visible. reviewed by Mike Antipov, Loren Shih at https://codereview.productengine.com/secondlife/r/599/ --HG-- branch : product-engine --- indra/newview/llinventoryfunctions.cpp | 43 +++++++++++++++++++++++++--------- indra/newview/llsidepanelinventory.h | 7 +++--- 2 files changed, 36 insertions(+), 14 deletions(-) diff --git a/indra/newview/llinventoryfunctions.cpp b/indra/newview/llinventoryfunctions.cpp index 68fc86467c..de24bd92d0 100644 --- a/indra/newview/llinventoryfunctions.cpp +++ b/indra/newview/llinventoryfunctions.cpp @@ -335,24 +335,34 @@ void show_item_profile(const LLUUID& item_uuid) void show_item_original(const LLUUID& item_uuid) { + //sidetray inventory panel + LLSidepanelInventory *sidepanel_inventory = + dynamic_cast(LLSideTray::getInstance()->getPanel("sidepanel_inventory")); + bool reset_inventory_filter = !LLSideTray::getInstance()->isPanelActive("sidepanel_inventory"); LLInventoryPanel* active_panel = LLInventoryPanel::getActiveInventoryPanel(); - if (!active_panel) return; + if (!active_panel) + { + //this may happen when there is no floatera and other panel is active in inventory tab + + if (sidepanel_inventory) + { + sidepanel_inventory->showInventoryPanel(); + } + } + + active_panel = LLInventoryPanel::getActiveInventoryPanel(); + if (!active_panel) + { + return; + } active_panel->setSelection(gInventory.getLinkedItemID(item_uuid), TAKE_FOCUS_NO); if(reset_inventory_filter) { - LLSidepanelInventory *sidepanel_inventory = - dynamic_cast(LLSideTray::getInstance()->getPanel("sidepanel_inventory")); - if(sidepanel_inventory) - { - LLPanelMainInventory* main_inventory = sidepanel_inventory->getMainInventoryPanel(); - - main_inventory->onFilterEdit(""); - } - - //now for inventory floater + //inventory floater + bool floater_inventory_visible = false; LLFloaterReg::const_instance_list_t& inst_list = LLFloaterReg::getFloaterList("inventory"); for (LLFloaterReg::const_instance_list_t::const_iterator iter = inst_list.begin(); iter != inst_list.end(); ++iter) @@ -364,8 +374,19 @@ void show_item_original(const LLUUID& item_uuid) main_inventory->onFilterEdit(""); } + + if(floater_inventory->getVisible()) + { + floater_inventory_visible = true; + } + } + if(sidepanel_inventory && !floater_inventory_visible) + { + LLPanelMainInventory* main_inventory = sidepanel_inventory->getMainInventoryPanel(); + main_inventory->onFilterEdit(""); + } } } diff --git a/indra/newview/llsidepanelinventory.h b/indra/newview/llsidepanelinventory.h index a038f99853..13275d14c0 100644 --- a/indra/newview/llsidepanelinventory.h +++ b/indra/newview/llsidepanelinventory.h @@ -54,6 +54,10 @@ public: LLPanelMainInventory* getMainInventoryPanel() const { return mPanelMainInventory; } BOOL isMainInventoryPanelActive() const; + void showItemInfoPanel(); + void showTaskInfoPanel(); + void showInventoryPanel(); + protected: // Tracks highlighted (selected) item in inventory panel. LLInventoryItem *getSelectedItem(); @@ -63,9 +67,6 @@ protected: void performActionOnSelection(const std::string &action); bool canShare(); - void showItemInfoPanel(); - void showTaskInfoPanel(); - void showInventoryPanel(); void updateVerbs(); // -- cgit v1.2.3 From ca211101354633144e55f91f58db2a271b0a666d Mon Sep 17 00:00:00 2001 From: Tofu Linden Date: Thu, 17 Jun 2010 11:47:53 +0100 Subject: grr, dos2unix again --- indra/newview/llinventoryitemslist.cpp | 20 ++++++++++---------- indra/newview/llinventoryitemslist.h | 8 ++++---- 2 files changed, 14 insertions(+), 14 deletions(-) diff --git a/indra/newview/llinventoryitemslist.cpp b/indra/newview/llinventoryitemslist.cpp index c4efd70385..384b24210c 100644 --- a/indra/newview/llinventoryitemslist.cpp +++ b/indra/newview/llinventoryitemslist.cpp @@ -288,23 +288,23 @@ void LLPanelInventoryListItemBase::setIconImage(const LLUIImagePtr& image) void LLPanelInventoryListItemBase::setTitle(const std::string& title, const std::string& highlit_text) { - setToolTip(title); + setToolTip(title); LLTextUtil::textboxSetHighlightedVal( mTitleCtrl, LLStyle::Params(), title, - highlit_text); + highlit_text); } -BOOL LLPanelInventoryListItemBase::handleToolTip( S32 x, S32 y, MASK mask) -{ - LLTextBox* item_name = getChild("item_name"); - if (item_name->getRect().getWidth() < item_name->getTextPixelWidth()) - { - return LLPanel::handleToolTip(x,y,mask); - } - return FALSE; +BOOL LLPanelInventoryListItemBase::handleToolTip( S32 x, S32 y, MASK mask) +{ + LLTextBox* item_name = getChild("item_name"); + if (item_name->getRect().getWidth() < item_name->getTextPixelWidth()) + { + return LLPanel::handleToolTip(x,y,mask); + } + return FALSE; } void LLPanelInventoryListItemBase::reshapeLeftWidgets() diff --git a/indra/newview/llinventoryitemslist.h b/indra/newview/llinventoryitemslist.h index c24e8b63e0..489a82829c 100644 --- a/indra/newview/llinventoryitemslist.h +++ b/indra/newview/llinventoryitemslist.h @@ -179,10 +179,10 @@ protected: /** Set item title - inventory item name usually */ virtual void setTitle(const std::string& title, const std::string& highlit_text); - /** - * Show tool tip if item name text size > panel size - */ - virtual BOOL handleToolTip( S32 x, S32 y, MASK mask); + /** + * Show tool tip if item name text size > panel size + */ + virtual BOOL handleToolTip( S32 x, S32 y, MASK mask); LLViewerInventoryItem* mItem; -- cgit v1.2.3 From d4232e4ae1d83b068352dc00cfda90d1692a16f2 Mon Sep 17 00:00:00 2001 From: Lynx Linden Date: Thu, 17 Jun 2010 13:08:59 +0100 Subject: EXT-7887 FIXED Release note URL updated. We now point directly to the wiki for Viewer release notes and we include three digits in the version number. E.g., http://wiki.secondlife.com/wiki/Release_Notes/Second Life Beta Viewer/2.1.0 --- indra/newview/llfloaterabout.cpp | 22 +++++++++++----------- indra/newview/skins/default/xui/en/strings.xml | 2 +- 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/indra/newview/llfloaterabout.cpp b/indra/newview/llfloaterabout.cpp index 56bc4a7933..4bd3151f2e 100644 --- a/indra/newview/llfloaterabout.cpp +++ b/indra/newview/llfloaterabout.cpp @@ -135,10 +135,10 @@ BOOL LLFloaterAbout::postBuild() // Render the LLSD from getInfo() as a format_map_t LLStringUtil::format_map_t args; - // For reasons I don't yet understand, [ReleaseNotes] is not part of the - // default substitution strings whereas [APP_NAME] is. But it works to - // simply copy it into these specific args. + + // allow the "Release Notes" URL label to be localized args["ReleaseNotes"] = LLTrans::getString("ReleaseNotes"); + for (LLSD::map_const_iterator ii(info.beginMap()), iend(info.endMap()); ii != iend; ++ii) { @@ -293,14 +293,14 @@ LLSD LLFloaterAbout::getInfo() static std::string get_viewer_release_notes_url() { - LLSD query; - query["channel"] = gSavedSettings.getString("VersionChannelName"); - query["version"] = LLVersionInfo::getVersion(); - - std::ostringstream url; - url << LLTrans::getString("RELEASE_NOTES_BASE_URL") << LLURI::mapToQueryString(query); - - return LLWeb::escapeURL(url.str()); + // return a URL to the release notes for this viewer, such as: + // http://wiki.secondlife.com/wiki/Release_Notes/Second Life Beta Viewer/2.1.0 + std::string url = LLTrans::getString("RELEASE_NOTES_BASE_URL"); + if (! LLStringUtil::endsWith(url, "/")) + url += "/"; + url += gSavedSettings.getString("VersionChannelName") + "/"; + url += LLVersionInfo::getShortVersion(); + return LLWeb::escapeURL(url); } class LLFloaterAboutListener: public LLEventAPI diff --git a/indra/newview/skins/default/xui/en/strings.xml b/indra/newview/skins/default/xui/en/strings.xml index 294267d43b..68eea8dc9a 100644 --- a/indra/newview/skins/default/xui/en/strings.xml +++ b/indra/newview/skins/default/xui/en/strings.xml @@ -136,7 +136,7 @@ Retrieving... Release Notes - http://secondlife.com/app/releasenotes/ + http://wiki.secondlife.com/wiki/Release_Notes/ Loading... -- cgit v1.2.3 From 7cc006347822a70f36175dc2627814a0eaeb9c0a Mon Sep 17 00:00:00 2001 From: Lynx Linden Date: Thu, 17 Jun 2010 15:36:05 +0100 Subject: EXT-7901 FIXED Allow clicking on http://secondlife.com/app URLs. The SLE code makes any http:///app, http:///region, or http:///secondlife URL be treated as a SLurl rather than a normal http URL. This seems to be overly general, and has bitten us because http://secondlife.com/app is used as a redirect URL for server release notes. In the short-term, I've made an exception for hostnames that match "secondlife.com", so that the server release notes work again. In the long-term, we should assess whether treating any URL that starts with a path of "app", "region", or "secondlife" should be treated as a SLurl. What happens when google adds "http://www.google.com/app"? --- indra/newview/llslurl.cpp | 14 ++++++++++++-- indra/newview/llslurl.h | 1 + 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/indra/newview/llslurl.cpp b/indra/newview/llslurl.cpp index ff7e479368..0df7035f84 100644 --- a/indra/newview/llslurl.cpp +++ b/indra/newview/llslurl.cpp @@ -48,8 +48,9 @@ const char* LLSLURL::SLURL_COM = "slurl.com"; // text with www.slurl.com or a link explicitly pointing at www.slurl.com so testing for this // version is required also. -const char* LLSLURL::WWW_SLURL_COM = "www.slurl.com"; -const char* LLSLURL::MAPS_SECONDLIFE_COM = "maps.secondlife.com"; +const char* LLSLURL::WWW_SLURL_COM = "www.slurl.com"; +const char* LLSLURL::SECONDLIFE_COM = "secondlife.com"; +const char* LLSLURL::MAPS_SECONDLIFE_COM = "maps.secondlife.com"; const char* LLSLURL::SLURL_X_GRID_LOCATION_INFO_SCHEME = "x-grid-location-info"; const char* LLSLURL::SLURL_APP_PATH = "app"; const char* LLSLURL::SLURL_REGION_PATH = "region"; @@ -187,6 +188,15 @@ LLSLURL::LLSLURL(const std::string& slurl) (slurl_uri.scheme() == LLSLURL::SLURL_HTTPS_SCHEME) || (slurl_uri.scheme() == LLSLURL::SLURL_X_GRID_LOCATION_INFO_SCHEME)) { + // *HACK: ignore http://secondlife.com/ URLs so that we can use + // http://secondlife.com/app/ redirect URLs + // This is only necessary while the server returns Release Note + // urls using this format rather that pointing to the wiki + if ((slurl_uri.scheme() == LLSLURL::SLURL_HTTP_SCHEME || + slurl_uri.scheme() == LLSLURL::SLURL_HTTPS_SCHEME) && + slurl_uri.hostName() == LLSLURL::SECONDLIFE_COM) + return; + // We're dealing with either a Standalone style slurl or slurl.com slurl if ((slurl_uri.hostName() == LLSLURL::SLURL_COM) || (slurl_uri.hostName() == LLSLURL::WWW_SLURL_COM) || diff --git a/indra/newview/llslurl.h b/indra/newview/llslurl.h index 1210c398f1..e9b0e7f52a 100644 --- a/indra/newview/llslurl.h +++ b/indra/newview/llslurl.h @@ -47,6 +47,7 @@ public: static const char* SLURL_SECONDLIFE_PATH; static const char* SLURL_COM; static const char* WWW_SLURL_COM; + static const char* SECONDLIFE_COM; static const char* MAPS_SECONDLIFE_COM; static const char* SLURL_X_GRID_LOCATION_INFO_SCHEME; static LLSLURL START_LOCATION; -- cgit v1.2.3 From 8d84b6e82d17eb11622b3d80254ccc4ac15c5bec Mon Sep 17 00:00:00 2001 From: Richard Linden Date: Thu, 17 Jun 2010 13:53:19 -0700 Subject: EXT-7811 FIX Crash to desktop during SL login --- indra/newview/llavatariconctrl.cpp | 5 ++++- indra/newview/llstartup.cpp | 6 ++++-- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/indra/newview/llavatariconctrl.cpp b/indra/newview/llavatariconctrl.cpp index 87b8d807c4..abb79b53a7 100644 --- a/indra/newview/llavatariconctrl.cpp +++ b/indra/newview/llavatariconctrl.cpp @@ -244,7 +244,10 @@ void LLAvatarIconCtrl::setValue(const LLSD& value) LLIconCtrl::setValue(value); } - gCacheName->get(mAvatarId, FALSE, boost::bind(&LLAvatarIconCtrl::nameUpdatedCallback, this, _1, _2, _3, _4)); + if (gCacheName) + { + gCacheName->get(mAvatarId, FALSE, boost::bind(&LLAvatarIconCtrl::nameUpdatedCallback, this, _1, _2, _3, _4)); + } } bool LLAvatarIconCtrl::updateFromCache() diff --git a/indra/newview/llstartup.cpp b/indra/newview/llstartup.cpp index df5be34e39..3ef190f766 100644 --- a/indra/newview/llstartup.cpp +++ b/indra/newview/llstartup.cpp @@ -1116,8 +1116,6 @@ bool idle_startup() LLVoiceClient::getInstance()->userAuthorized(gUserCredential->userID(), gAgentID); // create the default proximal channel LLVoiceChannel::initClass(); - // update the voice settings - LLVoiceClient::getInstance()->updateSettings(); LLGridManager::getInstance()->setFavorite(); LLStartUp::setStartupState( STATE_WORLD_INIT); } @@ -1300,6 +1298,10 @@ bool idle_startup() LLAppViewer::instance()->loadNameCache(); } + // update the voice settings *after* gCacheName initialization + // so that we can construct voice UI that relies on the name cache + LLVoiceClient::getInstance()->updateSettings(); + //gCacheName is required for nearby chat history loading //so I just moved nearby history loading a few states further if (!gNoRender && gSavedPerAccountSettings.getBOOL("LogShowHistory")) -- cgit v1.2.3