diff --git a/.hgtags b/.hgtags index e3735b444d..105abb4fa5 100755 --- a/.hgtags +++ b/.hgtags @@ -542,3 +542,4 @@ ac3b1332ad4f55b7182a8cbcc1254535a0069f75 5.1.7-release 23ea0fe36fadf009a60c080392ce80e4bf8af8d9 5.1.8-release 52422540bfe54b71155aa455360bee6e3ef1fd96 5.1.9-release 821edfcd14919c0e95c590866171c61fb57e8623 6.0.0-release +21b7604680ef6b6ea67f8bebaaa588d6e263bdc1 6.0.1-release diff --git a/autobuild.xml b/autobuild.xml index 3107d77548..513728623b 100644 --- a/autobuild.xml +++ b/autobuild.xml @@ -2526,9 +2526,9 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors archive hash - bb8bed08fd5973a040c509ef8b545ec8 + 2c17cfd900c88914e06947fe0f1fdae4 url - http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/490/1046/ogg_vorbis-1.2.2-1.3.2.500397-darwin64-500397.tar.bz2 + http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/25395/199641/ogg_vorbis-1.3.3-1.3.6.520171-darwin64-520171.tar.bz2 name darwin64 @@ -2562,9 +2562,9 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors archive hash - f7edf86dcf2d9be7bee98c91256fa569 + 1818627d4d1f05b49709717e240bdcf4 url - http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/512/1108/ogg_vorbis-1.2.2-1.3.2.500397-windows-500397.tar.bz2 + http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/25396/199634/ogg_vorbis-1.3.3-1.3.6.520171-windows-520171.tar.bz2 name windows @@ -2574,16 +2574,16 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors archive hash - 497ec6ac26c2e136ee65acbed86cb2ef + d124788c798684c890c1803fca541a10 url - http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/511/1105/ogg_vorbis-1.2.2-1.3.2.500397-windows64-500397.tar.bz2 + http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/25397/199631/ogg_vorbis-1.3.3-1.3.6.520171-windows64-520171.tar.bz2 name windows64 version - 1.2.2-1.3.2.500397 + 1.3.3-1.3.6.520171 open-libndofdev diff --git a/doc/contributions.txt b/doc/contributions.txt index d823e37dbd..57cd72648b 100755 --- a/doc/contributions.txt +++ b/doc/contributions.txt @@ -343,6 +343,8 @@ Celierra Darling Chantal Harvey Charles Courtois Charlie Sazaland +Chaser Zaks + BUG-225599 Cherry Cheevers ChickyBabes Zuzu Christopher Organiser @@ -367,6 +369,7 @@ Cinder Roxley STORM-2037 STORM-2053 STORM-2113 + STORM-2116 STORM-2127 STORM-2144 Clara Young diff --git a/indra/llcommon/llerror.cpp b/indra/llcommon/llerror.cpp index 49ed8b495d..40eb7d9bac 100644 --- a/indra/llcommon/llerror.cpp +++ b/indra/llcommon/llerror.cpp @@ -1028,7 +1028,7 @@ namespace } } - void writeToRecorders(const LLError::CallSite& site, const std::string& escaped_message, bool show_location = true, bool show_time = true, bool show_tags = true, bool show_level = true, bool show_function = true) + void writeToRecorders(const LLError::CallSite& site, const std::string& escaped_message) { LLError::ELevel level = site.mLevel; LLError::SettingsConfigPtr s = LLError::Settings::getInstance()->getSettingsConfig(); @@ -1052,7 +1052,7 @@ namespace } message_stream << " "; - if (show_level && r->wantsLevel()) + if (r->wantsLevel()) { message_stream << site.mLevelString; } @@ -1070,7 +1070,7 @@ namespace } message_stream << " "; - if (show_function && r->wantsFunctionName()) + if (r->wantsFunctionName()) { message_stream << site.mFunctionString; } diff --git a/indra/llui/lltextbox.cpp b/indra/llui/lltextbox.cpp index d175204e6d..01fe82e45d 100644 --- a/indra/llui/lltextbox.cpp +++ b/indra/llui/lltextbox.cpp @@ -43,7 +43,8 @@ template class LLTextBox* LLView::getChild( LLTextBox::LLTextBox(const LLTextBox::Params& p) : LLTextBase(p), - mClickedCallback(NULL) + mClickedCallback(NULL), + mShowCursorHand(true) {} LLTextBox::~LLTextBox() @@ -103,7 +104,7 @@ BOOL LLTextBox::handleMouseUp(S32 x, S32 y, MASK mask) BOOL LLTextBox::handleHover(S32 x, S32 y, MASK mask) { BOOL handled = LLTextBase::handleHover(x, y, mask); - if (!handled && mClickedCallback) + if (!handled && mClickedCallback && mShowCursorHand) { // Clickable text boxes change the cursor to a hand LLUI::getWindow()->setCursor(UI_CURSOR_HAND); diff --git a/indra/llui/lltextbox.h b/indra/llui/lltextbox.h index 071e18c638..061d2dd23d 100644 --- a/indra/llui/lltextbox.h +++ b/indra/llui/lltextbox.h @@ -68,11 +68,14 @@ public: /*virtual*/ LLSD getValue() const; /*virtual*/ BOOL setTextArg( const std::string& key, const LLStringExplicit& text ); + void setShowCursorHand(bool show_cursor) { mShowCursorHand = show_cursor; } + protected: void onUrlLabelUpdated(const std::string &url, const std::string &label); LLUIString mText; callback_t mClickedCallback; + bool mShowCursorHand; }; // Build time optimization, generate once in .cpp file diff --git a/indra/newview/VIEWER_VERSION.txt b/indra/newview/VIEWER_VERSION.txt index 5fe6072304..9b9a244206 100644 --- a/indra/newview/VIEWER_VERSION.txt +++ b/indra/newview/VIEWER_VERSION.txt @@ -1 +1 @@ -6.0.1 +6.0.2 diff --git a/indra/newview/llfloaterpreference.cpp b/indra/newview/llfloaterpreference.cpp index 7f700b76cc..3853ca1822 100644 --- a/indra/newview/llfloaterpreference.cpp +++ b/indra/newview/llfloaterpreference.cpp @@ -530,13 +530,6 @@ void LLFloaterPreference::onDoNotDisturbResponseChanged() LLFloaterPreference::~LLFloaterPreference() { - // clean up user data - LLComboBox* ctrl_window_size = getChild("windowsize combo"); - for (S32 i = 0; i < ctrl_window_size->getItemCount(); i++) - { - ctrl_window_size->setCurrentByIndex(i); - } - LLConversationLog::instance().removeObserver(this); } @@ -2323,12 +2316,21 @@ BOOL LLPanelPreference::postBuild() { getChild("voice_call_friends_only_check")->setCommitCallback(boost::bind(&showFriendsOnlyWarning, _1, _2)); } + if (hasChild("allow_multiple_viewer_check", TRUE)) + { + getChild("allow_multiple_viewer_check")->setCommitCallback(boost::bind(&showMultipleViewersWarning, _1, _2)); + } if (hasChild("favorites_on_login_check", TRUE)) { getChild("favorites_on_login_check")->setCommitCallback(boost::bind(&handleFavoritesOnLoginChanged, _1, _2)); bool show_favorites_at_login = LLPanelLogin::getShowFavorites(); getChild("favorites_on_login_check")->setValue(show_favorites_at_login); } + if (hasChild("mute_chb_label", TRUE)) + { + getChild("mute_chb_label")->setShowCursorHand(false); + getChild("mute_chb_label")->setClickedCallback(boost::bind(&toggleMuteWhenMinimized)); + } //////////////////////PanelAdvanced /////////////////// if (hasChild("modifier_combo", TRUE)) @@ -2418,6 +2420,14 @@ void LLPanelPreference::saveSettings() } } +void LLPanelPreference::showMultipleViewersWarning(LLUICtrl* checkbox, const LLSD& value) +{ + if (checkbox && checkbox->getValue()) + { + LLNotificationsUtil::add("AllowMultipleViewers"); + } +} + void LLPanelPreference::showFriendsOnlyWarning(LLUICtrl* checkbox, const LLSD& value) { if (checkbox && checkbox->getValue()) @@ -2438,6 +2448,12 @@ void LLPanelPreference::handleFavoritesOnLoginChanged(LLUICtrl* checkbox, const } } +void LLPanelPreference::toggleMuteWhenMinimized() +{ + std::string mute("MuteWhenMinimized"); + gSavedSettings.setBOOL(mute, !gSavedSettings.getBOOL(mute)); +} + void LLPanelPreference::cancel() { for (control_values_map_t::iterator iter = mSavedValues.begin(); diff --git a/indra/newview/llfloaterpreference.h b/indra/newview/llfloaterpreference.h index 8339a18296..4e51137df5 100644 --- a/indra/newview/llfloaterpreference.h +++ b/indra/newview/llfloaterpreference.h @@ -241,9 +241,12 @@ protected: private: //for "Only friends and groups can call or IM me" static void showFriendsOnlyWarning(LLUICtrl*, const LLSD&); + //for "Allow Multiple Viewers" + static void showMultipleViewersWarning(LLUICtrl*, const LLSD&); //for "Show my Favorite Landmarks at Login" static void handleFavoritesOnLoginChanged(LLUICtrl* checkbox, const LLSD& value); + static void toggleMuteWhenMinimized(); typedef std::map string_color_map_t; string_color_map_t mSavedColors; diff --git a/indra/newview/llfloaterscriptdebug.cpp b/indra/newview/llfloaterscriptdebug.cpp index 468537e659..1ea3a07536 100644 --- a/indra/newview/llfloaterscriptdebug.cpp +++ b/indra/newview/llfloaterscriptdebug.cpp @@ -138,7 +138,10 @@ void LLFloaterScriptDebug::addScriptLine(const std::string &utf8mesg, const std: { if(objectp->isHUDAttachment()) { - ((LLViewerObject*)gAgentAvatarp)->setIcon(LLViewerTextureManager::getFetchedTextureFromFile("script_error.j2c", FTT_LOCAL_FILE, TRUE, LLGLTexture::BOOST_UI)); + if (isAgentAvatarValid()) + { + ((LLViewerObject*)gAgentAvatarp)->setIcon(LLViewerTextureManager::getFetchedTextureFromFile("script_error.j2c", FTT_LOCAL_FILE, TRUE, LLGLTexture::BOOST_UI)); + } } else { diff --git a/indra/newview/llfloaterworldmap.cpp b/indra/newview/llfloaterworldmap.cpp index 3c3b004d2c..1e9c9ce5e0 100644 --- a/indra/newview/llfloaterworldmap.cpp +++ b/indra/newview/llfloaterworldmap.cpp @@ -300,8 +300,8 @@ BOOL LLFloaterWorldMap::postBuild() landmark_combo->setTextChangedCallback( boost::bind(&LLFloaterWorldMap::onComboTextEntry, this) ); mListLandmarkCombo = dynamic_cast(landmark_combo); - mCurZoomVal = log(LLWorldMapView::sMapScale)/log(2.f); - getChild("zoom slider")->setValue(LLWorldMapView::sMapScale); + mCurZoomVal = log(LLWorldMapView::sMapScale/256.f)/log(2.f); + getChild("zoom slider")->setValue(mCurZoomVal); setDefaultBtn(NULL); diff --git a/indra/newview/llfolderviewmodelinventory.cpp b/indra/newview/llfolderviewmodelinventory.cpp index b93dfaf061..d40a7234e2 100644 --- a/indra/newview/llfolderviewmodelinventory.cpp +++ b/indra/newview/llfolderviewmodelinventory.cpp @@ -181,24 +181,26 @@ bool LLFolderViewModelItemInventory::filterChildItem( LLFolderViewModelItem* ite S32 filter_generation = filter.getCurrentGeneration(); bool continue_filtering = true; - if (item->getLastFilterGeneration() < filter_generation) + if (item) { - // Recursive application of the filter for child items (CHUI-849) - continue_filtering = item->filter( filter ); - } - - // Update latest generation to pass filter in parent and propagate up to root - if (item->passedFilter()) - { - LLFolderViewModelItemInventory* view_model = this; - - while(view_model && view_model->mMostFilteredDescendantGeneration < filter_generation) + if (item->getLastFilterGeneration() < filter_generation) { - view_model->mMostFilteredDescendantGeneration = filter_generation; - view_model = static_cast(view_model->mParent); + // Recursive application of the filter for child items (CHUI-849) + continue_filtering = item->filter(filter); + } + + // Update latest generation to pass filter in parent and propagate up to root + if (item->passedFilter()) + { + LLFolderViewModelItemInventory* view_model = this; + + while (view_model && view_model->mMostFilteredDescendantGeneration < filter_generation) + { + view_model->mMostFilteredDescendantGeneration = filter_generation; + view_model = static_cast(view_model->mParent); + } } } - return continue_filtering; } diff --git a/indra/newview/llinventorybridge.cpp b/indra/newview/llinventorybridge.cpp index e4b6c3b554..1987e15850 100644 --- a/indra/newview/llinventorybridge.cpp +++ b/indra/newview/llinventorybridge.cpp @@ -2474,12 +2474,14 @@ BOOL LLFolderBridge::dragCategoryIntoFolder(LLInventoryCategory* inv_cat, const LLUUID &trash_id = model->findCategoryUUIDForType(LLFolderType::FT_TRASH, false); const LLUUID &landmarks_id = model->findCategoryUUIDForType(LLFolderType::FT_LANDMARK, false); const LLUUID &my_outifts_id = model->findCategoryUUIDForType(LLFolderType::FT_MY_OUTFITS, false); + const LLUUID &lost_and_found_id = model->findCategoryUUIDForType(LLFolderType::FT_LOST_AND_FOUND, false); const BOOL move_is_into_trash = (mUUID == trash_id) || model->isObjectDescendentOf(mUUID, trash_id); const BOOL move_is_into_my_outfits = (mUUID == my_outifts_id) || model->isObjectDescendentOf(mUUID, my_outifts_id); const BOOL move_is_into_outfit = move_is_into_my_outfits || (getCategory() && getCategory()->getPreferredType()==LLFolderType::FT_OUTFIT); const BOOL move_is_into_current_outfit = (getCategory() && getCategory()->getPreferredType()==LLFolderType::FT_CURRENT_OUTFIT); const BOOL move_is_into_landmarks = (mUUID == landmarks_id) || model->isObjectDescendentOf(mUUID, landmarks_id); + const BOOL move_is_into_lost_and_found = model->isObjectDescendentOf(mUUID, lost_and_found_id); //-------------------------------------------------------------------------------- // Determine if folder can be moved. @@ -2529,6 +2531,10 @@ BOOL LLFolderBridge::dragCategoryIntoFolder(LLInventoryCategory* inv_cat, { is_movable = FALSE; } + if (is_movable && move_is_into_lost_and_found) + { + is_movable = FALSE; + } if (is_movable && (mUUID == model->findCategoryUUIDForType(LLFolderType::FT_FAVORITE))) { is_movable = FALSE; @@ -3642,12 +3648,14 @@ void LLFolderBridge::perform_pasteFromClipboard() const LLUUID &marketplacelistings_id = model->findCategoryUUIDForType(LLFolderType::FT_MARKETPLACE_LISTINGS, false); const LLUUID &favorites_id = model->findCategoryUUIDForType(LLFolderType::FT_FAVORITE, false); const LLUUID &my_outifts_id = model->findCategoryUUIDForType(LLFolderType::FT_MY_OUTFITS, false); + const LLUUID &lost_and_found_id = model->findCategoryUUIDForType(LLFolderType::FT_LOST_AND_FOUND, false); const BOOL move_is_into_current_outfit = (mUUID == current_outfit_id); const BOOL move_is_into_my_outfits = (mUUID == my_outifts_id) || model->isObjectDescendentOf(mUUID, my_outifts_id); const BOOL move_is_into_outfit = move_is_into_my_outfits || (getCategory() && getCategory()->getPreferredType()==LLFolderType::FT_OUTFIT); const BOOL move_is_into_marketplacelistings = model->isObjectDescendentOf(mUUID, marketplacelistings_id); const BOOL move_is_into_favorites = (mUUID == favorites_id); + const BOOL move_is_into_lost_and_found = model->isObjectDescendentOf(mUUID, lost_and_found_id); std::vector objects; LLClipboard::instance().pasteFromClipboard(objects); @@ -3714,6 +3722,13 @@ void LLFolderBridge::perform_pasteFromClipboard() LLInventoryObject *obj = model->getObject(item_id); if (obj) { + if (move_is_into_lost_and_found) + { + if (LLAssetType::AT_CATEGORY == obj->getType()) + { + return; + } + } if (move_is_into_current_outfit || move_is_into_outfit) { if (item && can_move_to_outfit(item, move_is_into_current_outfit)) diff --git a/indra/newview/llinventorymodel.cpp b/indra/newview/llinventorymodel.cpp index 2b9607f7a2..a520e0171e 100644 --- a/indra/newview/llinventorymodel.cpp +++ b/indra/newview/llinventorymodel.cpp @@ -2368,7 +2368,11 @@ void LLInventoryModel::buildParentChildMap() } // FIXME note that updateServer() fails with protected // types, so this will not work as intended in that case. - cat->updateServer(TRUE); + // UpdateServer uses AIS, AIS cat move is not implemented yet + // cat->updateServer(TRUE); + + // MoveInventoryFolder message, intentionally per item + cat->updateParentOnServer(FALSE); catsp = getUnlockedCatArray(cat->getParentUUID()); if(catsp) { diff --git a/indra/newview/llinventorypanel.cpp b/indra/newview/llinventorypanel.cpp index 1481992f43..3992b506e9 100644 --- a/indra/newview/llinventorypanel.cpp +++ b/indra/newview/llinventorypanel.cpp @@ -1128,12 +1128,16 @@ void LLInventoryPanel::onSelectionChange(const std::deque& it mCompletionObserver->reset(); for (std::deque::const_iterator it = items.begin(); it != items.end(); ++it) { - LLUUID id = static_cast((*it)->getViewModelItem())->getUUID(); - LLViewerInventoryItem* inv_item = mInventory->getItem(id); - - if (inv_item && !inv_item->isFinished()) + LLFolderViewModelItemInventory* view_model = static_cast((*it)->getViewModelItem()); + if (view_model) { - mCompletionObserver->watchItem(id); + LLUUID id = view_model->getUUID(); + LLViewerInventoryItem* inv_item = mInventory->getItem(id); + + if (inv_item && !inv_item->isFinished()) + { + mCompletionObserver->watchItem(id); + } } } @@ -1159,6 +1163,11 @@ void LLInventoryPanel::onSelectionChange(const std::deque& it LLFolderViewModelItemInventory* fve_listener = static_cast(folder_item->getViewModelItem()); if (fve_listener && (fve_listener->getInventoryType() == LLInventoryType::IT_CATEGORY)) { + if (fve_listener->getInventoryObject() && fve_listener->getInventoryObject()->getIsLinkType()) + { + return; + } + if(prev_folder_item) { LLFolderBridge* prev_bridge = (LLFolderBridge*)prev_folder_item->getViewModelItem(); diff --git a/indra/newview/llpanelface.cpp b/indra/newview/llpanelface.cpp index 1fe42c6510..38f181c803 100644 --- a/indra/newview/llpanelface.cpp +++ b/indra/newview/llpanelface.cpp @@ -731,11 +731,12 @@ void LLPanelFace::updateUI(bool force_set_values /*false*/) bool identical_color = false; if(mColorSwatch) - { + { LLSelectedTE::getColor(color, identical_color); + LLColor4 prev_color = mColorSwatch->get(); mColorSwatch->setOriginal(color); - mColorSwatch->set(color, TRUE); + mColorSwatch->set(color, force_set_values || (prev_color != color) || !editable); mColorSwatch->setValid(editable); mColorSwatch->setEnabled( editable ); @@ -1331,8 +1332,12 @@ void LLPanelFace::updateUI(bool force_set_values /*false*/) // if (!material->getSpecularID().isNull()) { - getChild("shinycolorswatch")->setOriginal(material->getSpecularLightColor()); - getChild("shinycolorswatch")->set(material->getSpecularLightColor(),TRUE); + LLColorSwatchCtrl* shiny_swatch = getChild("shinycolorswatch"); + LLColor4 new_color = material->getSpecularLightColor(); + LLColor4 old_color = shiny_swatch->get(); + + shiny_swatch->setOriginal(new_color); + shiny_swatch->set(new_color, force_set_values || old_color != new_color || !editable); } // Bumpy (normal) diff --git a/indra/newview/lltoastscripttextbox.cpp b/indra/newview/lltoastscripttextbox.cpp index 776ae2ece9..518c6c0ee4 100644 --- a/indra/newview/lltoastscripttextbox.cpp +++ b/indra/newview/lltoastscripttextbox.cpp @@ -28,6 +28,7 @@ #include "lltoastscripttextbox.h" +#include "lldbstrings.h" #include "lllslconstants.h" #include "llnotifications.h" #include "llstyle.h" @@ -35,13 +36,16 @@ #include "llviewertexteditor.h" const S32 LLToastScriptTextbox::DEFAULT_MESSAGE_MAX_LINE_COUNT= 14; +// *TODO: magic numbers - copied from lltoastnotifypanel.cpp(50) which was copied from llnotify.cpp(250) +const S32 MAX_LENGTH = 512 + 20 + DB_FIRST_NAME_BUF_SIZE + DB_LAST_NAME_BUF_SIZE + DB_INV_ITEM_NAME_BUF_SIZE; LLToastScriptTextbox::LLToastScriptTextbox(const LLNotificationPtr& notification) : LLToastPanel(notification) { buildFromFile( "panel_notify_textbox.xml"); - mInfoText = getChild("text_editor_box"); + mInfoText = getChild("text_editor_box"); + mInfoText->setMaxTextLength(MAX_LENGTH); mInfoText->setValue(notification->getMessage()); getChild("ignore_btn")->setClickedCallback(boost::bind(&LLToastScriptTextbox::onClickIgnore, this)); diff --git a/indra/newview/lltoastscripttextbox.h b/indra/newview/lltoastscripttextbox.h index 7aee02dd00..a539124ef1 100644 --- a/indra/newview/lltoastscripttextbox.h +++ b/indra/newview/lltoastscripttextbox.h @@ -48,7 +48,7 @@ public: private: - LLTextBox* mInfoText; + LLTextEditor* mInfoText; void onClickSubmit(); void onClickIgnore(); diff --git a/indra/newview/llviewerobject.cpp b/indra/newview/llviewerobject.cpp index dcd09f66c7..1e46a1cf9e 100644 --- a/indra/newview/llviewerobject.cpp +++ b/indra/newview/llviewerobject.cpp @@ -139,6 +139,7 @@ std::map LLViewerObject::sObjectDataMap; const F32 PHYSICS_TIMESTEP = 1.f / 45.f; const U32 MAX_INV_FILE_READ_FAILS = 25; +const S32 MAX_OBJECT_BINARY_DATA_SIZE = 60 + 16; static LLTrace::BlockTimerStatHandle FTM_CREATE_OBJECT("Create Object"); @@ -1182,7 +1183,9 @@ U32 LLViewerObject::processUpdateMessage(LLMessageSystem *mesgsys, // Use getPosition, not getPositionRegion, since this is what we're comparing directly against. LLVector3 test_pos_parent = getPosition(); - U8 data[60+16]; // This needs to match the largest size below. + // This needs to match the largest size below. See switch(length) + U8 data[MAX_OBJECT_BINARY_DATA_SIZE]; + #ifdef LL_BIG_ENDIAN U16 valswizzle[4]; #endif @@ -1249,7 +1252,7 @@ U32 LLViewerObject::processUpdateMessage(LLMessageSystem *mesgsys, mesgsys->getU8Fast( _PREHASH_ObjectData, _PREHASH_ClickAction, click_action, block_num); mesgsys->getVector3Fast(_PREHASH_ObjectData, _PREHASH_Scale, new_scale, block_num ); length = mesgsys->getSizeFast(_PREHASH_ObjectData, block_num, _PREHASH_ObjectData); - mesgsys->getBinaryDataFast(_PREHASH_ObjectData, _PREHASH_ObjectData, data, length, block_num); + mesgsys->getBinaryDataFast(_PREHASH_ObjectData, _PREHASH_ObjectData, data, length, block_num, MAX_OBJECT_BINARY_DATA_SIZE); mTotalCRC = crc; @@ -1557,7 +1560,7 @@ U32 LLViewerObject::processUpdateMessage(LLMessageSystem *mesgsys, LL_INFOS() << "TI:" << getID() << LL_ENDL; #endif length = mesgsys->getSizeFast(_PREHASH_ObjectData, block_num, _PREHASH_ObjectData); - mesgsys->getBinaryDataFast(_PREHASH_ObjectData, _PREHASH_ObjectData, data, length, block_num); + mesgsys->getBinaryDataFast(_PREHASH_ObjectData, _PREHASH_ObjectData, data, length, block_num, MAX_OBJECT_BINARY_DATA_SIZE); count = 0; LLVector4 collision_plane; diff --git a/indra/newview/llviewerobjectlist.cpp b/indra/newview/llviewerobjectlist.cpp index fc06455c68..2aff71367e 100644 --- a/indra/newview/llviewerobjectlist.cpp +++ b/indra/newview/llviewerobjectlist.cpp @@ -479,8 +479,8 @@ void LLViewerObjectList::processObjectUpdate(LLMessageSystem *mesgsys, compressed_dp.reset(); uncompressed_length = mesgsys->getSizeFast(_PREHASH_ObjectData, i, _PREHASH_Data); - LL_DEBUGS("ObjectUpdate") << "got binary data from message to compressed_dpbuffer" << LL_ENDL; - mesgsys->getBinaryDataFast(_PREHASH_ObjectData, _PREHASH_Data, compressed_dpbuffer, 0, i); + LL_DEBUGS("ObjectUpdate") << "got binary data from message to compressed_dpbuffer" << LL_ENDL; + mesgsys->getBinaryDataFast(_PREHASH_ObjectData, _PREHASH_Data, compressed_dpbuffer, 0, i, 2048); compressed_dp.assignBuffer(compressed_dpbuffer, uncompressed_length); if (update_type != OUT_TERSE_IMPROVED) // OUT_FULL_COMPRESSED only? diff --git a/indra/newview/llviewertexture.cpp b/indra/newview/llviewertexture.cpp index f9cce4e101..092b51238e 100644 --- a/indra/newview/llviewertexture.cpp +++ b/indra/newview/llviewertexture.cpp @@ -111,9 +111,9 @@ const F32 desired_discard_bias_max = (F32)MAX_DISCARD_LEVEL; // max number of le const F64 log_2 = log(2.0); #if ADDRESS_SIZE == 32 -const U32 DESIRED_NORMAL_FETCHED_TEXTURE_SIZE = (U32)LLViewerFetchedTexture::MAX_IMAGE_SIZE_DEFAULT / 2; +const U32 DESIRED_NORMAL_TEXTURE_SIZE = (U32)LLViewerFetchedTexture::MAX_IMAGE_SIZE_DEFAULT / 2; #else -const U32 DESIRED_NORMAL_FETCHED_TEXTURE_SIZE = (U32)LLViewerFetchedTexture::MAX_IMAGE_SIZE_DEFAULT; +const U32 DESIRED_NORMAL_TEXTURE_SIZE = (U32)LLViewerFetchedTexture::MAX_IMAGE_SIZE_DEFAULT; #endif //---------------------------------------------------------------------------------------------- @@ -1594,10 +1594,6 @@ void LLViewerFetchedTexture::processTextureStats() else { U32 desired_size = MAX_IMAGE_SIZE_DEFAULT; // MAX_IMAGE_SIZE_DEFAULT = 1024 and max size ever is 2048 - if (mBoostLevel <= LLGLTexture::BOOST_SCULPTED) - { - desired_size = DESIRED_NORMAL_FETCHED_TEXTURE_SIZE; - } if(!mKnownDrawWidth || !mKnownDrawHeight || mFullWidth <= mKnownDrawWidth || mFullHeight <= mKnownDrawHeight) { if (mFullWidth > desired_size || mFullHeight > desired_size) @@ -3179,6 +3175,7 @@ void LLViewerLODTexture::processTextureStats() if (mKnownDrawWidth && mKnownDrawHeight) { S32 draw_texels = mKnownDrawWidth * mKnownDrawHeight; + draw_texels = llclamp(draw_texels, MIN_IMAGE_AREA, MAX_IMAGE_AREA); // Use log_4 because we're in square-pixel space, so an image // with twice the width and twice the height will have mTexelsPerImage @@ -3219,7 +3216,7 @@ void LLViewerLODTexture::processTextureStats() U32 desired_size = MAX_IMAGE_SIZE_DEFAULT; // MAX_IMAGE_SIZE_DEFAULT = 1024 and max size ever is 2048 if (mBoostLevel <= LLGLTexture::BOOST_SCULPTED) { - desired_size = DESIRED_NORMAL_FETCHED_TEXTURE_SIZE; + desired_size = DESIRED_NORMAL_TEXTURE_SIZE; } if (mFullWidth > desired_size || mFullHeight > desired_size) min_discard = 1.f; diff --git a/indra/newview/llvoiceclient.cpp b/indra/newview/llvoiceclient.cpp index e1dca4ae43..5c107cc10b 100644 --- a/indra/newview/llvoiceclient.cpp +++ b/indra/newview/llvoiceclient.cpp @@ -839,7 +839,7 @@ void LLVoiceClient::addObserver(LLVoiceClientStatusObserver* observer) void LLVoiceClient::removeObserver(LLVoiceClientStatusObserver* observer) { - if (mVoiceModule) mVoiceModule->removeObserver(observer); + if (mVoiceModule && mVoiceModule->singletoneInstanceExists()) mVoiceModule->removeObserver(observer); } void LLVoiceClient::addObserver(LLFriendObserver* observer) @@ -849,7 +849,7 @@ void LLVoiceClient::addObserver(LLFriendObserver* observer) void LLVoiceClient::removeObserver(LLFriendObserver* observer) { - if (mVoiceModule) mVoiceModule->removeObserver(observer); + if (mVoiceModule && mVoiceModule->singletoneInstanceExists()) mVoiceModule->removeObserver(observer); } void LLVoiceClient::addObserver(LLVoiceClientParticipantObserver* observer) @@ -859,7 +859,7 @@ void LLVoiceClient::addObserver(LLVoiceClientParticipantObserver* observer) void LLVoiceClient::removeObserver(LLVoiceClientParticipantObserver* observer) { - if (mVoiceModule) mVoiceModule->removeObserver(observer); + if (mVoiceModule && mVoiceModule->singletoneInstanceExists()) mVoiceModule->removeObserver(observer); } std::string LLVoiceClient::sipURIFromID(const LLUUID &id) diff --git a/indra/newview/llvoiceclient.h b/indra/newview/llvoiceclient.h index 337f01f3e5..758e9cecd7 100644 --- a/indra/newview/llvoiceclient.h +++ b/indra/newview/llvoiceclient.h @@ -121,6 +121,8 @@ public: virtual const LLVoiceVersionInfo& getVersion()=0; + virtual bool singletoneInstanceExists()=0; + ///////////////////// /// @name Tuning //@{ diff --git a/indra/newview/llvoicevivox.cpp b/indra/newview/llvoicevivox.cpp index b039afa734..ee333bcee2 100644 --- a/indra/newview/llvoicevivox.cpp +++ b/indra/newview/llvoicevivox.cpp @@ -4726,6 +4726,11 @@ void LLVivoxVoiceClient::declineInvite(std::string &sessionHandle) } } +bool LLVivoxVoiceClient::singletoneInstanceExists() +{ + return LLVivoxVoiceClient::instanceExists(); +} + void LLVivoxVoiceClient::leaveNonSpatialChannel() { LL_DEBUGS("Voice") << "Request to leave spacial channel." << LL_ENDL; diff --git a/indra/newview/llvoicevivox.h b/indra/newview/llvoicevivox.h index 50862cea1e..210c726452 100644 --- a/indra/newview/llvoicevivox.h +++ b/indra/newview/llvoicevivox.h @@ -73,6 +73,8 @@ public: // Returns true if vivox has successfully logged in and is not in error state virtual bool isVoiceWorking() const; + + virtual bool singletoneInstanceExists(); ///////////////////// /// @name Tuning diff --git a/indra/newview/llvovolume.cpp b/indra/newview/llvovolume.cpp index d4ac5bfe49..976ced7d3e 100644 --- a/indra/newview/llvovolume.cpp +++ b/indra/newview/llvovolume.cpp @@ -488,7 +488,7 @@ U32 LLVOVolume::processUpdateMessage(LLMessageSystem *mesgsys, { U8 tdpbuffer[1024]; LLDataPackerBinaryBuffer tdp(tdpbuffer, 1024); - mesgsys->getBinaryDataFast(_PREHASH_ObjectData, _PREHASH_TextureEntry, tdpbuffer, 0, block_num); + mesgsys->getBinaryDataFast(_PREHASH_ObjectData, _PREHASH_TextureEntry, tdpbuffer, 0, block_num, 1024); S32 result = unpackTEMessage(tdp); if (result & teDirtyBits) { diff --git a/indra/newview/pipeline.cpp b/indra/newview/pipeline.cpp index 1cbd8ecaf1..7be5c86679 100644 --- a/indra/newview/pipeline.cpp +++ b/indra/newview/pipeline.cpp @@ -8681,7 +8681,8 @@ void LLPipeline::renderDeferredLighting() } const LLViewerObject *vobj = drawablep->getVObj(); - if(vobj && vobj->getAvatar() && vobj->getAvatar()->isInMuteList()) + if(vobj && vobj->getAvatar() + && (vobj->getAvatar()->isTooComplex() || vobj->getAvatar()->isInMuteList())) { continue; } diff --git a/indra/newview/skins/default/xui/de/floater_delete_env_preset.xml b/indra/newview/skins/default/xui/de/floater_delete_env_preset.xml index cc14ce640d..ae7d5ef77d 100644 --- a/indra/newview/skins/default/xui/de/floater_delete_env_preset.xml +++ b/indra/newview/skins/default/xui/de/floater_delete_env_preset.xml @@ -1,5 +1,5 @@ - + Wasser-Voreinstellung löschen diff --git a/indra/newview/skins/default/xui/de/floater_edit_sky_preset.xml b/indra/newview/skins/default/xui/de/floater_edit_sky_preset.xml index ea4c5f7ebc..adb7e5e479 100644 --- a/indra/newview/skins/default/xui/de/floater_edit_sky_preset.xml +++ b/indra/newview/skins/default/xui/de/floater_edit_sky_preset.xml @@ -22,7 +22,7 @@ Name der Voreinstellung: - Hinweis: Wenn Sie den Namen Ihrer Voreinstellung ändern, entsteht eine neue Voreinstellung; die vorhandene Voreinstellung wird nicht geändert. + Hinweis: Wenn Sie den Namen Ihrer Voreinstellung ändern, erstellen Sie eine neue Voreinstellung. Die vorhandene Voreinstellung wird nicht geändert. @@ -89,7 +89,7 @@ 0:00 - 3:00 + 6:00 12:00 diff --git a/indra/newview/skins/default/xui/de/floater_edit_water_preset.xml b/indra/newview/skins/default/xui/de/floater_edit_water_preset.xml index 9b9d5e7d77..dc7a18acb8 100644 --- a/indra/newview/skins/default/xui/de/floater_edit_water_preset.xml +++ b/indra/newview/skins/default/xui/de/floater_edit_water_preset.xml @@ -22,7 +22,7 @@ Name der Voreinstellung: - Hinweis: Wenn Sie den Namen Ihrer Voreinstellung ändern, entsteht eine neue Voreinstellung; die vorhandene Voreinstellung wird nicht geändert. + Hinweis: Wenn Sie den Namen Ihrer Voreinstellung ändern, erstellen Sie eine neue Voreinstellung. Die vorhandene Voreinstellung wird nicht geändert. diff --git a/indra/newview/skins/default/xui/de/floater_environment_settings.xml b/indra/newview/skins/default/xui/de/floater_environment_settings.xml index 946416980a..7ad26b23b5 100644 --- a/indra/newview/skins/default/xui/de/floater_environment_settings.xml +++ b/indra/newview/skins/default/xui/de/floater_environment_settings.xml @@ -1,7 +1,7 @@ - Anhand der Optionen unten können Sie die Umgebungseinstellungen für Ihren Viewer anpassen. + Anhand der nachstehenden Optionen können Sie die Umgebungseinstellungen für Ihren Viewer anpassen. @@ -18,7 +18,7 @@ - Himmel / Tageszyklus + Himmel/Tageszyklus diff --git a/indra/newview/skins/default/xui/de/floater_model_preview.xml b/indra/newview/skins/default/xui/de/floater_model_preview.xml index 337fee8cb1..891d707f35 100644 --- a/indra/newview/skins/default/xui/de/floater_model_preview.xml +++ b/indra/newview/skins/default/xui/de/floater_model_preview.xml @@ -4,6 +4,9 @@ Fehler: Fehler beim DAE-Parsen – Details siehe Protokoll. + + Warnung: Verbundform-Matrix befindet sich nicht in Standard-X-Vorwärtsrichtung. + Fehler: Das Material des Modells ist keine Teilmenge des Referenzmodells. diff --git a/indra/newview/skins/default/xui/de/floater_tools.xml b/indra/newview/skins/default/xui/de/floater_tools.xml index 7dd5938601..563d179d4c 100644 --- a/indra/newview/skins/default/xui/de/floater_tools.xml +++ b/indra/newview/skins/default/xui/de/floater_tools.xml @@ -73,9 +73,6 @@