From db643d1881196c01687b06130f26452cd2e04bac Mon Sep 17 00:00:00 2001 From: Jonathan Yap <none@none> Date: Wed, 26 Oct 2011 11:21:01 -0400 Subject: STORM-1653 Group notices sent by muted residents are still displayed --- doc/contributions.txt | 1 + indra/newview/llviewermessage.cpp | 15 +++++++++++++++ 2 files changed, 16 insertions(+) diff --git a/doc/contributions.txt b/doc/contributions.txt index 66b3237e63..b6f3ffc5fa 100644 --- a/doc/contributions.txt +++ b/doc/contributions.txt @@ -577,6 +577,7 @@ Jonathan Yap STORM-1574 STORM-1579 STORM-1639 + STORM-1653 Kadah Coba STORM-1060 Jondan Lundquist diff --git a/indra/newview/llviewermessage.cpp b/indra/newview/llviewermessage.cpp index 74ee918bfe..fe613b3dc9 100644 --- a/indra/newview/llviewermessage.cpp +++ b/indra/newview/llviewermessage.cpp @@ -2241,6 +2241,10 @@ void process_improved_im(LLMessageSystem *msg, void **user_data) { name = LLTrans::getString("Unnamed"); } + + // Preserve the unaltered name for use in group notice mute checking. + std::string original_name = name; + // IDEVO convert new-style "Resident" names for display name = clean_name_from_im(name, dialog); @@ -2447,6 +2451,17 @@ void process_improved_im(LLMessageSystem *msg, void **user_data) break; } + // The group notice packet does not have an AgentID. Try to obtain one from the name cache. + // If there is a cache miss and a background fetch has to occur the group notice may + // be displayed even though the resident has been muted. + std::string legacy_name = gCacheName->buildLegacyName(original_name); + LLUUID agent_id; + gCacheName->getUUID(legacy_name, agent_id); + if (agent_id.notNull() && LLMuteList::getInstance()->isMuted(agent_id)) + { + break; + } + notice_bin_bucket = (struct notice_bucket_full_t*) &binary_bucket[0]; U8 has_inventory = notice_bin_bucket->header.has_inventory; U8 asset_type = notice_bin_bucket->header.asset_type; -- cgit v1.2.3 From f73fddd5d0c5a398a592dcc058b1feb09964560d Mon Sep 17 00:00:00 2001 From: Jonathan Yap <none@none> Date: Wed, 26 Oct 2011 14:06:08 -0400 Subject: STORM-1653 Group notices sent by muted residents are still displayed Added warning message if a null is returned from the name to id call. --- indra/newview/llviewermessage.cpp | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/indra/newview/llviewermessage.cpp b/indra/newview/llviewermessage.cpp index fe613b3dc9..05303cf3c5 100644 --- a/indra/newview/llviewermessage.cpp +++ b/indra/newview/llviewermessage.cpp @@ -2451,13 +2451,16 @@ void process_improved_im(LLMessageSystem *msg, void **user_data) break; } - // The group notice packet does not have an AgentID. Try to obtain one from the name cache. - // If there is a cache miss and a background fetch has to occur the group notice may - // be displayed even though the resident has been muted. + // The group notice packet does not have an AgentID. Obtain one from the name cache. std::string legacy_name = gCacheName->buildLegacyName(original_name); LLUUID agent_id; gCacheName->getUUID(legacy_name, agent_id); - if (agent_id.notNull() && LLMuteList::getInstance()->isMuted(agent_id)) + + if (agent_id.isNull()) + { + LL_WARNS("Messaging") << "buildLegacyName returned null" << LL_ENDL; + } + else if (LLMuteList::getInstance()->isMuted(agent_id)) { break; } -- cgit v1.2.3 From 0ab252b8174a97311168938e93c99c0d649660ad Mon Sep 17 00:00:00 2001 From: Jonathan Yap <none@none> Date: Wed, 23 Nov 2011 09:51:38 -0500 Subject: STORM-1653 Handle last name of "Resident" case --- indra/newview/llviewermessage.cpp | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/indra/newview/llviewermessage.cpp b/indra/newview/llviewermessage.cpp index 05303cf3c5..c92fc5c853 100644 --- a/indra/newview/llviewermessage.cpp +++ b/indra/newview/llviewermessage.cpp @@ -2452,6 +2452,12 @@ void process_improved_im(LLMessageSystem *msg, void **user_data) } // The group notice packet does not have an AgentID. Obtain one from the name cache. + // If last name is "Resident" strip it out so the cache name lookup works. + U32 index = original_name.find(" Resident"); + if (index != std::string::npos) + { + original_name = original_name.substr(0, index); + } std::string legacy_name = gCacheName->buildLegacyName(original_name); LLUUID agent_id; gCacheName->getUUID(legacy_name, agent_id); -- cgit v1.2.3 From 28f86906a6c0675c6335ca7f408c4e0561dafd89 Mon Sep 17 00:00:00 2001 From: Jonathan Yap <none@none> Date: Tue, 6 Dec 2011 11:45:07 -0500 Subject: STORM-1653 Added affected name to warning message --- indra/newview/llviewermessage.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/indra/newview/llviewermessage.cpp b/indra/newview/llviewermessage.cpp index c92fc5c853..39c863318b 100644 --- a/indra/newview/llviewermessage.cpp +++ b/indra/newview/llviewermessage.cpp @@ -2464,7 +2464,7 @@ void process_improved_im(LLMessageSystem *msg, void **user_data) if (agent_id.isNull()) { - LL_WARNS("Messaging") << "buildLegacyName returned null" << LL_ENDL; + LL_WARNS("Messaging") << "buildLegacyName returned null while processing " << original_name << LL_ENDL; } else if (LLMuteList::getInstance()->isMuted(agent_id)) { -- cgit v1.2.3 From 20bc02d2544320a5ad99c61b8d012608319e3161 Mon Sep 17 00:00:00 2001 From: "Debi King (Dessie)" <dessie@lindenlab.com> Date: Fri, 9 Dec 2011 12:17:47 -0500 Subject: Added tag DRTVWR-60_2.7.1-release, 2.7.1-release for changeset fe3a8e797307 --- .hgtags | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.hgtags b/.hgtags index 7648eb38b0..d0c5e79897 100644 --- a/.hgtags +++ b/.hgtags @@ -218,3 +218,7 @@ e440cd1dfbd128d7d5467019e497f7f803640ad6 3.2.0-beta1 c4911ec8cd81e676dfd2af438b3e065407a94a7a 3.2.1-start a8c7030d6845186fac7c188be4323a0e887b4184 DRTVWR-99_3.2.1-release a8c7030d6845186fac7c188be4323a0e887b4184 3.2.1-release +a9abb9633a266c8d2fe62411cfd1c86d32da72bf DRTVWR-60_2.7.1-release +fe3a8e7973072ea62043c08b19b66626c1a720eb DRTVWR-60_2.7.1-release +a9abb9633a266c8d2fe62411cfd1c86d32da72bf 2.7.1-release +fe3a8e7973072ea62043c08b19b66626c1a720eb 2.7.1-release -- cgit v1.2.3 From bfefc1509ffc77ab223a525082ff070c74ee5b61 Mon Sep 17 00:00:00 2001 From: "Debi King (Dessie)" <dessie@lindenlab.com> Date: Fri, 9 Dec 2011 15:19:21 -0500 Subject: Added tag DRTVWR-62_2.7.2-release, 2.7.2-release for changeset fe3a8e797307 --- .hgtags | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.hgtags b/.hgtags index bf9a40bb44..1392b6a8a1 100644 --- a/.hgtags +++ b/.hgtags @@ -230,3 +230,5 @@ a8c7030d6845186fac7c188be4323a0e887b4184 DRTVWR-99_3.2.1-release a8c7030d6845186fac7c188be4323a0e887b4184 3.2.1-release 3fe994349fae64fc40874bb59db387131eb35a41 DRTVWR-104_3.2.4-beta1 3fe994349fae64fc40874bb59db387131eb35a41 3.2.4-beta1 +fe3a8e7973072ea62043c08b19b66626c1a720eb DRTVWR-62_2.7.2-release +fe3a8e7973072ea62043c08b19b66626c1a720eb 2.7.2-release -- cgit v1.2.3 From a03b3aaa60c4b9101d344eed70ddbbf14888ff48 Mon Sep 17 00:00:00 2001 From: Jonathan Yap <none@none> Date: Mon, 12 Dec 2011 08:51:16 -0500 Subject: STORM-1731 Ad-hoc confererence block failing. Residents using it to start massive multi-sim conferences, used as a griefing tool. --- doc/contributions.txt | 1 + indra/newview/llimview.cpp | 55 ++++++++++++++++++++++++++++++++-------------- 2 files changed, 39 insertions(+), 17 deletions(-) diff --git a/doc/contributions.txt b/doc/contributions.txt index 274632a804..e68029b011 100644 --- a/doc/contributions.txt +++ b/doc/contributions.txt @@ -595,6 +595,7 @@ Jonathan Yap STORM-1719 STORM-1712 STORM-1728 + STORM-1731 Kadah Coba STORM-1060 Jondan Lundquist diff --git a/indra/newview/llimview.cpp b/indra/newview/llimview.cpp index ed4bb727cd..daef307601 100644 --- a/indra/newview/llimview.cpp +++ b/indra/newview/llimview.cpp @@ -2403,15 +2403,6 @@ void LLIMMgr::addMessage( bool link_name) // If this is true, then we insert the name and link it to a profile { LLUUID other_participant_id = target_id; - - // don't process muted IMs - if (LLMuteList::getInstance()->isMuted( - other_participant_id, - LLMute::flagTextChat) && !LLMuteList::getInstance()->isLinden(from)) - { - return; - } - LLUUID new_session_id = session_id; if (new_session_id.isNull()) { @@ -2452,10 +2443,25 @@ void LLIMMgr::addMessage( LLIMModel::instance().addMessage(new_session_id, from, other_participant_id, bonus_info.str()); } + // Logically it would make more sense to reject the session sooner, in another area of the + // code, but the session has to be established inside the server before it can be left. + if (LLMuteList::getInstance()->isMuted(other_participant_id) && !LLMuteList::getInstance()->isLinden(from)) + { + llwarns << "Leaving IM session from initiating muted resident " << from << llendl; + if(!gIMMgr->leaveSession(new_session_id)) + { + llwarns << "Session " << new_session_id << " does not exist." << llendl; + } + return; + } + make_ui_sound("UISndNewIncomingIMSession"); } - LLIMModel::instance().addMessage(new_session_id, from, other_participant_id, msg); + if (!LLMuteList::getInstance()->isMuted(other_participant_id, LLMute::flagTextChat)) + { + LLIMModel::instance().addMessage(new_session_id, from, other_participant_id, msg); + } } void LLIMMgr::addSystemMessage(const LLUUID& session_id, const std::string& message_name, const LLSD& args) @@ -2661,12 +2667,6 @@ void LLIMMgr::inviteToSession( const std::string& session_handle, const std::string& session_uri) { - //ignore invites from muted residents - if (LLMuteList::getInstance()->isMuted(caller_id)) - { - return; - } - std::string notify_box_type; // voice invite question is different from default only for group call (EXT-7118) std::string question_type = "VoiceInviteQuestionDefault"; @@ -2712,6 +2712,22 @@ void LLIMMgr::inviteToSession( payload["notify_box_type"] = notify_box_type; payload["question_type"] = question_type; + if (voice_invite && + "VoiceInviteQuestionDefault" == question_type && + LLMuteList::getInstance()->isMuted(caller_id) && + !LLMuteList::getInstance()->isLinden(caller_name)) + { + llwarns << "Rejecting voice call from initiating muted resident " << caller_name << llendl; + LLIncomingCallDialog::processCallResponse(1, payload); + return; + } + + //ignore invites from muted residents + if (LLMuteList::getInstance()->isMuted(caller_id)) + { + return; + } + LLVoiceChannel* channelp = LLVoiceChannel::getChannelByID(session_id); if (channelp && channelp->callStarted()) { @@ -3234,7 +3250,7 @@ public: chat.mFromID = from_id; chat.mFromName = name; - if (!is_linden && (is_busy || is_muted)) + if (!is_linden && is_busy) { return; } @@ -3266,6 +3282,11 @@ public: ll_vector3_from_sd(message_params["position"]), true); + if (LLMuteList::getInstance()->isMuted(from_id, name, LLMute::flagTextChat)) + { + return; + } + //K now we want to accept the invitation std::string url = gAgent.getRegion()->getCapability( "ChatSessionRequest"); -- cgit v1.2.3 From f2d2e7e489613769ca40cc838630b20c854942a5 Mon Sep 17 00:00:00 2001 From: Jonathan Yap <none@none> Date: Mon, 12 Dec 2011 11:32:34 -0500 Subject: STORM-1731 Changes per RB comments: changed llwarns to llinfos, added check so you cannot mute a Linden --- indra/newview/llimview.cpp | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/indra/newview/llimview.cpp b/indra/newview/llimview.cpp index daef307601..f96e7f2cc3 100644 --- a/indra/newview/llimview.cpp +++ b/indra/newview/llimview.cpp @@ -2450,7 +2450,7 @@ void LLIMMgr::addMessage( llwarns << "Leaving IM session from initiating muted resident " << from << llendl; if(!gIMMgr->leaveSession(new_session_id)) { - llwarns << "Session " << new_session_id << " does not exist." << llendl; + llinfos << "Session " << new_session_id << " does not exist." << llendl; } return; } @@ -2673,6 +2673,9 @@ void LLIMMgr::inviteToSession( BOOL ad_hoc_invite = FALSE; BOOL voice_invite = FALSE; + bool is_linden = LLMuteList::getInstance()->isLinden(caller_name); + + if(type == IM_SESSION_P2P_INVITE) { //P2P is different...they only have voice invitations @@ -2715,15 +2718,15 @@ void LLIMMgr::inviteToSession( if (voice_invite && "VoiceInviteQuestionDefault" == question_type && LLMuteList::getInstance()->isMuted(caller_id) && - !LLMuteList::getInstance()->isLinden(caller_name)) + !is_linden) { - llwarns << "Rejecting voice call from initiating muted resident " << caller_name << llendl; + llinfos << "Rejecting voice call from initiating muted resident " << caller_name << llendl; LLIncomingCallDialog::processCallResponse(1, payload); return; } //ignore invites from muted residents - if (LLMuteList::getInstance()->isMuted(caller_id)) + if (LLMuteList::getInstance()->isMuted(caller_id) && !is_linden) { return; } -- cgit v1.2.3 From 2c9db624fb6a463efbd8a208d6d7f3bae72c0211 Mon Sep 17 00:00:00 2001 From: Jonathan Yap <none@none> Date: Mon, 12 Dec 2011 14:48:36 -0500 Subject: STORM-1731 Adjusted if muted logic slightly --- indra/newview/llimview.cpp | 15 +++++---------- 1 file changed, 5 insertions(+), 10 deletions(-) diff --git a/indra/newview/llimview.cpp b/indra/newview/llimview.cpp index f96e7f2cc3..a856bd0bdc 100644 --- a/indra/newview/llimview.cpp +++ b/indra/newview/llimview.cpp @@ -2714,20 +2714,15 @@ void LLIMMgr::inviteToSession( payload["session_uri"] = session_uri; payload["notify_box_type"] = notify_box_type; payload["question_type"] = question_type; - - if (voice_invite && - "VoiceInviteQuestionDefault" == question_type && - LLMuteList::getInstance()->isMuted(caller_id) && - !is_linden) - { - llinfos << "Rejecting voice call from initiating muted resident " << caller_name << llendl; - LLIncomingCallDialog::processCallResponse(1, payload); - return; - } //ignore invites from muted residents if (LLMuteList::getInstance()->isMuted(caller_id) && !is_linden) { + if (voice_invite && "VoiceInviteQuestionDefault" == question_type) + { + llinfos << "Rejecting voice call from initiating muted resident " << caller_name << llendl; + LLIncomingCallDialog::processCallResponse(1, payload); + } return; } -- cgit v1.2.3 From 7f85f6be6af92868faeaf38b60accd3a3ab4491a Mon Sep 17 00:00:00 2001 From: Jonathan Yap <none@none> Date: Mon, 12 Dec 2011 20:07:34 -0500 Subject: VWR-27832 L$ Transfer failures show alert as if successful --- doc/contributions.txt | 1 + indra/newview/llviewermessage.cpp | 16 +++++++++++----- indra/newview/skins/default/xui/en/notifications.xml | 9 +++++++++ indra/newview/skins/default/xui/en/strings.xml | 4 ++++ 4 files changed, 25 insertions(+), 5 deletions(-) diff --git a/doc/contributions.txt b/doc/contributions.txt index 274632a804..6a99c5787e 100644 --- a/doc/contributions.txt +++ b/doc/contributions.txt @@ -595,6 +595,7 @@ Jonathan Yap STORM-1719 STORM-1712 STORM-1728 + VWR-27832 Kadah Coba STORM-1060 Jondan Lundquist diff --git a/indra/newview/llviewermessage.cpp b/indra/newview/llviewermessage.cpp index ad333a71ff..2f2c711073 100755 --- a/indra/newview/llviewermessage.cpp +++ b/indra/newview/llviewermessage.cpp @@ -5206,6 +5206,7 @@ static void process_money_balance_reply_extended(LLMessageSystem* msg) BOOL is_dest_group = FALSE; S32 amount = 0; std::string item_description; + BOOL success = FALSE; msg->getS32("TransactionInfo", "TransactionType", transaction_type); msg->getUUID("TransactionInfo", "SourceID", source_id); @@ -5214,6 +5215,7 @@ static void process_money_balance_reply_extended(LLMessageSystem* msg) msg->getBOOL("TransactionInfo", "IsDestGroup", is_dest_group); msg->getS32("TransactionInfo", "Amount", amount); msg->getString("TransactionInfo", "ItemDescription", item_description); + msg->getBOOL("MoneyData", "TransactionSuccess", success); LL_INFOS("Money") << "MoneyBalanceReply source " << source_id << " dest " << dest_id << " type " << transaction_type @@ -5275,28 +5277,32 @@ static void process_money_balance_reply_extended(LLMessageSystem* msg) { if (dest_id.notNull()) { - message = LLTrans::getString("you_paid_ldollars", args); + message = success ? LLTrans::getString("you_paid_ldollars", args) : + LLTrans::getString("you_paid_failure_ldollars", args); } else { // transaction fee to the system, eg, to create a group - message = LLTrans::getString("you_paid_ldollars_no_name", args); + message = success ? LLTrans::getString("you_paid_ldollars_no_name", args) : + LLTrans::getString("you_paid_failure_ldollars_no_name", args); } } else { if (dest_id.notNull()) { - message = LLTrans::getString("you_paid_ldollars_no_reason", args); + message = success ? LLTrans::getString("you_paid_ldollars_no_reason", args) : + LLTrans::getString("you_paid_failure_ldollars_no_reason", args); } else { // no target, no reason, you just paid money - message = LLTrans::getString("you_paid_ldollars_no_info", args); + message = success ? LLTrans::getString("you_paid_ldollars_no_info", args) : + LLTrans::getString("you_paid_failure_ldollars_no_info", args); } } final_args["MESSAGE"] = message; - notification = "PaymentSent"; + notification = success ? "PaymentSent" : "PaymentFailure"; } else { // ...someone paid you diff --git a/indra/newview/skins/default/xui/en/notifications.xml b/indra/newview/skins/default/xui/en/notifications.xml index 0ba4b84abe..a7705c8bac 100644 --- a/indra/newview/skins/default/xui/en/notifications.xml +++ b/indra/newview/skins/default/xui/en/notifications.xml @@ -5516,6 +5516,15 @@ Please select at least one type of content to search (General, Moderate, or Adul [MESSAGE] </notification> + <notification + icon="notify.tga" + name="PaymentFailure" + persist="true" + type="notify"> + <tag>funds</tag> +[MESSAGE] + </notification> + <!-- EventNotification couldn't be persist since server decide is it necessary to notify user about subscribed event via LLEventNotifier--> <notification diff --git a/indra/newview/skins/default/xui/en/strings.xml b/indra/newview/skins/default/xui/en/strings.xml index c25d1f57d6..877c2e5c34 100644 --- a/indra/newview/skins/default/xui/en/strings.xml +++ b/indra/newview/skins/default/xui/en/strings.xml @@ -3358,6 +3358,10 @@ If you continue to receive this message, contact the [SUPPORT_SITE]. <string name="you_paid_ldollars_no_info">You paid L$[AMOUNT].</string> <string name="you_paid_ldollars_no_reason">You paid [NAME] L$[AMOUNT].</string> <string name="you_paid_ldollars_no_name">You paid L$[AMOUNT] [REASON].</string> + <string name="you_paid_failure_ldollars">You failed to pay [NAME] L$[AMOUNT] [REASON].</string> + <string name="you_paid_failure_ldollars_no_info">You failed to pay L$[AMOUNT].</string> + <string name="you_paid_failure_ldollars_no_reason">You failed to pay [NAME] L$[AMOUNT].</string> + <string name="you_paid_failure_ldollars_no_name">You failed to pay L$[AMOUNT] [REASON].</string> <string name="for item">for [ITEM]</string> <string name="for a parcel of land">for a parcel of land</string> <string name="for a land access pass">for a land access pass</string> -- cgit v1.2.3 From ac94b66a08b469b02d4cfe41341beaab0a8443ab Mon Sep 17 00:00:00 2001 From: Oz Linden <oz@lindenlab.com> Date: Tue, 13 Dec 2011 15:58:34 -0500 Subject: storm-1729: ensure that cpu id has no leading or trailing spaces for ease of comparison and formatting --- indra/llcommon/llsys.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/indra/llcommon/llsys.cpp b/indra/llcommon/llsys.cpp index d781687175..19075afa68 100644 --- a/indra/llcommon/llsys.cpp +++ b/indra/llcommon/llsys.cpp @@ -608,6 +608,7 @@ LLCPUInfo::LLCPUInfo() out << " (" << mCPUMHz << " MHz)"; } mCPUString = out.str(); + LLStringUtil::trim(mCPUString); } bool LLCPUInfo::hasAltivec() const -- cgit v1.2.3 From d8aa31d10a89aa826cc549594c083a054a2ad967 Mon Sep 17 00:00:00 2001 From: "Debi King (Dessie)" <dessie@lindenlab.com> Date: Tue, 13 Dec 2011 16:59:12 -0500 Subject: Added tag DRTVWR-103_3.2.4-release, 3.2.4-release for changeset bd6bcde25844 --- .hgtags | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.hgtags b/.hgtags index 1392b6a8a1..c2c93097a3 100644 --- a/.hgtags +++ b/.hgtags @@ -232,3 +232,5 @@ a8c7030d6845186fac7c188be4323a0e887b4184 3.2.1-release 3fe994349fae64fc40874bb59db387131eb35a41 3.2.4-beta1 fe3a8e7973072ea62043c08b19b66626c1a720eb DRTVWR-62_2.7.2-release fe3a8e7973072ea62043c08b19b66626c1a720eb 2.7.2-release +bd6bcde2584491fd9228f1fa51c4575f4e764e19 DRTVWR-103_3.2.4-release +bd6bcde2584491fd9228f1fa51c4575f4e764e19 3.2.4-release -- cgit v1.2.3 From 82f043c3338fdcf35e42dbe2ed512eb39808b90e Mon Sep 17 00:00:00 2001 From: Vadim ProductEngine <vsavchuk@productengine.com> Date: Wed, 14 Dec 2011 15:26:13 +0200 Subject: EXP-1639 FIXED Fixed a resolution rounding error. The error sometimes led to the following issues with maximized viewer window on MS Windows: * displaying incorrect resolution * failure to update snapshot --- indra/newview/llfloatersnapshot.cpp | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/indra/newview/llfloatersnapshot.cpp b/indra/newview/llfloatersnapshot.cpp index 13f544e784..b7145d43f6 100644 --- a/indra/newview/llfloatersnapshot.cpp +++ b/indra/newview/llfloatersnapshot.cpp @@ -333,8 +333,7 @@ void LLSnapshotLivePreview::updateSnapshot(BOOL new_snapshot, BOOL new_thumbnail { S32 old_image_index = mCurImageIndex; mCurImageIndex = (mCurImageIndex + 1) % 2; - setWidth(mWidth[old_image_index]); - setHeight(mHeight[old_image_index]); + setSize(mWidth[old_image_index], mHeight[old_image_index]); mFallAnimTimer.start(); } mSnapshotUpToDate = FALSE; @@ -1447,7 +1446,6 @@ void LLFloaterSnapshot::Impl::updateControls(LLFloaterSnapshot* floater) if (previewp) { - lldebugs << "Setting snapshot type (" << shot_type << "), format (" << shot_format << ")" << llendl; previewp->setSnapshotType(shot_type); previewp->setSnapshotFormat(shot_format); previewp->setSnapshotBufferType(layer_type); @@ -1460,6 +1458,7 @@ void LLFloaterSnapshot::Impl::updateControls(LLFloaterSnapshot* floater) info["have-snapshot"] = got_snap; current_panel->updateControls(info); } + lldebugs << "finished updating controls" << llendl; } // static @@ -1696,6 +1695,7 @@ void LLFloaterSnapshot::Impl::setFinished(LLFloaterSnapshot* floater, bool finis } } +// Apply a new resolution selected from the given combobox. // static void LLFloaterSnapshot::Impl::updateResolution(LLUICtrl* ctrl, void* data, BOOL do_update) { @@ -1864,11 +1864,11 @@ BOOL LLFloaterSnapshot::Impl::checkImageSize(LLSnapshotLivePreview* previewp, S3 //change another value proportionally if(isWidthChanged) { - height = (S32)(width / aspect_ratio) ; + height = llround(width / aspect_ratio) ; } else { - width = (S32)(height * aspect_ratio) ; + width = llround(height * aspect_ratio) ; } //bound w/h by the max_value -- cgit v1.2.3 From 6cefa466361e37df8082f86a21a954199fbf14a4 Mon Sep 17 00:00:00 2001 From: Vadim ProductEngine <vsavchuk@productengine.com> Date: Wed, 14 Dec 2011 17:12:40 +0200 Subject: EXP-1635 FIXED Made it clear that inventory snapshots are limited to 512x512 px. --- indra/newview/llfloatersnapshot.cpp | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/indra/newview/llfloatersnapshot.cpp b/indra/newview/llfloatersnapshot.cpp index b7145d43f6..6532a27b9d 100644 --- a/indra/newview/llfloatersnapshot.cpp +++ b/indra/newview/llfloatersnapshot.cpp @@ -832,7 +832,7 @@ BOOL LLSnapshotLivePreview::onIdle( void* snapshot_preview ) previewp->mPreviewImage->getHeight(), previewp->mPreviewImage->getComponents()); - scaled->biasedScaleToPowerOfTwo(512); + scaled->biasedScaleToPowerOfTwo(MAX_TEXTURE_SIZE); previewp->setImageScaled(TRUE); if (formatted->encode(scaled, 0.f)) { @@ -959,7 +959,7 @@ void LLSnapshotLivePreview::saveTexture() mPreviewImage->getHeight(), mPreviewImage->getComponents()); - scaled->biasedScaleToPowerOfTwo(512); + scaled->biasedScaleToPowerOfTwo(MAX_TEXTURE_SIZE); lldebugs << "scaled texture to " << scaled->getWidth() << "x" << scaled->getHeight() << llendl; if (formatted->encode(scaled, 0.0f)) @@ -1738,6 +1738,13 @@ void LLFloaterSnapshot::Impl::updateResolution(LLUICtrl* ctrl, void* data, BOOL lldebugs << "Loading typed res from panel " << spanel->getName() << llendl; new_width = spanel->getTypedPreviewWidth(); new_height = spanel->getTypedPreviewHeight(); + + // Limit custom size for inventory snapshots to 512x512 px. + if (getActiveSnapshotType(view) == LLSnapshotLivePreview::SNAPSHOT_TEXTURE) + { + new_width = llmin(new_width, MAX_TEXTURE_SIZE); + new_height = llmin(new_height, MAX_TEXTURE_SIZE); + } } else { -- cgit v1.2.3 From eb7b43fb558d66eb08b7a06ffdd578bfe94e5eb8 Mon Sep 17 00:00:00 2001 From: Jonathan Yap <none@none> Date: Wed, 14 Dec 2011 13:21:48 -0500 Subject: STORM-1733 Menu entry Release Keys is in Advanced->Shortcuts sub-menu but has no shortcut --- doc/contributions.txt | 1 + indra/newview/skins/default/xui/en/menu_viewer.xml | 24 +++++++++++----------- 2 files changed, 13 insertions(+), 12 deletions(-) diff --git a/doc/contributions.txt b/doc/contributions.txt index 274632a804..203f7d7f9f 100644 --- a/doc/contributions.txt +++ b/doc/contributions.txt @@ -595,6 +595,7 @@ Jonathan Yap STORM-1719 STORM-1712 STORM-1728 + STORM-1733 Kadah Coba STORM-1060 Jondan Lundquist diff --git a/indra/newview/skins/default/xui/en/menu_viewer.xml b/indra/newview/skins/default/xui/en/menu_viewer.xml index 1834be2d48..0aa5c72f2a 100644 --- a/indra/newview/skins/default/xui/en/menu_viewer.xml +++ b/indra/newview/skins/default/xui/en/menu_viewer.xml @@ -1713,7 +1713,17 @@ function="ToggleControl" parameter="MouseSmooth" /> </menu_item_check> - + <menu_item_call + enabled="false" + label="Release Keys" + name="Release Keys"> + <menu_item_call.on_click + function="Tools.ReleaseKeys" + parameter="" /> + <menu_item_call.on_enable + function="Tools.EnableReleaseKeys" + parameter="" /> + </menu_item_call> <menu_item_separator/> <menu @@ -1743,17 +1753,7 @@ function="Floater.Toggle" parameter="search" /> </menu_item_check> - <menu_item_call - enabled="false" - label="Release Keys" - name="Release Keys"> - <menu_item_call.on_click - function="Tools.ReleaseKeys" - parameter="" /> - <menu_item_call.on_enable - function="Tools.EnableReleaseKeys" - parameter="" /> - </menu_item_call> + <!-- This second, alternative shortcut for Show Advanced Menu is for backward compatibility. The main shortcut has been changed so it's Linux-friendly, where the old shortcut is typically eaten by the window manager. --> <menu_item_check label="Show Advanced Menu - legacy shortcut" -- cgit v1.2.3 From fdc223287ce25ffcb8a43936633eac2eac19b728 Mon Sep 17 00:00:00 2001 From: Jonathan Yap <none@none> Date: Wed, 14 Dec 2011 13:58:46 -0500 Subject: STORM-1734 Update contributions.txt with Storm jira number --- doc/contributions.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/contributions.txt b/doc/contributions.txt index 6a99c5787e..d2a73dfd22 100644 --- a/doc/contributions.txt +++ b/doc/contributions.txt @@ -595,7 +595,7 @@ Jonathan Yap STORM-1719 STORM-1712 STORM-1728 - VWR-27832 + STORM-1734 Kadah Coba STORM-1060 Jondan Lundquist -- cgit v1.2.3 From 1e0f11df87b9a612e58d53b5d5617d8112917b56 Mon Sep 17 00:00:00 2001 From: eli <none@none> Date: Wed, 14 Dec 2011 13:52:43 -0800 Subject: sync with viewer-development --- indra/newview/skins/default/xui/en/floater_snapshot.xml | 4 ++-- indra/newview/skins/default/xui/en/panel_postcard_settings.xml | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/indra/newview/skins/default/xui/en/floater_snapshot.xml b/indra/newview/skins/default/xui/en/floater_snapshot.xml index e71b714f25..0c38283d59 100644 --- a/indra/newview/skins/default/xui/en/floater_snapshot.xml +++ b/indra/newview/skins/default/xui/en/floater_snapshot.xml @@ -34,7 +34,7 @@ </string> <string name="profile_succeeded_str"> - Profile feed updated! + Image uploaded </string> <string name="postcard_succeeded_str"> @@ -50,7 +50,7 @@ </string> <string name="profile_failed_str"> - Failed to update your Profile Feed. + Failed to upload image to your Profile Feed. </string> <string name="postcard_failed_str"> diff --git a/indra/newview/skins/default/xui/en/panel_postcard_settings.xml b/indra/newview/skins/default/xui/en/panel_postcard_settings.xml index aebbc51be1..2e0bb88f53 100644 --- a/indra/newview/skins/default/xui/en/panel_postcard_settings.xml +++ b/indra/newview/skins/default/xui/en/panel_postcard_settings.xml @@ -113,11 +113,11 @@ label="Image quality" label_width="80" layout="topleft" - left="10" + left="0" max_val="100" name="image_quality_slider" top_pad="7" - width="200" /> + width="190" /> <text type="string" follows="left|top" -- cgit v1.2.3 From d39b276b3c1b664c9cdec1c3bb06f83ce53476de Mon Sep 17 00:00:00 2001 From: eli <none@none> Date: Wed, 14 Dec 2011 14:38:28 -0800 Subject: FIX VWR-22392 --- indra/newview/skins/default/xui/da/menu_viewer.xml | 1 + indra/newview/skins/default/xui/de/menu_viewer.xml | 1 + indra/newview/skins/default/xui/es/menu_viewer.xml | 1 + indra/newview/skins/default/xui/fr/menu_viewer.xml | 1 + indra/newview/skins/default/xui/it/menu_viewer.xml | 1 + indra/newview/skins/default/xui/ja/menu_viewer.xml | 1 + indra/newview/skins/default/xui/pl/menu_viewer.xml | 1 + indra/newview/skins/default/xui/pt/menu_viewer.xml | 1 + 8 files changed, 8 insertions(+) diff --git a/indra/newview/skins/default/xui/da/menu_viewer.xml b/indra/newview/skins/default/xui/da/menu_viewer.xml index c2f7d26dc9..ba18306686 100644 --- a/indra/newview/skins/default/xui/da/menu_viewer.xml +++ b/indra/newview/skins/default/xui/da/menu_viewer.xml @@ -121,6 +121,7 @@ <menu_item_call label="Model..." name="Upload Model"/> <menu_item_call label="Model Wizard..." name="Upload Model Wizard"/> <menu_item_call label="Mange (L$[COST] pr. fil)..." name="Bulk Upload"/> + <menu_item_call label="Sæt standardværdier for upload rettigheder" name="perm prefs"/> </menu> <menu_item_call label="Fortyd" name="Undo"/> <menu_item_call label="Gendan" name="Redo"/> diff --git a/indra/newview/skins/default/xui/de/menu_viewer.xml b/indra/newview/skins/default/xui/de/menu_viewer.xml index e6135aa100..90b2cfbc41 100644 --- a/indra/newview/skins/default/xui/de/menu_viewer.xml +++ b/indra/newview/skins/default/xui/de/menu_viewer.xml @@ -140,6 +140,7 @@ <menu_item_call label="Animation ([COST] L$)..." name="Upload Animation"/> <menu_item_call label="Modell..." name="Upload Model"/> <menu_item_call label="Mehrfach-Upload ([COST] L$ pro Datei)..." name="Bulk Upload"/> + <menu_item_call label="Hochlade-Berechtigungen (Standard) festlegen" name="perm prefs"/> </menu> <menu_item_call label="Rückgängig" name="Undo"/> <menu_item_call label="Wiederholen" name="Redo"/> diff --git a/indra/newview/skins/default/xui/es/menu_viewer.xml b/indra/newview/skins/default/xui/es/menu_viewer.xml index 0714e7f2c6..f5cc2b9389 100644 --- a/indra/newview/skins/default/xui/es/menu_viewer.xml +++ b/indra/newview/skins/default/xui/es/menu_viewer.xml @@ -140,6 +140,7 @@ <menu_item_call label="Animación ([COST] L$)..." name="Upload Animation"/> <menu_item_call label="Modelo..." name="Upload Model"/> <menu_item_call label="Masivo ([COST] L$ por archivo)..." name="Bulk Upload"/> + <menu_item_call label="Configurar los permisos por defecto de subida" name="perm prefs"/> </menu> <menu_item_call label="Deshacer" name="Undo"/> <menu_item_call label="Rehacer" name="Redo"/> diff --git a/indra/newview/skins/default/xui/fr/menu_viewer.xml b/indra/newview/skins/default/xui/fr/menu_viewer.xml index e2cb1f999d..d3b48639e0 100644 --- a/indra/newview/skins/default/xui/fr/menu_viewer.xml +++ b/indra/newview/skins/default/xui/fr/menu_viewer.xml @@ -140,6 +140,7 @@ <menu_item_call label="Animation ([COST] L$)..." name="Upload Animation"/> <menu_item_call label="Modèle..." name="Upload Model"/> <menu_item_call label="Lot ([COST] L$ par fichier)..." name="Bulk Upload"/> + <menu_item_call label="Définir les droits de chargement par défaut" name="perm prefs"/> </menu> <menu_item_call label="Annuler" name="Undo"/> <menu_item_call label="Refaire" name="Redo"/> diff --git a/indra/newview/skins/default/xui/it/menu_viewer.xml b/indra/newview/skins/default/xui/it/menu_viewer.xml index 815f6f58ed..8792a0fc19 100644 --- a/indra/newview/skins/default/xui/it/menu_viewer.xml +++ b/indra/newview/skins/default/xui/it/menu_viewer.xml @@ -140,6 +140,7 @@ <menu_item_call label="Animazione ([COST] L$)..." name="Upload Animation"/> <menu_item_call label="Modella..." name="Upload Model"/> <menu_item_call label="In blocco ([COST] L$ per file)..." name="Bulk Upload"/> + <menu_item_call label="Definisci diritti di caricamento predefiniti" name="perm prefs"/> </menu> <menu_item_call label="Annulla" name="Undo"/> <menu_item_call label="Ripeti" name="Redo"/> diff --git a/indra/newview/skins/default/xui/ja/menu_viewer.xml b/indra/newview/skins/default/xui/ja/menu_viewer.xml index b9dbb81c0a..125e9bb226 100644 --- a/indra/newview/skins/default/xui/ja/menu_viewer.xml +++ b/indra/newview/skins/default/xui/ja/menu_viewer.xml @@ -140,6 +140,7 @@ <menu_item_call label="アニメーション(L$[COST])..." name="Upload Animation"/> <menu_item_call label="モデル" name="Upload Model"/> <menu_item_call label="一括 (ファイルにつきL$[COST])..." name="Bulk Upload"/> + <menu_item_call label="デフォルトのアップロード権限を設定" name="perm prefs"/> </menu> <menu_item_call label="元に戻す" name="Undo"/> <menu_item_call label="やり直し" name="Redo"/> diff --git a/indra/newview/skins/default/xui/pl/menu_viewer.xml b/indra/newview/skins/default/xui/pl/menu_viewer.xml index fe4662c5a2..c072ea9b5a 100644 --- a/indra/newview/skins/default/xui/pl/menu_viewer.xml +++ b/indra/newview/skins/default/xui/pl/menu_viewer.xml @@ -119,6 +119,7 @@ <menu_item_call label="dźwięk (L$[COST])..." name="Upload Sound"/> <menu_item_call label="animację (L$[COST])..." name="Upload Animation"/> <menu_item_call label="zbiór plików (L$[COST] za jeden plik)..." name="Bulk Upload"/> + <menu_item_call label="Ustaw domyślne pozwolenia ładowania" name="perm prefs"/> </menu> <menu_item_call label="Cofnij" name="Undo"/> <menu_item_call label="Ponów" name="Redo"/> diff --git a/indra/newview/skins/default/xui/pt/menu_viewer.xml b/indra/newview/skins/default/xui/pt/menu_viewer.xml index 9b5711d402..4ee9623965 100644 --- a/indra/newview/skins/default/xui/pt/menu_viewer.xml +++ b/indra/newview/skins/default/xui/pt/menu_viewer.xml @@ -140,6 +140,7 @@ <menu_item_call label="Animação (L$[COST])..." name="Upload Animation"/> <menu_item_call label="Modelar..." name="Upload Model"/> <menu_item_call label="Volume (L$[COST] por arquivo)..." name="Bulk Upload"/> + <menu_item_call label="Autorizações de upload padrão" name="perm prefs"/> </menu> <menu_item_call label="Desfazer" name="Undo"/> <menu_item_call label="Repetir" name="Redo"/> -- cgit v1.2.3 From 821c964230ffc17ebf94f2d6af31eed226110267 Mon Sep 17 00:00:00 2001 From: Jonathan Yap <none@none> Date: Wed, 14 Dec 2011 17:44:10 -0500 Subject: STORM-1736 Cropped buttons in the bottom of the Ad-hoc floater --- doc/contributions.txt | 1 + indra/newview/skins/default/xui/en/floater_im_session.xml | 2 +- indra/newview/skins/default/xui/en/panel_adhoc_control_panel.xml | 6 +++--- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/doc/contributions.txt b/doc/contributions.txt index 274632a804..12eeab0628 100644 --- a/doc/contributions.txt +++ b/doc/contributions.txt @@ -595,6 +595,7 @@ Jonathan Yap STORM-1719 STORM-1712 STORM-1728 + STORM-1736 Kadah Coba STORM-1060 Jondan Lundquist diff --git a/indra/newview/skins/default/xui/en/floater_im_session.xml b/indra/newview/skins/default/xui/en/floater_im_session.xml index 5fe8f3c114..a2739a8339 100644 --- a/indra/newview/skins/default/xui/en/floater_im_session.xml +++ b/indra/newview/skins/default/xui/en/floater_im_session.xml @@ -3,7 +3,7 @@ legacy_header_height="18" background_visible="true" default_tab_group="1" - height="350" + height="355" help_topic="floater_im_box" layout="topleft" name="panel_im" diff --git a/indra/newview/skins/default/xui/en/panel_adhoc_control_panel.xml b/indra/newview/skins/default/xui/en/panel_adhoc_control_panel.xml index e70abc0975..93cafd4a53 100644 --- a/indra/newview/skins/default/xui/en/panel_adhoc_control_panel.xml +++ b/indra/newview/skins/default/xui/en/panel_adhoc_control_panel.xml @@ -58,7 +58,7 @@ label="Call" name="call_btn" width="130" - top="5" /> + top="0" /> </layout_panel> <layout_panel auto_resize="false" @@ -75,7 +75,7 @@ height="20" label="Leave Call" name="end_call_btn" - top="5"/> + top="0"/> </layout_panel> <layout_panel auto_resize="false" @@ -92,7 +92,7 @@ height="20" label="Voice Controls" name="voice_ctrls_btn" - top="5" + top="0" use_ellipses="true" /> </layout_panel> </layout_stack> -- cgit v1.2.3 From 190b9985c6eee3b515f1bfa0fef28478f3d3ad46 Mon Sep 17 00:00:00 2001 From: eli <none@none> Date: Wed, 14 Dec 2011 14:57:34 -0800 Subject: FIX VWR-22449 --- indra/newview/skins/default/xui/es/floater_buy_land.xml | 2 +- indra/newview/skins/default/xui/es/panel_region_estate.xml | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/indra/newview/skins/default/xui/es/floater_buy_land.xml b/indra/newview/skins/default/xui/es/floater_buy_land.xml index 9d33b69de9..005fe90318 100644 --- a/indra/newview/skins/default/xui/es/floater_buy_land.xml +++ b/indra/newview/skins/default/xui/es/floater_buy_land.xml @@ -160,7 +160,7 @@ para cubrir esta parcela. Podrá o no unirse o dividirse. </text> <text name="covenant_text"> - Debes aceptar el Contrato del Estado: + Debes aceptar el Contrato del estado: </text> <text left="470" name="covenant_timestamp_text"/> <text_editor name="covenant_editor"> diff --git a/indra/newview/skins/default/xui/es/panel_region_estate.xml b/indra/newview/skins/default/xui/es/panel_region_estate.xml index c51c3815d1..3d0de4f083 100644 --- a/indra/newview/skins/default/xui/es/panel_region_estate.xml +++ b/indra/newview/skins/default/xui/es/panel_region_estate.xml @@ -10,7 +10,7 @@ (desconocido) </text> <text name="owner_text"> - Propietario del Estado: + Propietario del estado: </text> <text name="estate_owner"> (desconocido) @@ -39,7 +39,7 @@ </string> <button label="?" name="abuse_email_address_help"/> <button label="Aplicar" name="apply_btn"/> - <button label="Expulsar a un Residente del Estado..." name="kick_user_from_estate_btn"/> + <button label="Expulsar a un Residente del estado..." name="kick_user_from_estate_btn"/> <button label="Enviar un mensaje al estado..." name="message_estate_btn"/> <text name="estate_manager_label"> Administradores del estado: -- cgit v1.2.3 From 0c5c88ff674d59a46712a7313a1b5a00d225326d Mon Sep 17 00:00:00 2001 From: eli <none@none> Date: Wed, 14 Dec 2011 15:18:59 -0800 Subject: FIX VWR-23635 --- indra/newview/skins/default/xui/pt/inspect_avatar.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/indra/newview/skins/default/xui/pt/inspect_avatar.xml b/indra/newview/skins/default/xui/pt/inspect_avatar.xml index a199c58c15..19244d9b27 100644 --- a/indra/newview/skins/default/xui/pt/inspect_avatar.xml +++ b/indra/newview/skins/default/xui/pt/inspect_avatar.xml @@ -5,10 +5,10 @@ --> <floater name="inspect_avatar"> <string name="Subtitle"> - [IDADE] + [AGE] </string> <string name="Details"> - [PERFIL_SL] + [SL_PROFILE] </string> <text name="user_details"> This is my second life description and I really think it is great. But for some reason my description is super extra long because I like to talk a whole lot -- cgit v1.2.3 From 6d520dcc1c92118a96f3968dd5ae8114ca282bce Mon Sep 17 00:00:00 2001 From: eli <none@none> Date: Wed, 14 Dec 2011 16:54:21 -0800 Subject: WIP VWR-23642 --- indra/newview/skins/default/xui/pt/menu_viewer.xml | 8 ++++---- indra/newview/skins/default/xui/pt/strings.xml | 6 +++--- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/indra/newview/skins/default/xui/pt/menu_viewer.xml b/indra/newview/skins/default/xui/pt/menu_viewer.xml index 4ee9623965..5ff2d49ac1 100644 --- a/indra/newview/skins/default/xui/pt/menu_viewer.xml +++ b/indra/newview/skins/default/xui/pt/menu_viewer.xml @@ -96,7 +96,7 @@ </menu> <menu_item_call label="Link" name="Link"/> <menu_item_call label="Desconectar links" name="Unlink"/> - <menu_item_check label="Edit Linked Parts" name="Edit Linked Parts"/> + <menu_item_check label="Editar partes linkadas" name="Edit Linked Parts"/> <menu label="Selecionar partes conectadas" name="Select Linked Parts"> <menu_item_call label="Selecionar próxima parte" name="Select Next Part"/> <menu_item_call label="Selecionar parte anterior" name="Select Previous Part"/> @@ -110,7 +110,7 @@ <menu_item_call label="Pegar" name="Menu Object Take"/> <menu_item_call label="Pegar uma cópia" name="Take Copy"/> <menu_item_call label="Salvar no meu inventário" name="Save Object Back to My Inventory"/> - <menu_item_call label="Save Back to Object Contents" name="Save Object Back to Object Contents"/> + <menu_item_call label="Salvar objeto de volta aos conteúdos do objeto" name="Save Object Back to Object Contents"/> <menu_item_call label="Devolver objeto" name="Return Object back to Owner"/> </menu> <menu label="Scripts" name="Scripts"> @@ -166,7 +166,7 @@ </menu> <menu label="Realces e visibilidade" name="Highlighting and Visibility"> <menu_item_check label="Efeito baliza piscando" name="Cheesy Beacon"/> - <menu_item_check label="Hide Particles" name="Hide Particles"/> + <menu_item_check label="Esconder partículas" name="Hide Particles"/> <menu_item_check label="Ocultar seleções" name="Hide Selected"/> <menu_item_check label="Realçar transparentes" name="Highlight Transparent"/> <menu_item_check label="Mostrar anexos HUD" name="Show HUD Attachments"/> @@ -184,7 +184,7 @@ <menu_item_check label="Volume" name="Volume"/> <menu_item_check label="Grama" name="Grass"/> <menu_item_check label="Nuvens" name="Clouds"/> - <menu_item_check label="Particles" name="Particles"/> + <menu_item_check label="Partículas" name="Particles"/> <menu_item_check label="Elevação" name="Bump"/> </menu> <menu label="Recursos de renderização" name="Rendering Features"> diff --git a/indra/newview/skins/default/xui/pt/strings.xml b/indra/newview/skins/default/xui/pt/strings.xml index 4535c7aaeb..6b4835e819 100644 --- a/indra/newview/skins/default/xui/pt/strings.xml +++ b/indra/newview/skins/default/xui/pt/strings.xml @@ -3886,16 +3886,16 @@ If you continue to receive this message, contact the [SUPPORT_SITE]. [NAME] lhe pagou L$ [AMOUNT] </string> <string name="you_paid_ldollars"> - You pagou L$[AMOUNT] por [REASON] a [NAME]. + Você pagou L$[AMOUNT] por [REASON] a [NAME]. </string> <string name="you_paid_ldollars_no_info"> Você acaba de pagar L$[AMOUNT]. </string> <string name="you_paid_ldollars_no_reason"> - You pagou L$[AMOUNT] a [NAME]. + Você pagou L$[AMOUNT] a [NAME]. </string> <string name="you_paid_ldollars_no_name"> - You pagou L$[AMOUNT] por [REASON]. + Você pagou L$[AMOUNT] por [REASON]. </string> <string name="for item"> por [ITEM] -- cgit v1.2.3 From a94a923240ba6e9928010432e1e815ea69edd6b7 Mon Sep 17 00:00:00 2001 From: Alissa Sabre <none@none> Date: Thu, 15 Dec 2011 15:19:50 -0500 Subject: storm-1723: fix character display when a lot of different characters are used --- doc/contributions.txt | 1 + indra/llrender/llfontgl.cpp | 12 ++++++++++++ 2 files changed, 13 insertions(+) diff --git a/doc/contributions.txt b/doc/contributions.txt index 274632a804..d7d1ab6a70 100644 --- a/doc/contributions.txt +++ b/doc/contributions.txt @@ -159,6 +159,7 @@ Alissa Sabre VWR-12620 VWR-12789 SNOW-322 + STORM-1723 Alliez Mysterio Angus Boyd VWR-592 diff --git a/indra/llrender/llfontgl.cpp b/indra/llrender/llfontgl.cpp index 607473d416..82e8227ffe 100644 --- a/indra/llrender/llfontgl.cpp +++ b/indra/llrender/llfontgl.cpp @@ -304,6 +304,18 @@ S32 LLFontGL::render(const LLWString &wstr, S32 begin_offset, F32 x, F32 y, cons S32 next_bitmap_num = fgi->mBitmapNum; if (next_bitmap_num != bitmap_num) { + // Actually draw the queued glyphs before switching their texture; + // otherwise the queued glyphs will be taken from wrong textures. + if (glyph_count > 0) + { + gGL.begin(LLRender::QUADS); + { + gGL.vertexBatchPreTransformed(vertices, uvs, colors, glyph_count * 4); + } + gGL.end(); + glyph_count = 0; + } + bitmap_num = next_bitmap_num; LLImageGL *font_image = font_bitmap_cache->getImageGL(bitmap_num); gGL.getTexUnit(0)->bind(font_image); -- cgit v1.2.3 From efec138037d7271effd89536d824bec270985909 Mon Sep 17 00:00:00 2001 From: Xiaohong Bao <bao@lindenlab.com> Date: Thu, 15 Dec 2011 21:39:48 -0700 Subject: fix for SH-2738 and SH-2777, might also help SH-2723: heap corruption SH-2738: Texture fetching freezes due to LLcurl SH-2777: viewer crashed on logout in LLCurl::Easy::releaseEasyHandle --- indra/llcommon/llthread.h | 7 ++++-- indra/llmessage/llcurl.cpp | 63 ++++++++++++++++++++++++++++------------------ indra/llmessage/llcurl.h | 2 ++ 3 files changed, 45 insertions(+), 27 deletions(-) diff --git a/indra/llcommon/llthread.h b/indra/llcommon/llthread.h index 40291a2569..f0e0de6173 100644 --- a/indra/llcommon/llthread.h +++ b/indra/llcommon/llthread.h @@ -187,11 +187,14 @@ public: LLMutexLock(LLMutex* mutex) { mMutex = mutex; - mMutex->lock(); + + if(mMutex) + mMutex->lock(); } ~LLMutexLock() { - mMutex->unlock(); + if(mMutex) + mMutex->unlock(); } private: LLMutex* mMutex; diff --git a/indra/llmessage/llcurl.cpp b/indra/llmessage/llcurl.cpp index 7ca25d07fc..d86bf7a0a1 100644 --- a/indra/llmessage/llcurl.cpp +++ b/indra/llmessage/llcurl.cpp @@ -219,11 +219,15 @@ namespace boost std::set<CURL*> LLCurl::Easy::sFreeHandles; std::set<CURL*> LLCurl::Easy::sActiveHandles; +LLMutex* LLCurl::Easy::sHandleMutexp = NULL ; //static CURL* LLCurl::Easy::allocEasyHandle() { CURL* ret = NULL; + + LLMutexLock lock(sHandleMutexp) ; + if (sFreeHandles.empty()) { ret = curl_easy_init(); @@ -251,6 +255,7 @@ void LLCurl::Easy::releaseEasyHandle(CURL* handle) llerrs << "handle cannot be NULL!" << llendl; } + LLMutexLock lock(sHandleMutexp) ; if (sActiveHandles.find(handle) != sActiveHandles.end()) { sActiveHandles.erase(handle); @@ -519,7 +524,8 @@ LLCurl::Multi::Multi() mState(STATE_READY), mDead(FALSE), mMutexp(NULL), - mDeletionMutexp(NULL) + mDeletionMutexp(NULL), + mEasyMutexp(NULL) { mCurlMultiHandle = curl_multi_init(); if (!mCurlMultiHandle) @@ -534,6 +540,7 @@ LLCurl::Multi::Multi() { mMutexp = new LLMutex(NULL) ; mDeletionMutexp = new LLMutex(NULL) ; + mEasyMutexp = new LLMutex(NULL) ; } LLCurl::getCurlThread()->addMulti(this) ; @@ -563,6 +570,8 @@ LLCurl::Multi::~Multi() mMutexp = NULL ; delete mDeletionMutexp ; mDeletionMutexp = NULL ; + delete mEasyMutexp ; + mEasyMutexp = NULL ; --gCurlMultiCount; } @@ -585,17 +594,9 @@ void LLCurl::Multi::unlock() void LLCurl::Multi::markDead() { - if(mDeletionMutexp) - { - mDeletionMutexp->lock() ; - } - + LLMutexLock lock(mDeletionMutexp) ; + mDead = TRUE ; - - if(mDeletionMutexp) - { - mDeletionMutexp->unlock() ; - } } void LLCurl::Multi::setState(LLCurl::Multi::ePerformState state) @@ -655,10 +656,8 @@ CURLMsg* LLCurl::Multi::info_read(S32* msgs_in_queue) //return true if dead bool LLCurl::Multi::doPerform() { - if(mDeletionMutexp) - { - mDeletionMutexp->lock() ; - } + LLMutexLock lock(mDeletionMutexp) ; + bool dead = mDead ; if(mDead) @@ -675,6 +674,7 @@ bool LLCurl::Multi::doPerform() call_count < MULTI_PERFORM_CALL_REPEAT; call_count++) { + LLMutexLock lock(mMutexp) ; CURLMcode code = curl_multi_perform(mCurlMultiHandle, &q); if (CURLM_CALL_MULTI_PERFORM != code || q == 0) { @@ -688,11 +688,6 @@ bool LLCurl::Multi::doPerform() setState(STATE_COMPLETED) ; } - if(mDeletionMutexp) - { - mDeletionMutexp->unlock() ; - } - return dead ; } @@ -743,19 +738,21 @@ S32 LLCurl::Multi::process() LLCurl::Easy* LLCurl::Multi::allocEasy() { - Easy* easy = 0; + Easy* easy = 0; if (mEasyFreeList.empty()) - { + { easy = Easy::getEasy(); } else { + LLMutexLock lock(mEasyMutexp) ; easy = *(mEasyFreeList.begin()); mEasyFreeList.erase(easy); } if (easy) { + LLMutexLock lock(mEasyMutexp) ; mEasyActiveList.insert(easy); mEasyActiveMap[easy->getCurlHandle()] = easy; } @@ -764,6 +761,7 @@ LLCurl::Easy* LLCurl::Multi::allocEasy() bool LLCurl::Multi::addEasy(Easy* easy) { + LLMutexLock lock(mMutexp) ; CURLMcode mcode = curl_multi_add_handle(mCurlMultiHandle, easy->getCurlHandle()); check_curl_multi_code(mcode); //if (mcode != CURLM_OK) @@ -776,22 +774,30 @@ bool LLCurl::Multi::addEasy(Easy* easy) void LLCurl::Multi::easyFree(Easy* easy) { + mEasyMutexp->lock() ; mEasyActiveList.erase(easy); mEasyActiveMap.erase(easy->getCurlHandle()); + if (mEasyFreeList.size() < EASY_HANDLE_POOL_SIZE) - { - easy->resetState(); + { mEasyFreeList.insert(easy); + mEasyMutexp->unlock() ; + + easy->resetState(); } else { + mEasyMutexp->unlock() ; delete easy; } } void LLCurl::Multi::removeEasy(Easy* easy) { - check_curl_multi_code(curl_multi_remove_handle(mCurlMultiHandle, easy->getCurlHandle())); + { + LLMutexLock lock(mMutexp) ; + check_curl_multi_code(curl_multi_remove_handle(mCurlMultiHandle, easy->getCurlHandle())); + } easyFree(easy); } @@ -1290,6 +1296,10 @@ void LLCurl::initClass(bool multi_threaded) #endif sCurlThread = new LLCurlThread(multi_threaded) ; + if(multi_threaded) + { + Easy::sHandleMutexp = new LLMutex(NULL) ; + } } void LLCurl::cleanupClass() @@ -1319,6 +1329,9 @@ void LLCurl::cleanupClass() Easy::sFreeHandles.clear(); + delete Easy::sHandleMutexp ; + Easy::sHandleMutexp = NULL ; + llassert(Easy::sActiveHandles.empty()); } diff --git a/indra/llmessage/llcurl.h b/indra/llmessage/llcurl.h index a275db3e53..5d54b5fe12 100644 --- a/indra/llmessage/llcurl.h +++ b/indra/llmessage/llcurl.h @@ -253,6 +253,7 @@ private: static std::set<CURL*> sFreeHandles; static std::set<CURL*> sActiveHandles; + static LLMutex* sHandleMutexp ; }; class LLCurl::Multi @@ -316,6 +317,7 @@ private: BOOL mDead ; LLMutex* mMutexp ; LLMutex* mDeletionMutexp ; + LLMutex* mEasyMutexp ; }; class LLCurlThread : public LLQueuedThread -- cgit v1.2.3 From 16b6a472477bd389771fe4022e425f77ca85c2bd Mon Sep 17 00:00:00 2001 From: Leslie Linden <leslie@lindenlab.com> Date: Fri, 16 Dec 2011 15:07:04 -0800 Subject: EXP-1742 FIX -- Clicking IM notification or receiving multiple IM notifications in quick succession crashes to desktop * Moved toast logic for mouse hover out of the draw call to avoid chain of callbacks that lead to reordering of the draw list while we are iterating over it. --- indra/newview/llappviewer.cpp | 2 + indra/newview/lltoast.cpp | 146 ++++++++++++++++++++++++------------------ indra/newview/lltoast.h | 8 ++- 3 files changed, 89 insertions(+), 67 deletions(-) diff --git a/indra/newview/llappviewer.cpp b/indra/newview/llappviewer.cpp index b45f9c55fb..0861fe85a8 100644 --- a/indra/newview/llappviewer.cpp +++ b/indra/newview/llappviewer.cpp @@ -75,6 +75,7 @@ //#include "llfirstuse.h" #include "llrender.h" #include "llteleporthistory.h" +#include "lltoast.h" #include "lllocationhistory.h" #include "llfasttimerview.h" #include "llvector4a.h" @@ -4051,6 +4052,7 @@ void LLAppViewer::idle() LLFrameTimer::updateFrameTime(); LLFrameTimer::updateFrameCount(); LLEventTimer::updateClass(); + LLNotificationsUI::LLToast::updateClass(); LLCriticalDamp::updateInterpolants(); LLMortician::updateClass(); LLFilePickerThread::clearDead(); //calls LLFilePickerThread::notify() diff --git a/indra/newview/lltoast.cpp b/indra/newview/lltoast.cpp index c4b226b70b..da691a2d0c 100644 --- a/indra/newview/lltoast.cpp +++ b/indra/newview/lltoast.cpp @@ -140,7 +140,9 @@ LLToast::LLToast(const LLToast::Params& p) // init callbacks if present if(!p.on_delete_toast().empty()) + { mOnDeleteToastSignal.connect(p.on_delete_toast()); + } } void LLToast::reshape(S32 width, S32 height, BOOL called_from_parent) @@ -236,7 +238,9 @@ void LLToast::setCanFade(bool can_fade) { mCanFade = can_fade; if(!mCanFade) + { mTimer->stop(); + } } //-------------------------------------------------------------------------- @@ -328,55 +332,6 @@ void LLToast::draw() drawChild(mHideBtn); } } - - updateHoveredState(); - - LLToastLifeTimer* timer = getTimer(); - if (!timer) - { - return; - } - - // Started timer means the mouse had left the toast previously. - // If toast is hovered in the current frame we should handle - // a mouse enter event. - if(timer->getStarted() && mIsHovered) - { - mOnToastHoverSignal(this, MOUSE_ENTER); - - updateTransparency(); - - //toasts fading is management by Screen Channel - - sendChildToFront(mHideBtn); - if(mHideBtn && mHideBtn->getEnabled()) - { - mHideBtn->setVisible(TRUE); - } - mToastMouseEnterSignal(this, getValue()); - } - // Stopped timer means the mouse had entered the toast previously. - // If the toast is not hovered in the current frame we should handle - // a mouse leave event. - else if(!timer->getStarted() && !mIsHovered) - { - mOnToastHoverSignal(this, MOUSE_LEAVE); - - updateTransparency(); - - //toasts fading is management by Screen Channel - - if(mHideBtn && mHideBtn->getEnabled()) - { - if( mHideBtnPressed ) - { - mHideBtnPressed = false; - return; - } - mHideBtn->setVisible(FALSE); - } - mToastMouseLeaveSignal(this, getValue()); - } } //-------------------------------------------------------------------------- @@ -440,28 +395,80 @@ void LLToast::updateHoveredState() { // mouse is not over this toast mIsHovered = false; - return; } + else + { + bool is_overlapped_by_other_floater = false; - bool is_overlapped_by_other_floater = false; - - const child_list_t* child_list = gFloaterView->getChildList(); + const child_list_t* child_list = gFloaterView->getChildList(); - // find this toast in gFloaterView child list to check whether any floater - // with higher Z-order is visible under the mouse pointer overlapping this toast - child_list_const_reverse_iter_t r_iter = std::find(child_list->rbegin(), child_list->rend(), this); - if (r_iter != child_list->rend()) - { - // skip this toast and proceed to views above in Z-order - for (++r_iter; r_iter != child_list->rend(); ++r_iter) + // find this toast in gFloaterView child list to check whether any floater + // with higher Z-order is visible under the mouse pointer overlapping this toast + child_list_const_reverse_iter_t r_iter = std::find(child_list->rbegin(), child_list->rend(), this); + if (r_iter != child_list->rend()) { - LLView* view = *r_iter; - is_overlapped_by_other_floater = view->isInVisibleChain() && view->calcScreenRect().pointInRect(x, y); - if (is_overlapped_by_other_floater) break; + // skip this toast and proceed to views above in Z-order + for (++r_iter; r_iter != child_list->rend(); ++r_iter) + { + LLView* view = *r_iter; + is_overlapped_by_other_floater = view->isInVisibleChain() && view->calcScreenRect().pointInRect(x, y); + if (is_overlapped_by_other_floater) + { + break; + } + } } + + mIsHovered = !is_overlapped_by_other_floater; } - mIsHovered = !is_overlapped_by_other_floater; + LLToastLifeTimer* timer = getTimer(); + + if (timer) + { + // Started timer means the mouse had left the toast previously. + // If toast is hovered in the current frame we should handle + // a mouse enter event. + if(timer->getStarted() && mIsHovered) + { + mOnToastHoverSignal(this, MOUSE_ENTER); + + updateTransparency(); + + //toasts fading is management by Screen Channel + + sendChildToFront(mHideBtn); + if(mHideBtn && mHideBtn->getEnabled()) + { + mHideBtn->setVisible(TRUE); + } + + mToastMouseEnterSignal(this, getValue()); + } + // Stopped timer means the mouse had entered the toast previously. + // If the toast is not hovered in the current frame we should handle + // a mouse leave event. + else if(!timer->getStarted() && !mIsHovered) + { + mOnToastHoverSignal(this, MOUSE_LEAVE); + + updateTransparency(); + + //toasts fading is management by Screen Channel + + if(mHideBtn && mHideBtn->getEnabled()) + { + if( mHideBtnPressed ) + { + mHideBtnPressed = false; + return; + } + mHideBtn->setVisible(FALSE); + } + + mToastMouseLeaveSignal(this, getValue()); + } + } } void LLToast::setBackgroundOpaque(BOOL b) @@ -553,3 +560,14 @@ S32 LLToast::notifyParent(const LLSD& info) return LLModalDialog::notifyParent(info); } + +//static +void LLToast::updateClass() +{ + for (LLInstanceTracker<LLToast>::instance_iter iter = LLInstanceTracker<LLToast>::beginInstances(); iter != LLInstanceTracker<LLToast>::endInstances(); ) + { + LLToast& toast = *iter++; + + toast.updateHoveredState(); + } +} diff --git a/indra/newview/lltoast.h b/indra/newview/lltoast.h index 77229e7beb..0b06728935 100644 --- a/indra/newview/lltoast.h +++ b/indra/newview/lltoast.h @@ -27,7 +27,7 @@ #ifndef LL_LLTOAST_H #define LL_LLTOAST_H - +#include "llinstancetracker.h" #include "llpanel.h" #include "llmodaldialog.h" #include "lleventtimer.h" @@ -69,7 +69,7 @@ private : * Represents toast pop-up. * This is a parent view for all toast panels. */ -class LLToast : public LLModalDialog +class LLToast : public LLModalDialog, public LLInstanceTracker<LLToast> { friend class LLToastLifeTimer; public: @@ -102,6 +102,8 @@ public: Params(); }; + + static void updateClass(); LLToast(const LLToast::Params& p); virtual ~LLToast(); @@ -221,7 +223,7 @@ private: F32 mToastLifetime; // in seconds F32 mToastFadingTime; // in seconds - + LLPanel* mPanel; LLButton* mHideBtn; -- cgit v1.2.3 From 399bd5643cdec65b98b76556b16e3a00df6db1b2 Mon Sep 17 00:00:00 2001 From: Jonathan Yap <none@none> Date: Sat, 17 Dec 2011 13:27:20 -0500 Subject: STORM-653 As a user i would like to be able to see the available number of attachments and remaining free slots. --- doc/contributions.txt | 1 + indra/newview/llcofwearables.cpp | 14 ++++++++++++++ indra/newview/llcofwearables.h | 2 ++ indra/newview/skins/default/xui/en/panel_cof_wearables.xml | 1 + indra/newview/skins/default/xui/en/strings.xml | 1 + 5 files changed, 19 insertions(+) diff --git a/doc/contributions.txt b/doc/contributions.txt index 274632a804..24743777f7 100644 --- a/doc/contributions.txt +++ b/doc/contributions.txt @@ -595,6 +595,7 @@ Jonathan Yap STORM-1719 STORM-1712 STORM-1728 + STORM-653 Kadah Coba STORM-1060 Jondan Lundquist diff --git a/indra/newview/llcofwearables.cpp b/indra/newview/llcofwearables.cpp index 54598f90c8..e9c7a3fa03 100644 --- a/indra/newview/llcofwearables.cpp +++ b/indra/newview/llcofwearables.cpp @@ -328,6 +328,19 @@ BOOL LLCOFWearables::postBuild() return LLPanel::postBuild(); } +void LLCOFWearables::setAttachmentsTitle() +{ + if (mAttachmentsTab) + { + U32 free_slots = MAX_AGENT_ATTACHMENTS - mAttachments->size(); + + LLStringUtil::format_map_t args_attachments; + args_attachments["[COUNT]"] = llformat ("%d", free_slots); + std::string attachments_title = LLTrans::getString("Attachments remain", args_attachments); + mAttachmentsTab->setTitle(attachments_title); + } +} + void LLCOFWearables::onSelectionChange(LLFlatListView* selected_list) { if (!selected_list) return; @@ -490,6 +503,7 @@ void LLCOFWearables::populateAttachmentsAndBodypartsLists(const LLInventoryModel { mAttachments->sort(); mAttachments->notify(REARRANGE); //notifying the parent about the list's size change (cause items were added with rearrange=false) + setAttachmentsTitle(); } else { diff --git a/indra/newview/llcofwearables.h b/indra/newview/llcofwearables.h index 1f8d6d0c94..9957d6a64e 100644 --- a/indra/newview/llcofwearables.h +++ b/indra/newview/llcofwearables.h @@ -91,6 +91,8 @@ public: */ void selectClothing(LLWearableType::EType clothing_type); + void setAttachmentsTitle(); + protected: void populateAttachmentsAndBodypartsLists(const LLInventoryModel::item_array_t& cof_items); diff --git a/indra/newview/skins/default/xui/en/panel_cof_wearables.xml b/indra/newview/skins/default/xui/en/panel_cof_wearables.xml index beea53437a..aa8e3d07a6 100644 --- a/indra/newview/skins/default/xui/en/panel_cof_wearables.xml +++ b/indra/newview/skins/default/xui/en/panel_cof_wearables.xml @@ -37,6 +37,7 @@ top="0" width="311" /> </accordion_tab> + <!-- The Attachments title is overwritten by the definition of "Attachments remain" in strings.xml --> <accordion_tab layout="topleft" name="tab_attachments" diff --git a/indra/newview/skins/default/xui/en/strings.xml b/indra/newview/skins/default/xui/en/strings.xml index c25d1f57d6..30697278c3 100644 --- a/indra/newview/skins/default/xui/en/strings.xml +++ b/indra/newview/skins/default/xui/en/strings.xml @@ -2133,6 +2133,7 @@ Returns a string with the requested data about the region <string name="InvFolder All">All</string> <string name="no_attachments">No attachments worn</string> + <string name="Attachments remain">Attachments ([COUNT] slots remain)</string> <!-- inventory FVBridge --> <!-- This is used in llpanelinventory.cpp when constructing a context menu for an item for Sale --> -- cgit v1.2.3 From 5226629883b20dcf105f78c5633124d1f57fd399 Mon Sep 17 00:00:00 2001 From: Jonathan Yap <none@none> Date: Sun, 18 Dec 2011 10:29:05 -0500 Subject: STORM-1737 panel_edit_skin.xml uses confusing historical terminology --- doc/contributions.txt | 1 + indra/newview/llpaneleditwearable.cpp | 6 +++--- indra/newview/skins/default/xui/en/panel_edit_skin.xml | 12 ++++++------ 3 files changed, 10 insertions(+), 9 deletions(-) diff --git a/doc/contributions.txt b/doc/contributions.txt index 274632a804..69a9cfd37b 100644 --- a/doc/contributions.txt +++ b/doc/contributions.txt @@ -595,6 +595,7 @@ Jonathan Yap STORM-1719 STORM-1712 STORM-1728 + STORM-1737 Kadah Coba STORM-1060 Jondan Lundquist diff --git a/indra/newview/llpaneleditwearable.cpp b/indra/newview/llpaneleditwearable.cpp index b73d97e4c4..03404e816b 100644 --- a/indra/newview/llpaneleditwearable.cpp +++ b/indra/newview/llpaneleditwearable.cpp @@ -356,9 +356,9 @@ LLEditWearableDictionary::ColorSwatchCtrls::ColorSwatchCtrls() LLEditWearableDictionary::TextureCtrls::TextureCtrls() { - addEntry ( TEX_HEAD_BODYPAINT, new PickerControlEntry (TEX_HEAD_BODYPAINT, "Head Tattoos", LLUUID::null, TRUE )); - addEntry ( TEX_UPPER_BODYPAINT, new PickerControlEntry (TEX_UPPER_BODYPAINT, "Upper Tattoos", LLUUID::null, TRUE )); - addEntry ( TEX_LOWER_BODYPAINT, new PickerControlEntry (TEX_LOWER_BODYPAINT, "Lower Tattoos", LLUUID::null, TRUE )); + addEntry ( TEX_HEAD_BODYPAINT, new PickerControlEntry (TEX_HEAD_BODYPAINT, "Head", LLUUID::null, TRUE )); + addEntry ( TEX_UPPER_BODYPAINT, new PickerControlEntry (TEX_UPPER_BODYPAINT, "Upper Body", LLUUID::null, TRUE )); + addEntry ( TEX_LOWER_BODYPAINT, new PickerControlEntry (TEX_LOWER_BODYPAINT, "Lower Body", LLUUID::null, TRUE )); addEntry ( TEX_HAIR, new PickerControlEntry (TEX_HAIR, "Texture", LLUUID( gSavedSettings.getString( "UIImgDefaultHairUUID" ) ), FALSE )); addEntry ( TEX_EYES_IRIS, new PickerControlEntry (TEX_EYES_IRIS, "Iris", LLUUID( gSavedSettings.getString( "UIImgDefaultEyesUUID" ) ), FALSE )); addEntry ( TEX_UPPER_SHIRT, new PickerControlEntry (TEX_UPPER_SHIRT, "Fabric", LLUUID( gSavedSettings.getString( "UIImgDefaultShirtUUID" ) ), FALSE )); diff --git a/indra/newview/skins/default/xui/en/panel_edit_skin.xml b/indra/newview/skins/default/xui/en/panel_edit_skin.xml index 45591ba2ad..b61f65a3d1 100644 --- a/indra/newview/skins/default/xui/en/panel_edit_skin.xml +++ b/indra/newview/skins/default/xui/en/panel_edit_skin.xml @@ -27,10 +27,10 @@ default_image_name="Default" follows="left|top" height="80" - label="Head Tattoos" + label="Head" layout="topleft" left="25" - name="Head Tattoos" + name="Head" tool_tip="Click to choose a picture" top="10" width="74" > @@ -43,10 +43,10 @@ default_image_name="Default" follows="left|top" height="80" - label="Upper Tattoos" + label="Upper body" layout="topleft" left_pad="20" - name="Upper Tattoos" + name="Upper Body" tool_tip="Click to choose a picture" top="10" width="74" > @@ -59,10 +59,10 @@ default_image_name="Default" follows="left|top" height="80" - label="Lower Tattoos" + label="Lower body" layout="topleft" left_pad="20" - name="Lower Tattoos" + name="Lower Body" tool_tip="Click to choose a picture" top="10" width="74" > -- cgit v1.2.3 From 4c8d00d1d368df2d34d6e7ac9732820a56e21999 Mon Sep 17 00:00:00 2001 From: Oz Linden <oz@lindenlab.com> Date: Mon, 19 Dec 2011 15:25:39 -0500 Subject: update build params for oz viewer-trial build --- BuildParams | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/BuildParams b/BuildParams index 3f5d6f8c6b..c051397853 100644 --- a/BuildParams +++ b/BuildParams @@ -145,6 +145,17 @@ oz_viewer-devreview.codeticket_add_context = false oz_viewer-devreview.build_enforce_coding_policy = true oz_viewer-devreview.email = oz@lindenlab.com +oz_viewer-trial.build_debug_release_separately = true +oz_viewer-trial.codeticket_add_context = false +oz_viewer-trial.build_enforce_coding_policy = true +oz_viewer-trial.email = oz@lindenlab.com + +oz_viewer-beta-review.build_debug_release_separately = true +oz_viewer-beta-review.codeticket_add_context = false +oz_viewer-beta-review.viewer_channel = "Second Life Beta Viewer" +oz_viewer-beta-review.login_channel = "Second Life Beta Viewer" +oz_viewer-beta-review.email = oz@lindenlab.com + oz_project-1.build_debug_release_separately = true oz_project-1.codeticket_add_context = false oz_project-1.email = oz@lindenlab.com @@ -157,15 +168,6 @@ oz_project-3.email = oz@lindenlab.com oz_project-4.build_debug_release_separately = true oz_project-4.codeticket_add_context = false oz_project-4.email = oz@lindenlab.com -oz_project-5.build_debug_release_separately = true -oz_project-5.codeticket_add_context = false -oz_project-5.email = oz@lindenlab.com - -oz_viewer-beta-review.build_debug_release_separately = true -oz_viewer-beta-review.codeticket_add_context = false -oz_viewer-beta-review.viewer_channel = "Second Life Beta Viewer" -oz_viewer-beta-review.login_channel = "Second Life Beta Viewer" -oz_viewer-beta-review.email = oz@lindenlab.com # ================================================================= # asset delivery 2010 projects -- cgit v1.2.3 From 43e3603cd763f5f501c8c5dc008d8a00d0744c53 Mon Sep 17 00:00:00 2001 From: Dave Parks <davep@lindenlab.com> Date: Mon, 19 Dec 2011 16:55:21 -0600 Subject: SH-2738 Don't lock unless we really need to --- indra/llmessage/llcurl.cpp | 12 ++---------- 1 file changed, 2 insertions(+), 10 deletions(-) diff --git a/indra/llmessage/llcurl.cpp b/indra/llmessage/llcurl.cpp index d86bf7a0a1..988c12d6fb 100644 --- a/indra/llmessage/llcurl.cpp +++ b/indra/llmessage/llcurl.cpp @@ -612,13 +612,7 @@ void LLCurl::Multi::setState(LLCurl::Multi::ePerformState state) LLCurl::Multi::ePerformState LLCurl::Multi::getState() { - ePerformState state ; - - lock() ; - state = mState ; - unlock() ; - - return state ; + return mState; } bool LLCurl::Multi::isCompleted() @@ -636,14 +630,12 @@ bool LLCurl::Multi::waitToComplete() bool completed ; - lock() ; completed = (STATE_COMPLETED == mState) ; if(!completed) { LLCurl::getCurlThread()->setPriority(mHandle, LLQueuedThread::PRIORITY_URGENT) ; } - unlock() ; - + return completed; } -- cgit v1.2.3 From cfc6ac76e1c700c0810629b005f45747c4144867 Mon Sep 17 00:00:00 2001 From: Xiaohong Bao <bao@lindenlab.com> Date: Tue, 20 Dec 2011 11:04:10 -0700 Subject: more tuning of llcurl code targeting crashes like SH-2777. --- indra/llmessage/llcurl.cpp | 43 ++++++++++++++++++++++++++++++++----------- 1 file changed, 32 insertions(+), 11 deletions(-) diff --git a/indra/llmessage/llcurl.cpp b/indra/llmessage/llcurl.cpp index 988c12d6fb..2b351d351e 100644 --- a/indra/llmessage/llcurl.cpp +++ b/indra/llmessage/llcurl.cpp @@ -603,11 +603,12 @@ void LLCurl::Multi::setState(LLCurl::Multi::ePerformState state) { lock() ; mState = state ; + unlock() ; + if(mState == STATE_READY) { LLCurl::getCurlThread()->setPriority(mHandle, LLQueuedThread::PRIORITY_NORMAL) ; - } - unlock() ; + } } LLCurl::Multi::ePerformState LLCurl::Multi::getState() @@ -628,9 +629,7 @@ bool LLCurl::Multi::waitToComplete() return true ; } - bool completed ; - - completed = (STATE_COMPLETED == mState) ; + bool completed = (STATE_COMPLETED == mState) ; if(!completed) { LLCurl::getCurlThread()->setPriority(mHandle, LLQueuedThread::PRIORITY_URGENT) ; @@ -641,6 +640,8 @@ bool LLCurl::Multi::waitToComplete() CURLMsg* LLCurl::Multi::info_read(S32* msgs_in_queue) { + LLMutexLock lock(mMutexp) ; + CURLMsg* curlmsg = curl_multi_info_read(mCurlMultiHandle, msgs_in_queue); return curlmsg; } @@ -702,10 +703,19 @@ S32 LLCurl::Multi::process() if (msg->msg == CURLMSG_DONE) { U32 response = 0; - easy_active_map_t::iterator iter = mEasyActiveMap.find(msg->easy_handle); - if (iter != mEasyActiveMap.end()) + Easy* easy = NULL ; + + { + LLMutexLock lock(mEasyMutexp) ; + easy_active_map_t::iterator iter = mEasyActiveMap.find(msg->easy_handle); + if (iter != mEasyActiveMap.end()) + { + easy = iter->second; + } + } + + if(easy) { - Easy* easy = iter->second; response = easy->report(msg->data.result); removeEasy(easy); } @@ -766,20 +776,31 @@ bool LLCurl::Multi::addEasy(Easy* easy) void LLCurl::Multi::easyFree(Easy* easy) { - mEasyMutexp->lock() ; + if(mEasyMutexp) + { + mEasyMutexp->lock() ; + } + mEasyActiveList.erase(easy); mEasyActiveMap.erase(easy->getCurlHandle()); if (mEasyFreeList.size() < EASY_HANDLE_POOL_SIZE) { mEasyFreeList.insert(easy); - mEasyMutexp->unlock() ; + + if(mEasyMutexp) + { + mEasyMutexp->unlock() ; + } easy->resetState(); } else { - mEasyMutexp->unlock() ; + if(mEasyMutexp) + { + mEasyMutexp->unlock() ; + } delete easy; } } -- cgit v1.2.3 From 5dc8e44c767f839e3d2d1d926bfdeee969f2492e Mon Sep 17 00:00:00 2001 From: Vadim ProductEngine <vsavchuk@productengine.com> Date: Tue, 20 Dec 2011 20:44:38 +0200 Subject: EXP-1499 FIXED Added some NULL checks in notifications UI code to avoid a crash on exit. The crash happened if connection timed out while there were unread object inventory offers. --- indra/newview/llchiclet.cpp | 6 ++++++ indra/newview/llscriptfloater.cpp | 11 +++++++++-- indra/newview/llsyswellwindow.cpp | 13 ++++++++++++- indra/newview/llsyswellwindow.h | 1 + 4 files changed, 28 insertions(+), 3 deletions(-) diff --git a/indra/newview/llchiclet.cpp b/indra/newview/llchiclet.cpp index a076374903..045c9017be 100644 --- a/indra/newview/llchiclet.cpp +++ b/indra/newview/llchiclet.cpp @@ -250,6 +250,12 @@ LLIMWellChiclet::LLIMWellChiclet(const Params& p) LLIMWellChiclet::~LLIMWellChiclet() { + LLIMWellWindow* im_well_window = LLIMWellWindow::findInstance(); + if (im_well_window) + { + im_well_window->setSysWellChiclet(NULL); + } + LLIMMgr::getInstance()->removeSessionObserver(this); } diff --git a/indra/newview/llscriptfloater.cpp b/indra/newview/llscriptfloater.cpp index 85a7e75271..6f98be1cb8 100644 --- a/indra/newview/llscriptfloater.cpp +++ b/indra/newview/llscriptfloater.cpp @@ -408,9 +408,16 @@ void LLScriptFloaterManager::onRemoveNotification(const LLUUID& notification_id) } // remove related chiclet - LLChicletBar::getInstance()->getChicletPanel()->removeChiclet(notification_id); + if (LLChicletBar::instanceExists()) + { + LLChicletBar::getInstance()->getChicletPanel()->removeChiclet(notification_id); + } - LLIMWellWindow::getInstance()->removeObjectRow(notification_id); + LLIMWellWindow* im_well_window = LLIMWellWindow::findInstance(); + if (im_well_window) + { + im_well_window->removeObjectRow(notification_id); + } mNotifications.erase(notification_id); diff --git a/indra/newview/llsyswellwindow.cpp b/indra/newview/llsyswellwindow.cpp index 3aa6a3b7e5..0cb6c85012 100644 --- a/indra/newview/llsyswellwindow.cpp +++ b/indra/newview/llsyswellwindow.cpp @@ -159,6 +159,7 @@ void LLSysWellWindow::setVisible(BOOL visible) LLTransientDockableFloater::setVisible(visible); // update notification channel state + initChannel(); // make sure the channel still exists if(mChannel) { mChannel->updateShowToastsState(); @@ -598,6 +599,13 @@ LLIMWellWindow* LLIMWellWindow::getInstance(const LLSD& key /*= LLSD()*/) return LLFloaterReg::getTypedInstance<LLIMWellWindow>("im_well_window", key); } + +// static +LLIMWellWindow* LLIMWellWindow::findInstance(const LLSD& key /*= LLSD()*/) +{ + return LLFloaterReg::findTypedInstance<LLIMWellWindow>("im_well_window", key); +} + BOOL LLIMWellWindow::postBuild() { BOOL rv = LLSysWellWindow::postBuild(); @@ -751,7 +759,10 @@ void LLIMWellWindow::removeObjectRow(const LLUUID& notification_id) { if (mMessageList->removeItemByValue(notification_id)) { - mSysWellChiclet->updateWidget(isWindowEmpty()); + if (mSysWellChiclet) + { + mSysWellChiclet->updateWidget(isWindowEmpty()); + } } else { diff --git a/indra/newview/llsyswellwindow.h b/indra/newview/llsyswellwindow.h index 52e5370505..272e9cfcb1 100644 --- a/indra/newview/llsyswellwindow.h +++ b/indra/newview/llsyswellwindow.h @@ -153,6 +153,7 @@ public: ~LLIMWellWindow(); static LLIMWellWindow* getInstance(const LLSD& key = LLSD()); + static LLIMWellWindow* findInstance(const LLSD& key = LLSD()); static void initClass() { getInstance(); } /*virtual*/ BOOL postBuild(); -- cgit v1.2.3 From ec06aa129f839cc98aaa8006d6467241281da9fa Mon Sep 17 00:00:00 2001 From: Xiaohong Bao <bao@lindenlab.com> Date: Tue, 20 Dec 2011 15:02:21 -0700 Subject: add mutex to protect curl_multi-init() --- indra/llmessage/llcurl.cpp | 19 ++++++++++++++++--- indra/llmessage/llcurl.h | 3 +++ 2 files changed, 19 insertions(+), 3 deletions(-) diff --git a/indra/llmessage/llcurl.cpp b/indra/llmessage/llcurl.cpp index 2b351d351e..f569630766 100644 --- a/indra/llmessage/llcurl.cpp +++ b/indra/llmessage/llcurl.cpp @@ -517,7 +517,7 @@ void LLCurl::Easy::prepRequest(const std::string& url, } //////////////////////////////////////////////////////////////////////////// - +LLMutex* LLCurl::Multi::sMultiInitMutexp = NULL ; LLCurl::Multi::Multi() : mQueued(0), mErrorCount(0), @@ -527,11 +527,11 @@ LLCurl::Multi::Multi() mDeletionMutexp(NULL), mEasyMutexp(NULL) { - mCurlMultiHandle = curl_multi_init(); + mCurlMultiHandle = initMulti(); if (!mCurlMultiHandle) { llwarns << "curl_multi_init() returned NULL! Easy handles: " << gCurlEasyCount << " Multi handles: " << gCurlMultiCount << llendl; - mCurlMultiHandle = curl_multi_init(); + mCurlMultiHandle = initMulti(); } llassert_always(mCurlMultiHandle); @@ -576,6 +576,13 @@ LLCurl::Multi::~Multi() --gCurlMultiCount; } +CURLM* LLCurl::Multi::initMulti() +{ + LLMutexLock lock(sMultiInitMutexp) ; + + return curl_multi_init() ; +} + void LLCurl::Multi::lock() { if(mMutexp) @@ -853,11 +860,17 @@ void LLCurlThread::CurlRequest::finishRequest(bool completed) LLCurlThread::LLCurlThread(bool threaded) : LLQueuedThread("curlthread", threaded) { + if(!LLCurl::Multi::sMultiInitMutexp) + { + LLCurl::Multi::sMultiInitMutexp = new LLMutex(NULL) ; + } } //virtual LLCurlThread::~LLCurlThread() { + delete LLCurl::Multi::sMultiInitMutexp ; + LLCurl::Multi::sMultiInitMutexp = NULL ; } S32 LLCurlThread::update(U32 max_time_ms) diff --git a/indra/llmessage/llcurl.h b/indra/llmessage/llcurl.h index 5d54b5fe12..705cdcbbcc 100644 --- a/indra/llmessage/llcurl.h +++ b/indra/llmessage/llcurl.h @@ -299,6 +299,7 @@ public: S32 mQueued; S32 mErrorCount; + static CURLM* initMulti() ; private: void easyFree(LLCurl::Easy*); @@ -318,6 +319,8 @@ private: LLMutex* mMutexp ; LLMutex* mDeletionMutexp ; LLMutex* mEasyMutexp ; + + static LLMutex* sMultiInitMutexp ; }; class LLCurlThread : public LLQueuedThread -- cgit v1.2.3