diff options
-rw-r--r-- | BuildParams | 7 | ||||
-rwxr-xr-x | build.sh | 12 | ||||
-rw-r--r-- | indra/cmake/Copy3rdPartyLibs.cmake | 1 | ||||
-rw-r--r-- | indra/cmake/run_build_test.py | 18 | ||||
-rw-r--r-- | indra/newview/llimview.cpp | 45 | ||||
-rw-r--r-- | indra/newview/llimview.h | 2 | ||||
-rw-r--r-- | indra/newview/llinventorybridge.cpp | 4 | ||||
-rw-r--r-- | indra/newview/llnearbychathandler.cpp | 75 | ||||
-rw-r--r-- | indra/newview/skins/default/xui/en/strings.xml | 5 |
9 files changed, 132 insertions, 37 deletions
diff --git a/BuildParams b/BuildParams index f70488d942..acc3904d82 100644 --- a/BuildParams +++ b/BuildParams @@ -79,6 +79,13 @@ brad-parabuild.build_server = false brad-parabuild.build_server_tests = false # ======================================== +# CG +# ======================================== + +cg_viewer-development_lenny.collect_metrics = true +cg_viewer-development_lenny.show_changes_since = 4b140ce7839d + +# ======================================== # gooey # ======================================== @@ -63,7 +63,8 @@ pre_build() -DVIEWER_LOGIN_CHANNEL:STRING="$login_channel" \ -DINSTALL_PROPRIETARY:BOOL=ON \ -DLOCALIZESETUP:BOOL=ON \ - -DPACKAGE:BOOL=ON + -DPACKAGE:BOOL=ON \ + -DCMAKE_VERBOSE_MAKEFILE:BOOL=TRUE end_section "Pre$variant" } @@ -222,7 +223,10 @@ do fi else begin_section "Build$variant" - build "$variant" "$build_dir" 2>&1 | tee -a "$build_log" | grep --line-buffered "^##teamcity" + build "$variant" "$build_dir" > "$build_log" 2>&1 + begin_section Tests + grep --line-buffered "^##teamcity" "$build_log" + end_section Tests if `cat "$build_dir/build_ok"` then echo so far so good. @@ -251,13 +255,15 @@ then begin_section "Build$variant" build_dir=`build_dir_$arch $variant` build_dir_stubs="$build_dir/win_setup/$variant" - tee -a $build_log < "$build_dir/build.log" | grep --line-buffered "^##teamcity" if `cat "$build_dir/build_ok"` then echo so far so good. else record_failure "Parallel build of \"$variant\" failed." fi + begin_section Tests + tee -a $build_log < "$build_dir/build.log" | grep --line-buffered "^##teamcity" + end_section Tests end_section "Build$variant" done end_section WaitParallel diff --git a/indra/cmake/Copy3rdPartyLibs.cmake b/indra/cmake/Copy3rdPartyLibs.cmake index 2dd296bf12..95ed5d6bc8 100644 --- a/indra/cmake/Copy3rdPartyLibs.cmake +++ b/indra/cmake/Copy3rdPartyLibs.cmake @@ -221,6 +221,7 @@ elseif(LINUX) libcrypto.so.0.9.7 libdb-4.2.so libexpat.so + libexpat.so.1 libgmock_main.so libgmock.so.0 libgmodule-2.0.so diff --git a/indra/cmake/run_build_test.py b/indra/cmake/run_build_test.py index 104585c195..e377aeef48 100644 --- a/indra/cmake/run_build_test.py +++ b/indra/cmake/run_build_test.py @@ -82,10 +82,24 @@ def main(command, libpath=[], vars={}): dirs = os.environ.get(var, "").split(os.pathsep) # Append the sequence in libpath print "%s += %r" % (var, libpath) - dirs.extend(libpath) + for dir in libpath: + # append system paths at the end + if dir in ('/lib', '/usr/lib'): + dirs.append(dir) + # prepend non-system paths + else: + dirs.insert(0, dir) + + # Filter out some useless pieces + clean_dirs = [] + for dir in dirs: + if dir and dir not in ('', '.'): + clean_dirs.append(dir) + # Now rebuild the path string. This way we use a minimum of separators # -- and we avoid adding a pointless separator when libpath is empty. - os.environ[var] = os.pathsep.join(dirs) + os.environ[var] = os.pathsep.join(clean_dirs) + print "%s = %r" % (var, os.environ[var]) # Now handle arbitrary environment variables. The tricky part is ensuring # that all the keys and values we try to pass are actually strings. if vars: diff --git a/indra/newview/llimview.cpp b/indra/newview/llimview.cpp index 129c9aec14..493398c68a 100644 --- a/indra/newview/llimview.cpp +++ b/indra/newview/llimview.cpp @@ -69,7 +69,6 @@ const static std::string IM_TEXT("message"); const static std::string IM_FROM("from"); const static std::string IM_FROM_ID("from_id"); -const static std::string NO_SESSION("(IM Session Doesn't Exist)"); const static std::string ADHOC_NAME_SUFFIX(" Conference"); const static std::string NEARBY_P2P_BY_OTHER("nearby_P2P_by_other"); @@ -231,25 +230,6 @@ LLIMModel::LLIMSession::LLIMSession(const LLUUID& session_id, const std::string& new LLSessionTimeoutTimer(mSessionID, SESSION_INITIALIZATION_TIMEOUT); } - // *WORKAROUND: for server hard-coded string in indra\newsim\llsimchatterbox.cpp - if (isAdHocSessionType() && IM_SESSION_INVITE == type) - { - // For an ad-hoc incoming chat name is received from the server and is in a form of "<Avatar's name> Conference" - // Lets update it to localize the "Conference" word. See EXT-8429. - S32 separator_index = mName.rfind(" "); - std::string name = mName.substr(0, separator_index); - ++separator_index; - std::string conference_word = mName.substr(separator_index, mName.length()); - - // additional check that session name is what we expected - if ("Conference" == conference_word) - { - LLStringUtil::format_map_t args; - args["[AGENT_NAME]"] = name; - LLTrans::findString(mName, "conference-title-incoming", args); - } - } - if (IM_NOTHING_SPECIAL == type) { mCallBackEnabled = LLVoiceClient::getInstance()->isSessionCallBackPossible(mSessionID); @@ -266,6 +246,27 @@ LLIMModel::LLIMSession::LLIMSession(const LLUUID& session_id, const std::string& LLLogChat::loadAllHistory(mHistoryFileName, chat_history); addMessagesFromHistory(chat_history); } + + // Localizing name of ad-hoc session. STORM-153 + // Changing name should happen here- after the history file was created, so that + // history files have consistent (English) names in different locales. + if (isAdHocSessionType() && IM_SESSION_INVITE == type) + { + // Name here has a form of "<Avatar's name> Conference" + // Lets update it to localize the "Conference" word. See EXT-8429. + S32 separator_index = mName.rfind(" "); + std::string name = mName.substr(0, separator_index); + ++separator_index; + std::string conference_word = mName.substr(separator_index, mName.length()); + + // additional check that session name is what we expected + if ("Conference" == conference_word) + { + LLStringUtil::format_map_t args; + args["[AGENT_NAME]"] = name; + LLTrans::findString(mName, "conference-title-incoming", args); + } + } } void LLIMModel::LLIMSession::onVoiceChannelStateChanged(const LLVoiceChannel::EState& old_state, const LLVoiceChannel::EState& new_state, const LLVoiceChannel::EDirection& direction) @@ -791,14 +792,14 @@ LLIMModel::LLIMSession* LLIMModel::addMessageSilently(const LLUUID& session_id, } -const std::string& LLIMModel::getName(const LLUUID& session_id) const +const std::string LLIMModel::getName(const LLUUID& session_id) const { LLIMSession* session = findIMSession(session_id); if (!session) { llwarns << "session " << session_id << "does not exist " << llendl; - return NO_SESSION; + return LLTrans::getString("no_session_message"); } return session->mName; diff --git a/indra/newview/llimview.h b/indra/newview/llimview.h index 4ce94773bf..ba8c7ae489 100644 --- a/indra/newview/llimview.h +++ b/indra/newview/llimview.h @@ -230,7 +230,7 @@ public: * For an incoming ad-hoc chat - is received from the server and is in a from of "<Avatar's name> Conference" * It is updated in LLIMModel::LLIMSession's constructor to localize the "Conference". */ - const std::string& getName(const LLUUID& session_id) const; + const std::string getName(const LLUUID& session_id) const; /** * Get number of unread messages in a session with session_id diff --git a/indra/newview/llinventorybridge.cpp b/indra/newview/llinventorybridge.cpp index 02e7f0b9e2..311d791319 100644 --- a/indra/newview/llinventorybridge.cpp +++ b/indra/newview/llinventorybridge.cpp @@ -2471,6 +2471,10 @@ void LLFolderBridge::folderOptionsMenu() { disabled_items.push_back(std::string("Remove From Outfit")); } + if (!LLAppearanceMgr::instance().getCanReplaceCOF(mUUID)) + { + disabled_items.push_back(std::string("Replace Outfit")); + } mItems.push_back(std::string("Outfit Separator")); } LLMenuGL* menup = dynamic_cast<LLMenuGL*>(mMenu.get()); diff --git a/indra/newview/llnearbychathandler.cpp b/indra/newview/llnearbychathandler.cpp index a747c228a6..b6d2e02eef 100644 --- a/indra/newview/llnearbychathandler.cpp +++ b/indra/newview/llnearbychathandler.cpp @@ -64,7 +64,7 @@ public: typedef boost::function<LLToastPanelBase* (void )> create_toast_panel_callback_t; void setCreatePanelCallback(create_toast_panel_callback_t value) { m_create_toast_panel_callback_t = value;} - void onToastDestroyed (LLToast* toast); + void onToastDestroyed (LLToast* toast, bool app_quitting); void onToastFade (LLToast* toast); void reshape (S32 width, S32 height, BOOL called_from_parent); @@ -96,6 +96,7 @@ public: } protected: + void deactivateToast(LLToast* toast); void addToToastPool(LLToast* toast) { toast->setVisible(FALSE); @@ -116,14 +117,65 @@ protected: bool mStopProcessing; }; +//----------------------------------------------------------------------------------------------- +// LLNearbyChatToast +//----------------------------------------------------------------------------------------------- + +// We're deriving from LLToast to be able to override onClose() +// in order to handle closing nearby chat toasts properly. +class LLNearbyChatToast : public LLToast +{ + LOG_CLASS(LLNearbyChatToast); +public: + LLNearbyChatToast(const LLToast::Params& p, LLNearbyChatScreenChannel* nc_channelp) + : LLToast(p), + mNearbyChatScreenChannelp(nc_channelp) + { + } + + /*virtual*/ void onClose(bool app_quitting); + +private: + LLNearbyChatScreenChannel* mNearbyChatScreenChannelp; +}; + +//----------------------------------------------------------------------------------------------- +// LLNearbyChatScreenChannel +//----------------------------------------------------------------------------------------------- + +void LLNearbyChatScreenChannel::deactivateToast(LLToast* toast) +{ + std::vector<LLToast*>::iterator pos = std::find(m_active_toasts.begin(), m_active_toasts.end(), toast); + + if (pos == m_active_toasts.end()) + { + llassert(pos == m_active_toasts.end()); + return; + } + + m_active_toasts.erase(pos); +} + void LLNearbyChatScreenChannel::createOverflowToast(S32 bottom, F32 timer) { //we don't need overflow toast in nearby chat } -void LLNearbyChatScreenChannel::onToastDestroyed(LLToast* toast) +void LLNearbyChatScreenChannel::onToastDestroyed(LLToast* toast, bool app_quitting) { - mStopProcessing = true; + if (app_quitting) + { + // Viewer is quitting. + // Immediately stop processing chat messages (EXT-1419). + mStopProcessing = true; + } + else + { + // The toast is being closed by user (STORM-192). + // Remove it from the list of active toasts to prevent + // further references to the invalid pointer. + deactivateToast(toast); + } } void LLNearbyChatScreenChannel::onToastFade(LLToast* toast) @@ -132,9 +184,7 @@ void LLNearbyChatScreenChannel::onToastFade(LLToast* toast) if(!toast) return; - std::vector<LLToast*>::iterator pos = std::find(m_active_toasts.begin(),m_active_toasts.end(),toast); - if(pos!=m_active_toasts.end()) - m_active_toasts.erase(pos); + deactivateToast(toast); addToToastPool(toast); @@ -153,11 +203,10 @@ bool LLNearbyChatScreenChannel::createPoolToast() p.lifetime_secs = gSavedSettings.getS32("NearbyToastLifeTime"); p.fading_time_secs = gSavedSettings.getS32("NearbyToastFadingTime"); - LLToast* toast = new LLToast(p); + LLToast* toast = new LLNearbyChatToast(p, this); toast->setOnFadeCallback(boost::bind(&LLNearbyChatScreenChannel::onToastFade, this, _1)); - toast->setOnToastDestroyedCallback(boost::bind(&LLNearbyChatScreenChannel::onToastDestroyed, this, _1)); m_toast_pool.push_back(toast); return true; @@ -452,4 +501,14 @@ void LLNearbyChatHandler::onDeleteToast(LLToast* toast) } +//----------------------------------------------------------------------------------------------- +// LLNearbyChatToast +//----------------------------------------------------------------------------------------------- + +// virtual +void LLNearbyChatToast::onClose(bool app_quitting) +{ + mNearbyChatScreenChannelp->onToastDestroyed(this, app_quitting); +} +// EOF diff --git a/indra/newview/skins/default/xui/en/strings.xml b/indra/newview/skins/default/xui/en/strings.xml index 3fa5c7afec..6b3fd9ff9e 100644 --- a/indra/newview/skins/default/xui/en/strings.xml +++ b/indra/newview/skins/default/xui/en/strings.xml @@ -3029,7 +3029,7 @@ If you continue to receive this message, contact the [SUPPORT_SITE]. Ad-hoc Conference </string> <string name="conference-title-incoming"> - [AGENT_NAME] Conference + Conference with [AGENT_NAME] </string> <string name="inventory_item_offered-im"> Inventory item offered @@ -3039,6 +3039,9 @@ If you continue to receive this message, contact the [SUPPORT_SITE]. </string> + <string name="no_session_message"> + (IM Session Doesn't Exist) + </string> <string name="only_user_message"> You are the only user in this session. </string> |