From 910a1d704e35d5789e4a8c34efa89ed8d7f3bf9d Mon Sep 17 00:00:00 2001 From: andreykproductengine Date: Tue, 6 Nov 2018 17:11:22 +0200 Subject: SL-10001 Fixed position parameters trembling at the top of the page when moving --- indra/newview/llmanip.cpp | 71 ++++++++++++++++++++++++++--------------------- 1 file changed, 40 insertions(+), 31 deletions(-) (limited to 'indra/newview') diff --git a/indra/newview/llmanip.cpp b/indra/newview/llmanip.cpp index 8567180dd6..1dc03123eb 100644 --- a/indra/newview/llmanip.cpp +++ b/indra/newview/llmanip.cpp @@ -431,7 +431,6 @@ void LLManip::renderXYZ(const LLVector3 &vec) { const S32 PAD = 10; std::string feedback_string; - LLVector3 camera_pos = LLViewerCamera::getInstance()->getOrigin() + LLViewerCamera::getInstance()->getAtAxis(); S32 window_center_x = gViewerWindow->getWorldViewRectScaled().getWidth() / 2; S32 window_center_y = gViewerWindow->getWorldViewRectScaled().getHeight() / 2; S32 vertical_offset = window_center_y - VERTICAL_OFFSET; @@ -451,37 +450,47 @@ void LLManip::renderXYZ(const LLVector3 &vec) 235, PAD * 2 + 10, LLColor4(0.f, 0.f, 0.f, 0.7f) ); - } - gGL.popMatrix(); - - gViewerWindow->setup3DRender(); - { - LLFontGL* font = LLFontGL::getFontSansSerif(); - LLLocale locale(LLLocale::USER_LOCALE); - LLGLDepthTest gls_depth(GL_FALSE); - // render drop shadowed text - feedback_string = llformat("X: %.3f", vec.mV[VX]); - hud_render_text(utf8str_to_wstring(feedback_string), camera_pos, *font, LLFontGL::NORMAL, LLFontGL::NO_SHADOW, -102.f + 1.f, (F32)vertical_offset - 1.f, LLColor4::black, FALSE); - - feedback_string = llformat("Y: %.3f", vec.mV[VY]); - hud_render_text(utf8str_to_wstring(feedback_string), camera_pos, *font, LLFontGL::NORMAL, LLFontGL::NO_SHADOW, -27.f + 1.f, (F32)vertical_offset - 1.f, LLColor4::black, FALSE); - - feedback_string = llformat("Z: %.3f", vec.mV[VZ]); - hud_render_text(utf8str_to_wstring(feedback_string), camera_pos, *font, LLFontGL::NORMAL, LLFontGL::NO_SHADOW, 48.f + 1.f, (F32)vertical_offset - 1.f, LLColor4::black, FALSE); - - // render text on top - feedback_string = llformat("X: %.3f", vec.mV[VX]); - hud_render_text(utf8str_to_wstring(feedback_string), camera_pos, *font, LLFontGL::NORMAL, LLFontGL::NO_SHADOW, -102.f, (F32)vertical_offset, LLColor4(1.f, 0.5f, 0.5f, 1.f), FALSE); - - gGL.diffuseColor3f(0.5f, 1.f, 0.5f); - feedback_string = llformat("Y: %.3f", vec.mV[VY]); - hud_render_text(utf8str_to_wstring(feedback_string), camera_pos, *font, LLFontGL::NORMAL, LLFontGL::NO_SHADOW, -27.f, (F32)vertical_offset, LLColor4(0.5f, 1.f, 0.5f, 1.f), FALSE); - - gGL.diffuseColor3f(0.5f, 0.5f, 1.f); - feedback_string = llformat("Z: %.3f", vec.mV[VZ]); - hud_render_text(utf8str_to_wstring(feedback_string), camera_pos, *font, LLFontGL::NORMAL, LLFontGL::NO_SHADOW, 48.f, (F32)vertical_offset, LLColor4(0.5f, 0.5f, 1.f, 1.f), FALSE); - } + LLFontGL* font = LLFontGL::getFontSansSerif(); + LLLocale locale(LLLocale::USER_LOCALE); + LLGLDepthTest gls_depth(GL_FALSE); + + // render drop shadowed text (manually because of bigger 'distance') + F32 right_x; + feedback_string = llformat("X: %.3f", vec.mV[VX]); + font->render(utf8str_to_wstring(feedback_string), 0, window_center_x - 102.f + 1.f, window_center_y + vertical_offset - 2.f, LLColor4::black, + LLFontGL::LEFT, LLFontGL::BASELINE, + LLFontGL::NORMAL, LLFontGL::NO_SHADOW, S32_MAX, 1000, &right_x); + + feedback_string = llformat("Y: %.3f", vec.mV[VY]); + font->render(utf8str_to_wstring(feedback_string), 0, window_center_x - 27.f + 1.f, window_center_y + vertical_offset - 2.f, LLColor4::black, + LLFontGL::LEFT, LLFontGL::BASELINE, + LLFontGL::NORMAL, LLFontGL::NO_SHADOW, S32_MAX, 1000, &right_x); + + feedback_string = llformat("Z: %.3f", vec.mV[VZ]); + font->render(utf8str_to_wstring(feedback_string), 0, window_center_x + 48.f + 1.f, window_center_y + vertical_offset - 2.f, LLColor4::black, + LLFontGL::LEFT, LLFontGL::BASELINE, + LLFontGL::NORMAL, LLFontGL::NO_SHADOW, S32_MAX, 1000, &right_x); + + // render text on top + feedback_string = llformat("X: %.3f", vec.mV[VX]); + font->render(utf8str_to_wstring(feedback_string), 0, window_center_x - 102.f, window_center_y + vertical_offset, LLColor4(1.f, 0.5f, 0.5f, 1.f), + LLFontGL::LEFT, LLFontGL::BASELINE, + LLFontGL::NORMAL, LLFontGL::NO_SHADOW, S32_MAX, 1000, &right_x); + + feedback_string = llformat("Y: %.3f", vec.mV[VY]); + font->render(utf8str_to_wstring(feedback_string), 0, window_center_x - 27.f, window_center_y + vertical_offset, LLColor4(0.5f, 1.f, 0.5f, 1.f), + LLFontGL::LEFT, LLFontGL::BASELINE, + LLFontGL::NORMAL, LLFontGL::NO_SHADOW, S32_MAX, 1000, &right_x); + + feedback_string = llformat("Z: %.3f", vec.mV[VZ]); + font->render(utf8str_to_wstring(feedback_string), 0, window_center_x + 48.f, window_center_y + vertical_offset, LLColor4(0.5f, 0.5f, 1.f, 1.f), + LLFontGL::LEFT, LLFontGL::BASELINE, + LLFontGL::NORMAL, LLFontGL::NO_SHADOW, S32_MAX, 1000, &right_x); + } + gGL.popMatrix(); + + gViewerWindow->setup3DRender(); } void LLManip::renderTickText(const LLVector3& pos, const std::string& text, const LLColor4 &color) -- cgit v1.2.3 From 88956491c819525fa07c1d347056f6a6900b4881 Mon Sep 17 00:00:00 2001 From: andreykproductengine Date: Wed, 7 Nov 2018 18:21:16 +0200 Subject: SL-9414 Inconsistent hover vs click action when viewed through transparent prims --- indra/newview/lltoolpie.cpp | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) (limited to 'indra/newview') diff --git a/indra/newview/lltoolpie.cpp b/indra/newview/lltoolpie.cpp index 5082e16685..d8f63b9332 100644 --- a/indra/newview/lltoolpie.cpp +++ b/indra/newview/lltoolpie.cpp @@ -112,8 +112,22 @@ BOOL LLToolPie::handleMouseDown(S32 x, S32 y, MASK mask) mMouseDownX = x; mMouseDownY = y; - //left mouse down always picks transparent (but see handleMouseUp) - mPick = gViewerWindow->pickImmediate(x, y, TRUE, FALSE); + + mPick = gViewerWindow->pickImmediate(x, y, FALSE, FALSE); + LLViewerObject *object = mPick.getObject(); + LLViewerObject *parent = object ? object->getRootEdit() : NULL; + if (!object + || object->isAttachment() + || object->getClickAction() == CLICK_ACTION_DISABLED + || (!useClickAction(mask, object, parent) && !object->flagHandleTouch() && !(parent && parent->flagHandleTouch()))) + { + // Unless we are hovering over actionable visible object + // left mouse down always picks transparent (but see handleMouseUp). + // Also see LLToolPie::handleHover() - priorities are a bit different there. + // Todo: we need a more consistent set of rules to work with + mPick = gViewerWindow->pickImmediate(x, y, TRUE /*transparent*/, FALSE); + } + mPick.mKeyMask = mask; mMouseButtonDown = true; -- cgit v1.2.3 From 592d455cef5ea8be31aef66195c2fc64fc7bbb1f Mon Sep 17 00:00:00 2001 From: maxim_productengine Date: Fri, 9 Nov 2018 16:44:06 +0200 Subject: SL-10018 FIXED Viewer crashes when clicking on a link of a folder in Inventory --- indra/newview/llinventorypanel.cpp | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'indra/newview') diff --git a/indra/newview/llinventorypanel.cpp b/indra/newview/llinventorypanel.cpp index 45dbb446eb..3992b506e9 100644 --- a/indra/newview/llinventorypanel.cpp +++ b/indra/newview/llinventorypanel.cpp @@ -1163,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(); -- cgit v1.2.3 From 5356e8b81a4c79bd9725ba4e6409b1b76083f463 Mon Sep 17 00:00:00 2001 From: maxim_productengine Date: Mon, 12 Nov 2018 17:24:03 +0200 Subject: SL-10043 FIXED Viewer crashes when double-clicking 'For sale' parcel icon on World map in some cases --- indra/newview/llworldmapview.cpp | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) (limited to 'indra/newview') diff --git a/indra/newview/llworldmapview.cpp b/indra/newview/llworldmapview.cpp index 707fe76cef..b88631a71b 100644 --- a/indra/newview/llworldmapview.cpp +++ b/indra/newview/llworldmapview.cpp @@ -1751,9 +1751,12 @@ BOOL LLWorldMapView::handleDoubleClick( S32 x, S32 y, MASK mask ) case MAP_ITEM_LAND_FOR_SALE_ADULT: { LLVector3d pos_global = viewPosToGlobal(x, y); - LLSimInfo* info = LLWorldMap::getInstance()->simInfoFromPosGlobal(pos_global); - LLFloaterReg::hideInstance("world_map"); - LLFloaterReg::showInstance("search", LLSD().with("category", "land").with("query", info->getName())); + std::string sim_name; + if (LLWorldMap::getInstance()->simNameFromPosGlobal(pos_global, sim_name)) + { + LLFloaterReg::hideInstance("world_map"); + LLFloaterReg::showInstance("search", LLSD().with("category", "land").with("query", sim_name)); + } break; } case MAP_ITEM_CLASSIFIED: -- cgit v1.2.3 From 31be136d4056e02cbf5c377f3544235debb7376b Mon Sep 17 00:00:00 2001 From: andreykproductengine Date: Tue, 13 Nov 2018 20:00:47 +0200 Subject: SL-10042 Fixed hang in inventory floater --- indra/newview/llfloateravatarpicker.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'indra/newview') diff --git a/indra/newview/llfloateravatarpicker.cpp b/indra/newview/llfloateravatarpicker.cpp index c5561fe011..33099db1b9 100644 --- a/indra/newview/llfloateravatarpicker.cpp +++ b/indra/newview/llfloateravatarpicker.cpp @@ -812,7 +812,7 @@ bool LLFloaterAvatarPicker::isSelectBtnEnabled() { bool ret_val = visibleItemsSelected(); - if ( ret_val ) + if ( ret_val && !isMinimized()) { std::string acvtive_panel_name; LLScrollListCtrl* list = NULL; -- cgit v1.2.3 From e867e619dbb62b4c9ebc1d358c6fea048f87190c Mon Sep 17 00:00:00 2001 From: AndreyL ProductEngine Date: Thu, 15 Nov 2018 00:27:26 +0200 Subject: build fix --- indra/newview/lltoolpie.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'indra/newview') diff --git a/indra/newview/lltoolpie.cpp b/indra/newview/lltoolpie.cpp index 5cfb2026e0..1b76d249cb 100644 --- a/indra/newview/lltoolpie.cpp +++ b/indra/newview/lltoolpie.cpp @@ -111,7 +111,7 @@ BOOL LLToolPie::handleMouseDown(S32 x, S32 y, MASK mask) mMouseOutsideSlop = FALSE; mMouseDownX = x; mMouseDownY = y; - LLTimer pick_timer;. + LLTimer pick_timer; BOOL pick_rigged = false; //gSavedSettings.getBOOL("AnimatedObjectsAllowLeftClick"); mPick = gViewerWindow->pickImmediate(x, y, FALSE, pick_rigged); LLViewerObject *object = mPick.getObject(); -- cgit v1.2.3 From ab0d3f09d7a356eae758de03d533fabb3a380da1 Mon Sep 17 00:00:00 2001 From: andreykproductengine Date: Wed, 14 Nov 2018 17:15:11 +0200 Subject: SL-9975 All offline inventory offers from scripted objects are lost --- indra/newview/llimprocessing.cpp | 32 +++++++++++++++++++++++++------- 1 file changed, 25 insertions(+), 7 deletions(-) (limited to 'indra/newview') diff --git a/indra/newview/llimprocessing.cpp b/indra/newview/llimprocessing.cpp index e76b3d118e..d59c301210 100644 --- a/indra/newview/llimprocessing.cpp +++ b/indra/newview/llimprocessing.cpp @@ -854,15 +854,33 @@ void LLIMProcessing::processNewMessage(LLUUID from_id, } else // IM_TASK_INVENTORY_OFFERED { - if (sizeof(S8) != binary_bucket_size) + if (offline == IM_OFFLINE && session_id.isNull() && aux_id.notNull() && binary_bucket_size > sizeof(S8)* 5) { - LL_WARNS("Messaging") << "Malformed inventory offer from object" << LL_ENDL; - delete info; - break; + // cap received offline message + std::string str_bucket = ll_safe_string((char*)binary_bucket, binary_bucket_size); + typedef boost::tokenizer > tokenizer; + boost::char_separator sep("|", "", boost::keep_empty_tokens); + tokenizer tokens(str_bucket, sep); + tokenizer::iterator iter = tokens.begin(); + + info->mType = (LLAssetType::EType)(atoi((*(iter++)).c_str())); + // Note There is more elements in 'tokens' ... + + info->mObjectID = LLUUID::null; + info->mFromObject = TRUE; + } + else + { + if (sizeof(S8) != binary_bucket_size) + { + LL_WARNS("Messaging") << "Malformed inventory offer from object" << LL_ENDL; + delete info; + break; + } + info->mType = (LLAssetType::EType) binary_bucket[0]; + info->mObjectID = LLUUID::null; + info->mFromObject = TRUE; } - info->mType = (LLAssetType::EType) binary_bucket[0]; - info->mObjectID = LLUUID::null; - info->mFromObject = TRUE; } info->mIM = dialog; -- cgit v1.2.3 From 6e934b1dba3928559e8eea619910cb61df3d2472 Mon Sep 17 00:00:00 2001 From: andreykproductengine Date: Thu, 15 Nov 2018 15:14:00 +0200 Subject: SL-9782 Fixed The Stand button doesn't lay anymore on the lower bar --- indra/newview/llmoveview.cpp | 16 ---------------- indra/newview/llmoveview.h | 2 -- 2 files changed, 18 deletions(-) (limited to 'indra/newview') diff --git a/indra/newview/llmoveview.cpp b/indra/newview/llmoveview.cpp index 301487b994..19f238d99a 100644 --- a/indra/newview/llmoveview.cpp +++ b/indra/newview/llmoveview.cpp @@ -702,11 +702,9 @@ void LLPanelStandStopFlying::updatePosition() { if (mAttached) return; - S32 y_pos = 0; S32 bottom_tb_center = 0; if (LLToolBar* toolbar_bottom = gToolBarView->getToolbar(LLToolBarEnums::TOOLBAR_BOTTOM)) { - y_pos = toolbar_bottom->getRect().getHeight(); bottom_tb_center = toolbar_bottom->getRect().getCenterX(); } @@ -716,20 +714,6 @@ void LLPanelStandStopFlying::updatePosition() left_tb_width = toolbar_left->getRect().getWidth(); } - if (!mStateManagementButtons.get()) // Obsolete?!! - { - LLPanel* panel_ssf_container = gToolBarView->getChild("state_management_buttons_container"); - if (panel_ssf_container) - { - mStateManagementButtons = panel_ssf_container->getHandle(); - } - } - - if(LLPanel* panel_ssf_container = mStateManagementButtons.get()) - { - panel_ssf_container->setOrigin(0, y_pos); - } - if (gToolBarView != NULL && gToolBarView->getToolbar(LLToolBarEnums::TOOLBAR_LEFT)->hasButtons()) { S32 x_pos = bottom_tb_center - getRect().getWidth() / 2 - left_tb_width; diff --git a/indra/newview/llmoveview.h b/indra/newview/llmoveview.h index 4a31f2a814..e8b9a6fdb2 100644 --- a/indra/newview/llmoveview.h +++ b/indra/newview/llmoveview.h @@ -172,8 +172,6 @@ private: */ LLHandle mOriginalParent; - LLHandle mStateManagementButtons; - /** * True if the panel is currently attached to the movement controls floater. * -- cgit v1.2.3 From e0072664237b6ac0cae45577b436e5a25800e2f1 Mon Sep 17 00:00:00 2001 From: maxim_productengine Date: Mon, 19 Nov 2018 17:24:06 +0200 Subject: SL-5366 FIXED Chinese characters are not displaying correctly in TOS loading text --- indra/newview/skins/default/xui/zh/floater_tos.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'indra/newview') diff --git a/indra/newview/skins/default/xui/zh/floater_tos.xml b/indra/newview/skins/default/xui/zh/floater_tos.xml index 4cac07cd21..2f02316fc0 100644 --- a/indra/newview/skins/default/xui/zh/floater_tos.xml +++ b/indra/newview/skins/default/xui/zh/floater_tos.xml @@ -4,7 +4,7 @@ http://secondlife.com/app/tos/ - data:text/html,%3Chtml%3E%3Chead%3E%3C/head%3E%3Cbody text=%22000000%22%3E%3Ch2%3E 正在載入 %3Ca%20target%3D%22_external%22%20href%3D%22http%3A//secondlife.com/app/tos/%22%3ETerms%20of%20Service%3C/a%3E...%3C/h2%3E %3C/body%3E %3C/html%3E + data:text/html;charset=utf-8,%3Chtml%3E%3Chead%3E%3C/head%3E%3Cbody text=%22000000%22%3E%3Ch2%3E 正在載入 %3Ca%20target%3D%22_external%22%20href%3D%22http%3A//secondlife.com/app/tos/%22%3ETerms%20of%20Service%3C/a%3E...%3C/h2%3E %3C/body%3E %3C/html%3E 請閱讀並遵守Second Life使用條款、隱私政策、服務條款,包括同意在發生爭議時接受仲裁並放棄採取集體或群體求訴的規定。 繼續登入[SECOND_LIFE]前,你必須同意這些條款。 -- cgit v1.2.3 From a72a4cb394fcce65b10126d631b270acf6009eb4 Mon Sep 17 00:00:00 2001 From: andreykproductengine Date: Fri, 16 Nov 2018 17:42:31 +0200 Subject: SL-4730 Reduce bias trashing --- indra/newview/llviewertexture.cpp | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) (limited to 'indra/newview') diff --git a/indra/newview/llviewertexture.cpp b/indra/newview/llviewertexture.cpp index d5aa249883..d2157f33cf 100644 --- a/indra/newview/llviewertexture.cpp +++ b/indra/newview/llviewertexture.cpp @@ -474,6 +474,7 @@ void LLViewerTexture::initClass() // tuning params const F32 discard_bias_delta = .25f; const F32 discard_delta_time = 0.5f; +const F32 GPU_MEMORY_CHECK_WAIT_TIME = 1.0f; // non-const (used externally F32 texmem_lower_bound_scale = 0.85f; F32 texmem_middle_bound_scale = 0.925f; @@ -483,12 +484,12 @@ static LLTrace::BlockTimerStatHandle FTM_TEXTURE_MEMORY_CHECK("Memory Check"); //static bool LLViewerTexture::isMemoryForTextureLow() { - const F32 WAIT_TIME = 1.0f; //second static LLFrameTimer timer; + static bool low_mem = false; - if(timer.getElapsedTimeF32() < WAIT_TIME) //call this once per second. + if(timer.getElapsedTimeF32() < GPU_MEMORY_CHECK_WAIT_TIME) //call this once per second. { - return false; + return low_mem; } timer.reset(); @@ -497,7 +498,7 @@ bool LLViewerTexture::isMemoryForTextureLow() const S32Megabytes MIN_FREE_TEXTURE_MEMORY(20); //MB Changed to 20 MB per MAINT-6882 const S32Megabytes MIN_FREE_MAIN_MEMORY(100); //MB - bool low_mem = false; + low_mem = false; if (gGLManager.mHasATIMemInfo) { S32 meminfo[4]; @@ -572,10 +573,14 @@ void LLViewerTexture::updateClass(const F32 velocity, const F32 angular_velocity sEvaluationTimer.reset(); } } - else if(sEvaluationTimer.getElapsedTimeF32() > discard_delta_time && isMemoryForTextureLow()) + else if(isMemoryForTextureLow()) { - sDesiredDiscardBias += discard_bias_delta; - sEvaluationTimer.reset(); + // Note: isMemoryForTextureLow() uses 1s delay, make sure we waited enough for it to restore + if (sEvaluationTimer.getElapsedTimeF32() > GPU_MEMORY_CHECK_WAIT_TIME) + { + sDesiredDiscardBias += discard_bias_delta; + sEvaluationTimer.reset(); + } } else if (sDesiredDiscardBias > 0.0f && sBoundTextureMemory < sMaxBoundTextureMemory * texmem_lower_bound_scale && -- cgit v1.2.3 From ca9d39c6c7f0acd2cf6f8a6e894d09dcf8e6a353 Mon Sep 17 00:00:00 2001 From: Cinder Date: Thu, 25 Aug 2016 13:42:37 -0500 Subject: SL-3404 Don't send ParcelPropertiesRequest on every cursor position change --- indra/newview/lltoolpie.cpp | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) (limited to 'indra/newview') diff --git a/indra/newview/lltoolpie.cpp b/indra/newview/lltoolpie.cpp index 1b76d249cb..697db01d11 100644 --- a/indra/newview/lltoolpie.cpp +++ b/indra/newview/lltoolpie.cpp @@ -870,13 +870,11 @@ static bool needs_tooltip(LLSelectNode* nodep) BOOL LLToolPie::handleTooltipLand(std::string line, std::string tooltip_msg) { - LLViewerParcelMgr::getInstance()->setHoverParcel( mHoverPick.mPosGlobal ); - // - // Do not show hover for land unless prefs are set to allow it. - // - + // Do not show hover for land unless prefs are set to allow it. if (!gSavedSettings.getBOOL("ShowLandHoverTip")) return TRUE; - + + LLViewerParcelMgr::getInstance()->setHoverParcel( mHoverPick.mPosGlobal ); + // Didn't hit an object, but since we have a land point we // must be hovering over land. -- cgit v1.2.3 From 4f6037a823b3d53a9051aec172cf432c63775b39 Mon Sep 17 00:00:00 2001 From: andreykproductengine Date: Mon, 19 Nov 2018 19:20:57 +0200 Subject: SL-3404 Named log output for easier debugging and testing --- indra/newview/llviewerparcelmgr.cpp | 28 +++++++++++++++------------- 1 file changed, 15 insertions(+), 13 deletions(-) (limited to 'indra/newview') diff --git a/indra/newview/llviewerparcelmgr.cpp b/indra/newview/llviewerparcelmgr.cpp index f4d14a39fe..5477d2d444 100644 --- a/indra/newview/llviewerparcelmgr.cpp +++ b/indra/newview/llviewerparcelmgr.cpp @@ -957,7 +957,7 @@ void LLViewerParcelMgr::sendParcelGodForceOwner(const LLUUID& owner_id) return; } - LL_INFOS() << "Claiming " << mWestSouth << " to " << mEastNorth << LL_ENDL; + LL_INFOS("ParcelMgr") << "Claiming " << mWestSouth << " to " << mEastNorth << LL_ENDL; // BUG: Only works for the region containing mWestSouthBottom LLVector3d east_north_region_check( mEastNorth ); @@ -980,7 +980,7 @@ void LLViewerParcelMgr::sendParcelGodForceOwner(const LLUUID& owner_id) return; } - LL_INFOS() << "Region " << region->getOriginGlobal() << LL_ENDL; + LL_INFOS("ParcelMgr") << "Region " << region->getOriginGlobal() << LL_ENDL; LLSD payload; payload["owner_id"] = owner_id; @@ -1120,8 +1120,8 @@ LLViewerParcelMgr::ParcelBuyInfo* LLViewerParcelMgr::setupParcelBuy( if (is_claim) { - LL_INFOS() << "Claiming " << mWestSouth << " to " << mEastNorth << LL_ENDL; - LL_INFOS() << "Region " << region->getOriginGlobal() << LL_ENDL; + LL_INFOS("ParcelMgr") << "Claiming " << mWestSouth << " to " << mEastNorth << LL_ENDL; + LL_INFOS("ParcelMgr") << "Region " << region->getOriginGlobal() << LL_ENDL; // BUG: Only works for the region containing mWestSouthBottom LLVector3d east_north_region_check( mEastNorth ); @@ -1294,8 +1294,6 @@ void LLViewerParcelMgr::sendParcelPropertiesUpdate(LLParcel* parcel, bool use_ag if (!region) return; - //LL_INFOS() << "found region: " << region->getName() << LL_ENDL; - LLSD body; std::string url = region->getCapability("ParcelPropertiesUpdate"); if (!url.empty()) @@ -1304,7 +1302,7 @@ void LLViewerParcelMgr::sendParcelPropertiesUpdate(LLParcel* parcel, bool use_ag U32 message_flags = 0x01; body["flags"] = ll_sd_from_U32(message_flags); parcel->packMessage(body); - LL_INFOS() << "Sending parcel properties update via capability to: " + LL_INFOS("ParcelMgr") << "Sending parcel properties update via capability to: " << url << LL_ENDL; LLCoreHttpUtil::HttpCoroutineAdapter::messageHttpPost(url, body, @@ -1356,6 +1354,8 @@ void LLViewerParcelMgr::setHoverParcel(const LLVector3d& pos) return; } + LL_DEBUGS("ParcelMgr") << "Requesting parcel properties on hover, for " << pos << LL_ENDL; + // Send a rectangle around the point. // This means the parcel sent back is at least a rectangle around the point, @@ -1472,7 +1472,7 @@ void LLViewerParcelMgr::processParcelProperties(LLMessageSystem *msg, void **use if (request_result == PARCEL_RESULT_NO_DATA) { // no valid parcel data - LL_INFOS() << "no valid parcel data" << LL_ENDL; + LL_INFOS("ParcelMgr") << "no valid parcel data" << LL_ENDL; return; } @@ -1504,7 +1504,7 @@ void LLViewerParcelMgr::processParcelProperties(LLMessageSystem *msg, void **use } else { - LL_INFOS() << "out of order agent parcel sequence id " << sequence_id + LL_INFOS("ParcelMgr") << "out of order agent parcel sequence id " << sequence_id << " last good " << parcel_mgr.mAgentParcelSequenceID << LL_ENDL; return; @@ -1552,6 +1552,8 @@ void LLViewerParcelMgr::processParcelProperties(LLMessageSystem *msg, void **use msg->getS32("ParcelData", "OtherCleanTime", other_clean_time ); + LL_DEBUGS("ParcelMgr") << "Processing parcel " << local_id << " update, target(sequence): " << sequence_id << LL_ENDL; + // Actually extract the data. if (parcel) { @@ -1790,7 +1792,7 @@ void LLViewerParcelMgr::processParcelProperties(LLMessageSystem *msg, void **use } else { - LL_INFOS() << "Stopping parcel music (invalid audio stream URL)" << LL_ENDL; + LL_INFOS("ParcelMgr") << "Stopping parcel music (invalid audio stream URL)" << LL_ENDL; // clears the URL // null value causes fade out LLViewerAudio::getInstance()->startInternetStreamWithAutoFade(LLStringUtil::null); @@ -1798,7 +1800,7 @@ void LLViewerParcelMgr::processParcelProperties(LLMessageSystem *msg, void **use } else if (!gAudiop->getInternetStreamURL().empty()) { - LL_INFOS() << "Stopping parcel music (parcel stream URL is empty)" << LL_ENDL; + LL_INFOS("ParcelMgr") << "Stopping parcel music (parcel stream URL is empty)" << LL_ENDL; // null value causes fade out LLViewerAudio::getInstance()->startInternetStreamWithAutoFade(LLStringUtil::null); } @@ -1827,7 +1829,7 @@ void LLViewerParcelMgr::optionally_start_music(const std::string& music_url) gSavedSettings.getBOOL(LLViewerMedia::AUTO_PLAY_MEDIA_SETTING) && gSavedSettings.getBOOL("MediaTentativeAutoPlay"))) { - LL_INFOS() << "Starting parcel music " << music_url << LL_ENDL; + LL_INFOS("ParcelMgr") << "Starting parcel music " << music_url << LL_ENDL; LLViewerAudio::getInstance()->startInternetStreamWithAutoFade(music_url); } else @@ -1855,7 +1857,7 @@ void LLViewerParcelMgr::processParcelAccessListReply(LLMessageSystem *msg, void if (parcel_id != parcel->getLocalID()) { - LL_WARNS_ONCE("") << "processParcelAccessListReply for parcel " << parcel_id + LL_WARNS_ONCE("ParcelMgr") << "processParcelAccessListReply for parcel " << parcel_id << " which isn't the selected parcel " << parcel->getLocalID()<< LL_ENDL; return; } -- cgit v1.2.3 From faf79976c0ad3ea9406f3c13348c6ee27837ef2c Mon Sep 17 00:00:00 2001 From: Mnikolenko ProductEngine Date: Tue, 20 Nov 2018 15:53:43 +0200 Subject: SL-10094 FIXED Mute sound should ONLY mute the viewer's sounds, not the whole computer's (Mac) sound. --- indra/newview/llappviewermacosx.cpp | 62 ------------------------------------- indra/newview/llappviewermacosx.h | 4 --- 2 files changed, 66 deletions(-) (limited to 'indra/newview') diff --git a/indra/newview/llappviewermacosx.cpp b/indra/newview/llappviewermacosx.cpp index d472f8926b..1db48119aa 100644 --- a/indra/newview/llappviewermacosx.cpp +++ b/indra/newview/llappviewermacosx.cpp @@ -337,68 +337,6 @@ std::string LLAppViewerMacOSX::generateSerialNumber() return serial_md5; } -static AudioDeviceID get_default_audio_output_device(void) -{ - AudioDeviceID device = 0; - UInt32 size = sizeof(device); - AudioObjectPropertyAddress device_address = { kAudioHardwarePropertyDefaultOutputDevice, - kAudioObjectPropertyScopeGlobal, - kAudioObjectPropertyElementMaster }; - - OSStatus err = AudioObjectGetPropertyData(kAudioObjectSystemObject, &device_address, 0, NULL, &size, &device); - if(err != noErr) - { - LL_DEBUGS("SystemMute") << "Couldn't get default audio output device (0x" << std::hex << err << ")" << LL_ENDL; - } - - return device; -} - -//virtual -void LLAppViewerMacOSX::setMasterSystemAudioMute(bool new_mute) -{ - AudioDeviceID device = get_default_audio_output_device(); - - if(device != 0) - { - UInt32 mute = new_mute; - AudioObjectPropertyAddress device_address = { kAudioDevicePropertyMute, - kAudioDevicePropertyScopeOutput, - kAudioObjectPropertyElementMaster }; - - OSStatus err = AudioObjectSetPropertyData(device, &device_address, 0, NULL, sizeof(mute), &mute); - if(err != noErr) - { - LL_INFOS("SystemMute") << "Couldn't set audio mute property (0x" << std::hex << err << ")" << LL_ENDL; - } - } -} - -//virtual -bool LLAppViewerMacOSX::getMasterSystemAudioMute() -{ - // Assume the system isn't muted - UInt32 mute = 0; - - AudioDeviceID device = get_default_audio_output_device(); - - if(device != 0) - { - UInt32 size = sizeof(mute); - AudioObjectPropertyAddress device_address = { kAudioDevicePropertyMute, - kAudioDevicePropertyScopeOutput, - kAudioObjectPropertyElementMaster }; - - OSStatus err = AudioObjectGetPropertyData(device, &device_address, 0, NULL, &size, &mute); - if(err != noErr) - { - LL_DEBUGS("SystemMute") << "Couldn't get audio mute property (0x" << std::hex << err << ")" << LL_ENDL; - } - } - - return (mute != 0); -} - void handleUrl(const char* url_utf8) { if (url_utf8 && gViewerAppPtr) diff --git a/indra/newview/llappviewermacosx.h b/indra/newview/llappviewermacosx.h index ebb41a495c..d5a80864be 100644 --- a/indra/newview/llappviewermacosx.h +++ b/indra/newview/llappviewermacosx.h @@ -42,10 +42,6 @@ public: // virtual bool init(); // Override to do application initialization - // mute/unmute the system's master audio - virtual void setMasterSystemAudioMute(bool mute); - virtual bool getMasterSystemAudioMute(); - protected: virtual bool restoreErrorTrap(); virtual void initCrashReporting(bool reportFreeze); -- cgit v1.2.3 From c99a66a482d8893055be6e130bae22d3d67d123e Mon Sep 17 00:00:00 2001 From: maxim_productengine Date: Wed, 21 Nov 2018 17:41:15 +0200 Subject: SL-10113 FIXED [Win] File pickers are not threaded in XUI preview floater --- indra/newview/llfloateruipreview.cpp | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) (limited to 'indra/newview') diff --git a/indra/newview/llfloateruipreview.cpp b/indra/newview/llfloateruipreview.cpp index 76ad2146f1..4e0b27a4f8 100644 --- a/indra/newview/llfloateruipreview.cpp +++ b/indra/newview/llfloateruipreview.cpp @@ -60,6 +60,7 @@ #include "llfloaterreg.h" #include "llscrollcontainer.h" // scroll container for overlapping elements #include "lllivefile.h" // live file poll/stat/reload +#include "llviewermenufile.h" // LLFilePickerReplyThread // Boost (for linux/unix command-line execv) #include @@ -206,7 +207,9 @@ private: void onClickSaveAll(S32 id); void onClickEditFloater(); void onClickBrowseForEditor(); + void getExecutablePath(const std::vector& filenames); void onClickBrowseForDiffs(); + void getDiffsFilePath(const std::vector& filenames); void onClickToggleDiffHighlighting(); void onClickToggleOverlapping(); void onClickCloseDisplayedFloater(S32 id); @@ -1019,15 +1022,14 @@ void LLFloaterUIPreview::onClickEditFloater() // Respond to button click to browse for an executable with which to edit XML files void LLFloaterUIPreview::onClickBrowseForEditor() { - // Let the user choose an executable through the file picker dialog box - LLFilePicker& picker = LLFilePicker::instance(); - if (!picker.getOpenFile(LLFilePicker::FFLOAD_EXE)) - { - return; // user cancelled -- do nothing - } + // Let the user choose an executable through the file picker dialog box + (new LLFilePickerReplyThread(boost::bind(&LLFloaterUIPreview::getExecutablePath, this, _1), LLFilePicker::FFLOAD_EXE, false))->getFile(); +} +void LLFloaterUIPreview::getExecutablePath(const std::vector& filenames) +{ // put the selected path into text field - const std::string chosen_path = picker.getFirstFile(); + const std::string chosen_path = filenames[0]; std::string executable_path = chosen_path; #if LL_DARWIN // on Mac, if it's an application bundle, figure out the actual path from the Info.plist file @@ -1075,15 +1077,13 @@ void LLFloaterUIPreview::onClickBrowseForEditor() void LLFloaterUIPreview::onClickBrowseForDiffs() { // create load dialog box - LLFilePicker::ELoadFilter type = (LLFilePicker::ELoadFilter)((intptr_t)((void*)LLFilePicker::FFLOAD_XML)); // nothing for *.exe so just use all - LLFilePicker& picker = LLFilePicker::instance(); - if (!picker.getOpenFile(type)) // user cancelled -- do nothing - { - return; - } + (new LLFilePickerReplyThread(boost::bind(&LLFloaterUIPreview::getDiffsFilePath, this, _1), LLFilePicker::FFLOAD_XML, false))->getFile(); +} +void LLFloaterUIPreview::getDiffsFilePath(const std::vector& filenames) +{ // put the selected path into text field - const std::string chosen_path = picker.getFirstFile(); + const std::string chosen_path = filenames[0]; mDiffPathTextBox->setText(std::string(chosen_path)); // copy the path to the executable to the textfield for display and later fetching if(LLView::sHighlightingDiffs) // if we're already highlighting, toggle off and then on so we get the data from the new file { -- cgit v1.2.3 From dea5450d789cb876856db8fc0159e1df34009c19 Mon Sep 17 00:00:00 2001 From: andreykproductengine Date: Tue, 20 Nov 2018 19:47:00 +0200 Subject: SL-4730 Prevent viewer from getting more texture details when low on memory --- indra/newview/llviewertexture.cpp | 129 +++++++++++++++++++++----------------- indra/newview/llviewertexture.h | 7 ++- 2 files changed, 78 insertions(+), 58 deletions(-) (limited to 'indra/newview') diff --git a/indra/newview/llviewertexture.cpp b/indra/newview/llviewertexture.cpp index d2157f33cf..db3adcec2b 100644 --- a/indra/newview/llviewertexture.cpp +++ b/indra/newview/llviewertexture.cpp @@ -100,7 +100,7 @@ const S32 MAX_CACHED_RAW_TERRAIN_IMAGE_AREA = 128 * 128; const S32 DEFAULT_ICON_DIMENTIONS = 32; S32 LLViewerTexture::sMinLargeImageSize = 65536; //256 * 256. S32 LLViewerTexture::sMaxSmallImageSize = MAX_CACHED_RAW_IMAGE_AREA; -BOOL LLViewerTexture::sFreezeImageScalingDown = FALSE; +bool LLViewerTexture::sFreezeImageUpdates = false; F32 LLViewerTexture::sCurrentTime = 0.0f; F32 LLViewerTexture::sTexelPixelRatio = 1.0f; @@ -484,53 +484,68 @@ static LLTrace::BlockTimerStatHandle FTM_TEXTURE_MEMORY_CHECK("Memory Check"); //static bool LLViewerTexture::isMemoryForTextureLow() { - static LLFrameTimer timer; - static bool low_mem = false; + // Note: we need to figure out a better source for 'min' values, + // what is free for low end at minimal settings is 'nothing left' + // for higher end gpus at high settings. + const S32Megabytes MIN_FREE_TEXTURE_MEMORY(20); + const S32Megabytes MIN_FREE_MAIN_MEMORY(100); - if(timer.getElapsedTimeF32() < GPU_MEMORY_CHECK_WAIT_TIME) //call this once per second. - { - return low_mem; - } - timer.reset(); + S32Megabytes gpu; + S32Megabytes physical; + getGPUMemoryForTextures(gpu, physical); - LL_RECORD_BLOCK_TIME(FTM_TEXTURE_MEMORY_CHECK); + return (gpu < MIN_FREE_TEXTURE_MEMORY) || (physical < MIN_FREE_MAIN_MEMORY); +} - const S32Megabytes MIN_FREE_TEXTURE_MEMORY(20); //MB Changed to 20 MB per MAINT-6882 - const S32Megabytes MIN_FREE_MAIN_MEMORY(100); //MB +//static +bool LLViewerTexture::isMemoryForTextureSuficientlyFree() +{ + const S32Megabytes DESIRED_FREE_TEXTURE_MEMORY(50); + const S32Megabytes DESIRED_FREE_MAIN_MEMORY(200); - low_mem = false; - if (gGLManager.mHasATIMemInfo) - { - S32 meminfo[4]; - glGetIntegerv(GL_TEXTURE_FREE_MEMORY_ATI, meminfo); + S32Megabytes gpu; + S32Megabytes physical; + getGPUMemoryForTextures(gpu, physical); - if((S32Megabytes)meminfo[0] < MIN_FREE_TEXTURE_MEMORY) - { - low_mem = true; - } + return (gpu > DESIRED_FREE_TEXTURE_MEMORY) && (physical > DESIRED_FREE_MAIN_MEMORY); +} - if(!low_mem) //check main memory, only works for windows. - { - LLMemory::updateMemoryInfo(); - if(LLMemory::getAvailableMemKB() < MIN_FREE_TEXTURE_MEMORY) - { - low_mem = true; - } - } - } - //Enabled this branch per MAINT-6882 - else if (gGLManager.mHasNVXMemInfo) - { - S32 free_memory; - glGetIntegerv(GL_GPU_MEMORY_INFO_CURRENT_AVAILABLE_VIDMEM_NVX, &free_memory); - - if ((S32Megabytes)(free_memory / 1024) < MIN_FREE_TEXTURE_MEMORY) - { - low_mem = true; - } - } +//static +void LLViewerTexture::getGPUMemoryForTextures(S32Megabytes &gpu, S32Megabytes &physical) +{ + static LLFrameTimer timer; + static S32Megabytes gpu_res = S32Megabytes(S32_MAX); + static S32Megabytes physical_res = S32Megabytes(S32_MAX); + + if (timer.getElapsedTimeF32() < GPU_MEMORY_CHECK_WAIT_TIME) //call this once per second. + { + gpu = gpu_res; + physical = physical_res; + return; + } + timer.reset(); + + LL_RECORD_BLOCK_TIME(FTM_TEXTURE_MEMORY_CHECK); + + if (gGLManager.mHasATIMemInfo) + { + S32 meminfo[4]; + glGetIntegerv(GL_TEXTURE_FREE_MEMORY_ATI, meminfo); + gpu_res = (S32Megabytes)meminfo[0]; + + //check main memory, only works for windows. + LLMemory::updateMemoryInfo(); + physical_res = LLMemory::getAvailableMemKB(); + } + else if (gGLManager.mHasNVXMemInfo) + { + S32 free_memory; + glGetIntegerv(GL_GPU_MEMORY_INFO_CURRENT_AVAILABLE_VIDMEM_NVX, &free_memory); + gpu_res = (S32Megabytes)(free_memory / 1024); + } - return low_mem; + gpu = gpu_res; + physical = physical_res; } static LLTrace::BlockTimerStatHandle FTM_TEXTURE_UPDATE_MEDIA("Media"); @@ -575,17 +590,18 @@ void LLViewerTexture::updateClass(const F32 velocity, const F32 angular_velocity } else if(isMemoryForTextureLow()) { - // Note: isMemoryForTextureLow() uses 1s delay, make sure we waited enough for it to restore + // Note: isMemoryForTextureLow() uses 1s delay, make sure we waited enough for it to recheck if (sEvaluationTimer.getElapsedTimeF32() > GPU_MEMORY_CHECK_WAIT_TIME) { sDesiredDiscardBias += discard_bias_delta; sEvaluationTimer.reset(); } } - else if (sDesiredDiscardBias > 0.0f && - sBoundTextureMemory < sMaxBoundTextureMemory * texmem_lower_bound_scale && - sTotalTextureMemory < sMaxTotalTextureMem * texmem_lower_bound_scale) - { + else if (sDesiredDiscardBias > 0.0f + && sBoundTextureMemory < sMaxBoundTextureMemory * texmem_lower_bound_scale + && sTotalTextureMemory < sMaxTotalTextureMem * texmem_lower_bound_scale + && isMemoryForTextureSuficientlyFree()) + { // If we are using less texture memory than we should, // scale down the desired discard level if (sEvaluationTimer.getElapsedTimeF32() > discard_delta_time) @@ -595,14 +611,8 @@ void LLViewerTexture::updateClass(const F32 velocity, const F32 angular_velocity } } sDesiredDiscardBias = llclamp(sDesiredDiscardBias, desired_discard_bias_min, desired_discard_bias_max); - - F32 camera_moving_speed = LLViewerCamera::getInstance()->getAverageSpeed(); - F32 camera_angular_speed = LLViewerCamera::getInstance()->getAverageAngularSpeed(); - sCameraMovingBias = llmax(0.2f * camera_moving_speed, 2.0f * camera_angular_speed - 1); - sCameraMovingDiscardBias = (S8)(sCameraMovingBias); - LLViewerTexture::sFreezeImageScalingDown = (sBoundTextureMemory < 0.75f * sMaxBoundTextureMemory * texmem_middle_bound_scale) && - (sTotalTextureMemory < 0.75f * sMaxTotalTextureMem * texmem_middle_bound_scale); + LLViewerTexture::sFreezeImageUpdates = sDesiredDiscardBias > (desired_discard_bias_max - 1.0f); } //end of static functions @@ -3126,9 +3136,9 @@ S8 LLViewerLODTexture::getType() const return LLViewerTexture::LOD_TEXTURE; } -BOOL LLViewerLODTexture::isUpdateFrozen() +bool LLViewerLODTexture::isUpdateFrozen() { - return LLViewerTexture::sFreezeImageScalingDown && !getDiscardLevel(); + return LLViewerTexture::sFreezeImageUpdates; } // This is gauranteed to get called periodically for every texture @@ -3254,9 +3264,16 @@ void LLViewerLODTexture::processTextureStats() (!getBoundRecently() || mDesiredDiscardLevel >= mCachedRawDiscardLevel)) { scaleDown(); - } } + + if (isUpdateFrozen() // we are out of memory and nearing max allowed bias + && mBoostLevel < LLGLTexture::BOOST_SCULPTED + && mDesiredDiscardLevel < current_discard) + { + // stop requesting more + mDesiredDiscardLevel = current_discard; + } } if(mForceToSaveRawImage && mDesiredSavedRawDiscardLevel >= 0) diff --git a/indra/newview/llviewertexture.h b/indra/newview/llviewertexture.h index 5d89f9f029..7cbcc931b1 100644 --- a/indra/newview/llviewertexture.h +++ b/indra/newview/llviewertexture.h @@ -186,6 +186,9 @@ private: virtual void switchToCachedImage(); static bool isMemoryForTextureLow() ; + static bool isMemoryForTextureSuficientlyFree(); + static void getGPUMemoryForTextures(S32Megabytes &gpu, S32Megabytes &physical); + protected: LLUUID mID; S32 mTextureListType; // along with mID identifies where to search for this texture in TextureList @@ -227,7 +230,7 @@ public: static S32 sMaxSculptRez ; static S32 sMinLargeImageSize ; static S32 sMaxSmallImageSize ; - static BOOL sFreezeImageScalingDown ;//do not scale down image res if set. + static bool sFreezeImageUpdates; static F32 sCurrentTime ; enum EDebugTexels @@ -543,7 +546,7 @@ public: /*virtual*/ S8 getType() const; // Process image stats to determine priority/quality requirements. /*virtual*/ void processTextureStats(); - BOOL isUpdateFrozen() ; + bool isUpdateFrozen() ; private: void init(bool firstinit) ; -- cgit v1.2.3 From 7d745679cef8fd91394ca97f0d9f1cf252d57782 Mon Sep 17 00:00:00 2001 From: maxim_productengine Date: Thu, 22 Nov 2018 15:46:59 +0200 Subject: line endings fix --- indra/newview/llfloateruipreview.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'indra/newview') diff --git a/indra/newview/llfloateruipreview.cpp b/indra/newview/llfloateruipreview.cpp index 4e0b27a4f8..db5a192287 100644 --- a/indra/newview/llfloateruipreview.cpp +++ b/indra/newview/llfloateruipreview.cpp @@ -1023,7 +1023,7 @@ void LLFloaterUIPreview::onClickEditFloater() void LLFloaterUIPreview::onClickBrowseForEditor() { // Let the user choose an executable through the file picker dialog box - (new LLFilePickerReplyThread(boost::bind(&LLFloaterUIPreview::getExecutablePath, this, _1), LLFilePicker::FFLOAD_EXE, false))->getFile(); + (new LLFilePickerReplyThread(boost::bind(&LLFloaterUIPreview::getExecutablePath, this, _1), LLFilePicker::FFLOAD_EXE, false))->getFile(); } void LLFloaterUIPreview::getExecutablePath(const std::vector& filenames) @@ -1077,7 +1077,7 @@ void LLFloaterUIPreview::getExecutablePath(const std::vector& filen void LLFloaterUIPreview::onClickBrowseForDiffs() { // create load dialog box - (new LLFilePickerReplyThread(boost::bind(&LLFloaterUIPreview::getDiffsFilePath, this, _1), LLFilePicker::FFLOAD_XML, false))->getFile(); + (new LLFilePickerReplyThread(boost::bind(&LLFloaterUIPreview::getDiffsFilePath, this, _1), LLFilePicker::FFLOAD_XML, false))->getFile(); } void LLFloaterUIPreview::getDiffsFilePath(const std::vector& filenames) -- cgit v1.2.3 From e1c7688b2c69c3a79b673011abe6d59ce97acdff Mon Sep 17 00:00:00 2001 From: andreykproductengine Date: Mon, 26 Nov 2018 18:50:40 +0200 Subject: SL-10101 Remade most frequent setting calls to cached variants --- indra/newview/llappviewer.cpp | 6 ++++-- indra/newview/llmeshrepository.cpp | 25 ++++++++++++++----------- indra/newview/lltool.cpp | 4 +++- indra/newview/llviewermedia.cpp | 10 ++++++---- indra/newview/llviewershadermgr.cpp | 3 ++- indra/newview/llvovolume.cpp | 29 ++++++++++++++++++++--------- indra/newview/llvowlsky.cpp | 3 ++- 7 files changed, 51 insertions(+), 29 deletions(-) (limited to 'indra/newview') diff --git a/indra/newview/llappviewer.cpp b/indra/newview/llappviewer.cpp index 4374caacdf..f1af872fb4 100644 --- a/indra/newview/llappviewer.cpp +++ b/indra/newview/llappviewer.cpp @@ -5439,7 +5439,8 @@ void LLAppViewer::resumeMainloopTimeout(const std::string& state, F32 secs) { if(secs < 0.0f) { - secs = gSavedSettings.getF32("MainloopTimeoutDefault"); + static LLCachedControl mainloop_timeout(gSavedSettings, "MainloopTimeoutDefault", 60); + secs = mainloop_timeout; } mMainloopTimeout->setTimeout(secs); @@ -5466,7 +5467,8 @@ void LLAppViewer::pingMainloopTimeout(const std::string& state, F32 secs) { if(secs < 0.0f) { - secs = gSavedSettings.getF32("MainloopTimeoutDefault"); + static LLCachedControl mainloop_timeout(gSavedSettings, "MainloopTimeoutDefault", 60); + secs = mainloop_timeout; } mMainloopTimeout->setTimeout(secs); diff --git a/indra/newview/llmeshrepository.cpp b/indra/newview/llmeshrepository.cpp index e38bd8846d..a689a0da0b 100644 --- a/indra/newview/llmeshrepository.cpp +++ b/indra/newview/llmeshrepository.cpp @@ -4302,10 +4302,13 @@ F32 LLMeshRepository::getStreamingCostLegacy(LLSD& header, F32 radius, S32* byte F32 dlow = llmin(radius/0.06f, max_distance); F32 dmid = llmin(radius/0.24f, max_distance); - F32 METADATA_DISCOUNT = (F32) gSavedSettings.getU32("MeshMetaDataDiscount"); //discount 128 bytes to cover the cost of LLSD tags and compression domain overhead - F32 MINIMUM_SIZE = (F32) gSavedSettings.getU32("MeshMinimumByteSize"); //make sure nothing is "free" + static LLCachedControl metadata_discount_ch(gSavedSettings, "MeshMetaDataDiscount", 384); //discount 128 bytes to cover the cost of LLSD tags and compression domain overhead + static LLCachedControl minimum_size_ch(gSavedSettings, "MeshMinimumByteSize", 16); //make sure nothing is "free" + static LLCachedControl bytes_per_triangle_ch(gSavedSettings, "MeshBytesPerTriangle", 16); - F32 bytes_per_triangle = (F32) gSavedSettings.getU32("MeshBytesPerTriangle"); + F32 metadata_discount = (F32)metadata_discount_ch; + F32 minimum_size = (F32)minimum_size_ch; + F32 bytes_per_triangle = (F32)bytes_per_triangle_ch; S32 bytes_lowest = header["lowest_lod"]["size"].asInteger(); S32 bytes_low = header["low_lod"]["size"].asInteger(); @@ -4332,10 +4335,10 @@ F32 LLMeshRepository::getStreamingCostLegacy(LLSD& header, F32 radius, S32* byte bytes_lowest = bytes_low; } - F32 triangles_lowest = llmax((F32) bytes_lowest-METADATA_DISCOUNT, MINIMUM_SIZE)/bytes_per_triangle; - F32 triangles_low = llmax((F32) bytes_low-METADATA_DISCOUNT, MINIMUM_SIZE)/bytes_per_triangle; - F32 triangles_mid = llmax((F32) bytes_mid-METADATA_DISCOUNT, MINIMUM_SIZE)/bytes_per_triangle; - F32 triangles_high = llmax((F32) bytes_high-METADATA_DISCOUNT, MINIMUM_SIZE)/bytes_per_triangle; + F32 triangles_lowest = llmax((F32) bytes_lowest-metadata_discount, minimum_size)/bytes_per_triangle; + F32 triangles_low = llmax((F32) bytes_low-metadata_discount, minimum_size)/bytes_per_triangle; + F32 triangles_mid = llmax((F32) bytes_mid-metadata_discount, minimum_size)/bytes_per_triangle; + F32 triangles_high = llmax((F32) bytes_high-metadata_discount, minimum_size)/bytes_per_triangle; if (bytes) { @@ -4429,13 +4432,13 @@ bool LLMeshCostData::init(const LLSD& header) mSizeByLOD[2] = bytes_med; mSizeByLOD[3] = bytes_high; - F32 METADATA_DISCOUNT = (F32) gSavedSettings.getU32("MeshMetaDataDiscount"); //discount 128 bytes to cover the cost of LLSD tags and compression domain overhead - F32 MINIMUM_SIZE = (F32) gSavedSettings.getU32("MeshMinimumByteSize"); //make sure nothing is "free" - F32 bytes_per_triangle = (F32) gSavedSettings.getU32("MeshBytesPerTriangle"); + static LLCachedControl metadata_discount(gSavedSettings, "MeshMetaDataDiscount", 384); //discount 128 bytes to cover the cost of LLSD tags and compression domain overhead + static LLCachedControl minimum_size(gSavedSettings, "MeshMinimumByteSize", 16); //make sure nothing is "free" + static LLCachedControl bytes_per_triangle(gSavedSettings, "MeshBytesPerTriangle", 16); for (S32 i=0; i<4; i++) { - mEstTrisByLOD[i] = llmax((F32) mSizeByLOD[i]-METADATA_DISCOUNT, MINIMUM_SIZE)/bytes_per_triangle; + mEstTrisByLOD[i] = llmax((F32)mSizeByLOD[i] - (F32)metadata_discount, (F32)minimum_size) / (F32)bytes_per_triangle; } return true; diff --git a/indra/newview/lltool.cpp b/indra/newview/lltool.cpp index 4aad650b68..b5d78f3654 100644 --- a/indra/newview/lltool.cpp +++ b/indra/newview/lltool.cpp @@ -191,7 +191,9 @@ LLTool* LLTool::getOverrideTool(MASK mask) { return NULL; } - if (gSavedSettings.getBOOL("EnableAltZoom")) + + static LLCachedControl alt_zoom(gSavedSettings, "EnableAltZoom", true); + if (alt_zoom) { if (mask & MASK_ALT) { diff --git a/indra/newview/llviewermedia.cpp b/indra/newview/llviewermedia.cpp index 22a21c9ca3..f4e1524371 100644 --- a/indra/newview/llviewermedia.cpp +++ b/indra/newview/llviewermedia.cpp @@ -682,8 +682,8 @@ void LLViewerMedia::updateMedia(void *dummy_arg) std::vector proximity_order; - bool inworld_media_enabled = gSavedSettings.getBOOL("AudioStreamingMedia"); - bool inworld_audio_enabled = gSavedSettings.getBOOL("AudioStreamingMusic"); + static LLCachedControl inworld_media_enabled(gSavedSettings, "AudioStreamingMedia", true); + static LLCachedControl inworld_audio_enabled(gSavedSettings, "AudioStreamingMusic", true); U32 max_instances = gSavedSettings.getU32("PluginInstancesTotal"); U32 max_normal = gSavedSettings.getU32("PluginInstancesNormal"); U32 max_low = gSavedSettings.getU32("PluginInstancesLow"); @@ -941,7 +941,8 @@ void LLViewerMedia::setAllMediaEnabled(bool val) LLViewerParcelMedia::play(LLViewerParcelMgr::getInstance()->getAgentParcel()); } - if (gSavedSettings.getBOOL("AudioStreamingMusic") && + static LLCachedControl audio_streaming_music(gSavedSettings, "AudioStreamingMusic", true); + if (audio_streaming_music && !LLViewerMedia::isParcelAudioPlaying() && gAudiop && LLViewerMedia::hasParcelAudio()) @@ -1012,7 +1013,8 @@ void LLViewerMedia::setAllMediaPaused(bool val) LLViewerParcelMedia::play(LLViewerParcelMgr::getInstance()->getAgentParcel()); } - if (gSavedSettings.getBOOL("AudioStreamingMusic") && + static LLCachedControl audio_streaming_music(gSavedSettings, "AudioStreamingMusic", true); + if (audio_streaming_music && !LLViewerMedia::isParcelAudioPlaying() && gAudiop && LLViewerMedia::hasParcelAudio()) diff --git a/indra/newview/llviewershadermgr.cpp b/indra/newview/llviewershadermgr.cpp index ff7647a7e4..f610335b07 100644 --- a/indra/newview/llviewershadermgr.cpp +++ b/indra/newview/llviewershadermgr.cpp @@ -399,7 +399,8 @@ void LLViewerShaderMgr::setShaders() return; } - LLGLSLShader::sIndexedTextureChannels = llmax(llmin(gGLManager.mNumTextureImageUnits, (S32) gSavedSettings.getU32("RenderMaxTextureIndex")), 1); + static LLCachedControl max_texture_index(gSavedSettings, "RenderMaxTextureIndex", 16); + LLGLSLShader::sIndexedTextureChannels = llmax(llmin(gGLManager.mNumTextureImageUnits, (S32) max_texture_index), 1); //NEVER use more than 16 texture channels (work around for prevalent driver bug) LLGLSLShader::sIndexedTextureChannels = llmin(LLGLSLShader::sIndexedTextureChannels, 16); diff --git a/indra/newview/llvovolume.cpp b/indra/newview/llvovolume.cpp index 24726e61e8..3c487a112e 100644 --- a/indra/newview/llvovolume.cpp +++ b/indra/newview/llvovolume.cpp @@ -1380,7 +1380,8 @@ BOOL LLVOVolume::calcLOD() mLODDistance = distance; mLODRadius = radius; - if (gSavedSettings.getBOOL("DebugObjectLODs")) + static LLCachedControl debug_lods(gSavedSettings, "DebugObjectLODs", false); + if (debug_lods) { if (getAvatar() && isRootEdit()) { @@ -4276,10 +4277,16 @@ F32 LLVOVolume::getBinRadius() F32 scale = 1.f; - S32 size_factor = llmax(gSavedSettings.getS32("OctreeStaticObjectSizeFactor"), 1); - S32 attachment_size_factor = llmax(gSavedSettings.getS32("OctreeAttachmentSizeFactor"), 1); - LLVector3 distance_factor = gSavedSettings.getVector3("OctreeDistanceFactor"); - LLVector3 alpha_distance_factor = gSavedSettings.getVector3("OctreeAlphaDistanceFactor"); + static LLCachedControl octree_size_factor(gSavedSettings, "OctreeStaticObjectSizeFactor", 3); + static LLCachedControl octree_attachment_size_factor(gSavedSettings, "OctreeAttachmentSizeFactor", 4); + static LLCachedControl octree_distance_factor(gSavedSettings, "OctreeDistanceFactor", LLVector3(0.01f, 0.f, 0.f)); + static LLCachedControl octree_alpha_distance_factor(gSavedSettings, "OctreeAlphaDistanceFactor", LLVector3(0.1f, 0.f, 0.f)); + + S32 size_factor = llmax((S32)octree_size_factor, 1); + S32 attachment_size_factor = llmax((S32)octree_attachment_size_factor, 1); + LLVector3 distance_factor = octree_distance_factor; + LLVector3 alpha_distance_factor = octree_alpha_distance_factor; + const LLVector4a* ext = mDrawable->getSpatialExtents(); BOOL shrink_wrap = mDrawable->isAnimating(); @@ -5352,8 +5359,10 @@ void LLVolumeGeometryManager::rebuildGeom(LLSpatialGroup* group) U32 useage = group->getSpatialPartition()->mBufferUsage; - U32 max_vertices = (gSavedSettings.getS32("RenderMaxVBOSize")*1024)/LLVertexBuffer::calcVertexSize(group->getSpatialPartition()->mVertexDataMask); - U32 max_total = (gSavedSettings.getS32("RenderMaxNodeSize")*1024)/LLVertexBuffer::calcVertexSize(group->getSpatialPartition()->mVertexDataMask); + LLCachedControl max_vbo_size(gSavedSettings, "RenderMaxVBOSize", 512); + LLCachedControl max_node_size(gSavedSettings, "RenderMaxNodeSize", 65536); + U32 max_vertices = (max_vbo_size * 1024)/LLVertexBuffer::calcVertexSize(group->getSpatialPartition()->mVertexDataMask); + U32 max_total = (max_node_size * 1024) / LLVertexBuffer::calcVertexSize(group->getSpatialPartition()->mVertexDataMask); max_vertices = llmin(max_vertices, (U32) 65535); U32 cur_total = 0; @@ -6106,7 +6115,8 @@ U32 LLVolumeGeometryManager::genDrawInfo(LLSpatialGroup* group, U32 mask, LLFace #endif //calculate maximum number of vertices to store in a single buffer - U32 max_vertices = (gSavedSettings.getS32("RenderMaxVBOSize")*1024)/LLVertexBuffer::calcVertexSize(group->getSpatialPartition()->mVertexDataMask); + LLCachedControl max_vbo_size(gSavedSettings, "RenderMaxVBOSize", 512); + U32 max_vertices = (max_vbo_size * 1024)/LLVertexBuffer::calcVertexSize(group->getSpatialPartition()->mVertexDataMask); max_vertices = llmin(max_vertices, (U32) 65535); { @@ -6149,7 +6159,8 @@ U32 LLVolumeGeometryManager::genDrawInfo(LLSpatialGroup* group, U32 mask, LLFace texture_index_channels = gDeferredAlphaProgram.mFeatures.mIndexedTextureChannels; } - texture_index_channels = llmin(texture_index_channels, (S32) gSavedSettings.getU32("RenderMaxTextureIndex")); + static LLCachedControl max_texture_index(gSavedSettings, "RenderMaxTextureIndex", 16); + texture_index_channels = llmin(texture_index_channels, (S32) max_texture_index); //NEVER use more than 16 texture index channels (workaround for prevalent driver bug) texture_index_channels = llmin(texture_index_channels, 16); diff --git a/indra/newview/llvowlsky.cpp b/indra/newview/llvowlsky.cpp index 3b9b96e9f1..2cb5fc81b0 100644 --- a/indra/newview/llvowlsky.cpp +++ b/indra/newview/llvowlsky.cpp @@ -335,7 +335,8 @@ BOOL LLVOWLSky::updateGeometry(LLDrawable * drawable) } { - const U32 max_buffer_bytes = gSavedSettings.getS32("RenderMaxVBOSize")*1024; + LLCachedControl max_vbo_size(gSavedSettings, "RenderMaxVBOSize", 512); + const U32 max_buffer_bytes = max_vbo_size * 1024; const U32 data_mask = LLDrawPoolWLSky::SKY_VERTEX_DATA_MASK; const U32 max_verts = max_buffer_bytes / LLVertexBuffer::calcVertexSize(data_mask); -- cgit v1.2.3 From c7a7503b2ccebda39a48a1164bf07e4541fd8d2b Mon Sep 17 00:00:00 2001 From: andreykproductengine Date: Tue, 27 Nov 2018 18:51:53 +0200 Subject: SL-10096 ParcelPropertiesRequest is sent too often when terraforming or hover tooltips are On --- indra/newview/llviewerparcelmgr.cpp | 121 +++++++++++++++++++++++--------- indra/newview/llviewerparceloverlay.cpp | 17 +++++ indra/newview/llviewerparceloverlay.h | 2 + 3 files changed, 107 insertions(+), 33 deletions(-) (limited to 'indra/newview') diff --git a/indra/newview/llviewerparcelmgr.cpp b/indra/newview/llviewerparcelmgr.cpp index 5477d2d444..416d5d8e2e 100644 --- a/indra/newview/llviewerparcelmgr.cpp +++ b/indra/newview/llviewerparcelmgr.cpp @@ -1331,22 +1331,18 @@ void LLViewerParcelMgr::sendParcelPropertiesUpdate(LLParcel* parcel, bool use_ag void LLViewerParcelMgr::setHoverParcel(const LLVector3d& pos) { static U32 last_west, last_south; - + static LLUUID last_region; // only request parcel info if position has changed outside of the // last parcel grid step - U32 west_parcel_step = (U32) floor( pos.mdV[VX] / PARCEL_GRID_STEP_METERS ); - U32 south_parcel_step = (U32) floor( pos.mdV[VY] / PARCEL_GRID_STEP_METERS ); - + const U32 west_parcel_step = (U32) floor( pos.mdV[VX] / PARCEL_GRID_STEP_METERS ); + const U32 south_parcel_step = (U32) floor( pos.mdV[VY] / PARCEL_GRID_STEP_METERS ); + if ((west_parcel_step == last_west) && (south_parcel_step == last_south)) { + // We are staying in same segment return; } - else - { - last_west = west_parcel_step; - last_south = south_parcel_step; - } LLViewerRegion* region = LLWorld::getInstance()->getRegionFromPosGlobal( pos ); if (!region) @@ -1354,36 +1350,95 @@ void LLViewerParcelMgr::setHoverParcel(const LLVector3d& pos) return; } - LL_DEBUGS("ParcelMgr") << "Requesting parcel properties on hover, for " << pos << LL_ENDL; + LLUUID region_id = region->getRegionID(); + LLVector3 pos_in_region = region->getPosRegionFromGlobal(pos); + + bool request_properties = false; + if (region_id != last_region) + { + request_properties = true; + } + else + { + // Check if new position is in same parcel. + // This check is not ideal, since it checks by way of straight lines. + // So sometimes (small parcel in the middle of large one) it can + // decide that parcel actually changed, but it still allows to + // reduce amount of requests significantly + + S32 west_parcel_local = (S32)(pos_in_region.mV[VX] / PARCEL_GRID_STEP_METERS); + S32 south_parcel_local = (S32)(pos_in_region.mV[VY] / PARCEL_GRID_STEP_METERS); + + LLViewerParcelOverlay* overlay = region->getParcelOverlay(); + if (!overlay) + { + request_properties = true; + } + while (!request_properties && west_parcel_step < last_west) + { + S32 segment_shift = last_west - west_parcel_step; + request_properties = overlay->parcelLineFlags(south_parcel_local, west_parcel_local + segment_shift) & PARCEL_WEST_LINE; + last_west--; + } + while (!request_properties && south_parcel_step < last_south) + { + S32 segment_shift = last_south - south_parcel_step; + request_properties = overlay->parcelLineFlags(south_parcel_local + segment_shift, west_parcel_local) & PARCEL_SOUTH_LINE; + last_south--; + } + // Note: could have just swapped values, reused first two 'while' and set last_south, last_west separately, + // but this looks to be easier to understand/straightforward/less bulky + while (!request_properties && west_parcel_step > last_west) + { + S32 segment_shift = west_parcel_step - last_west; + request_properties = overlay->parcelLineFlags(south_parcel_local, west_parcel_local - segment_shift + 1) & PARCEL_WEST_LINE; + last_west++; + } + while (!request_properties && south_parcel_step > last_south) + { + S32 segment_shift = south_parcel_step - last_south; + request_properties = overlay->parcelLineFlags(south_parcel_local - segment_shift + 1, west_parcel_local) & PARCEL_SOUTH_LINE; + last_south++; + } + + // if (!request_properties) last_south and last_west will be equal to new values + } + + if (request_properties) + { + last_west = west_parcel_step; + last_south = south_parcel_step; + last_region = region_id; + LL_DEBUGS("ParcelMgr") << "Requesting parcel properties on hover, for " << pos << LL_ENDL; - // Send a rectangle around the point. - // This means the parcel sent back is at least a rectangle around the point, - // which is more efficient for public land. Fewer requests are sent. JC - LLVector3 wsb_region = region->getPosRegionFromGlobal( pos ); - F32 west = PARCEL_GRID_STEP_METERS * floor( wsb_region.mV[VX] / PARCEL_GRID_STEP_METERS ); - F32 south = PARCEL_GRID_STEP_METERS * floor( wsb_region.mV[VY] / PARCEL_GRID_STEP_METERS ); + // Send a rectangle around the point. + // This means the parcel sent back is at least a rectangle around the point, + // which is more efficient for public land. Fewer requests are sent. JC + F32 west = PARCEL_GRID_STEP_METERS * floor(pos_in_region.mV[VX] / PARCEL_GRID_STEP_METERS); + F32 south = PARCEL_GRID_STEP_METERS * floor(pos_in_region.mV[VY] / PARCEL_GRID_STEP_METERS); - F32 east = west + PARCEL_GRID_STEP_METERS; - F32 north = south + PARCEL_GRID_STEP_METERS; + F32 east = west + PARCEL_GRID_STEP_METERS; + F32 north = south + PARCEL_GRID_STEP_METERS; - // Send request message - LLMessageSystem *msg = gMessageSystem; - msg->newMessageFast(_PREHASH_ParcelPropertiesRequest); - msg->nextBlockFast(_PREHASH_AgentData); - msg->addUUIDFast(_PREHASH_AgentID, gAgent.getID() ); - msg->addUUIDFast(_PREHASH_SessionID, gAgent.getSessionID() ); - msg->nextBlockFast(_PREHASH_ParcelData); - msg->addS32Fast(_PREHASH_SequenceID, HOVERED_PARCEL_SEQ_ID ); - msg->addF32Fast(_PREHASH_West, west ); - msg->addF32Fast(_PREHASH_South, south ); - msg->addF32Fast(_PREHASH_East, east ); - msg->addF32Fast(_PREHASH_North, north ); - msg->addBOOL("SnapSelection", FALSE ); - msg->sendReliable( region->getHost() ); + // Send request message + LLMessageSystem *msg = gMessageSystem; + msg->newMessageFast(_PREHASH_ParcelPropertiesRequest); + msg->nextBlockFast(_PREHASH_AgentData); + msg->addUUIDFast(_PREHASH_AgentID, gAgent.getID()); + msg->addUUIDFast(_PREHASH_SessionID, gAgent.getSessionID()); + msg->nextBlockFast(_PREHASH_ParcelData); + msg->addS32Fast(_PREHASH_SequenceID, HOVERED_PARCEL_SEQ_ID); + msg->addF32Fast(_PREHASH_West, west); + msg->addF32Fast(_PREHASH_South, south); + msg->addF32Fast(_PREHASH_East, east); + msg->addF32Fast(_PREHASH_North, north); + msg->addBOOL("SnapSelection", FALSE); + msg->sendReliable(region->getHost()); - mHoverRequestResult = PARCEL_RESULT_NO_DATA; + mHoverRequestResult = PARCEL_RESULT_NO_DATA; + } } diff --git a/indra/newview/llviewerparceloverlay.cpp b/indra/newview/llviewerparceloverlay.cpp index 4fd423b6f4..7c3dd00e1a 100644 --- a/indra/newview/llviewerparceloverlay.cpp +++ b/indra/newview/llviewerparceloverlay.cpp @@ -274,6 +274,23 @@ U8 LLViewerParcelOverlay::ownership( const LLVector3& pos) const return ownership(row, column); } +U8 LLViewerParcelOverlay::parcelLineFlags(const LLVector3& pos) const +{ + S32 row = S32(pos.mV[VY] / PARCEL_GRID_STEP_METERS); + S32 column = S32(pos.mV[VX] / PARCEL_GRID_STEP_METERS); + return parcelLineFlags(row, column); +} +U8 LLViewerParcelOverlay::parcelLineFlags(S32 row, S32 col) const +{ + U8 flags = PARCEL_WEST_LINE | PARCEL_SOUTH_LINE; + if (row > mParcelGridsPerEdge || col > mParcelGridsPerEdge) + { + LL_WARNS() << "Attempted to get ownership out of region's overlay, row: " << row << " col: " << col << LL_ENDL; + return flags; + } + return mOwnership[row * mParcelGridsPerEdge + col] & flags; +} + F32 LLViewerParcelOverlay::getOwnedRatio() const { S32 size = mParcelGridsPerEdge * mParcelGridsPerEdge; diff --git a/indra/newview/llviewerparceloverlay.h b/indra/newview/llviewerparceloverlay.h index 14a2af5354..e30dbf17b3 100644 --- a/indra/newview/llviewerparceloverlay.h +++ b/indra/newview/llviewerparceloverlay.h @@ -71,6 +71,8 @@ public: S32 renderPropertyLines(); U8 ownership( const LLVector3& pos) const; + U8 parcelLineFlags( const LLVector3& pos) const; + U8 parcelLineFlags(S32 row, S32 col) const; // MANIPULATE void uncompressLandOverlay(S32 chunk, U8 *compressed_overlay); -- cgit v1.2.3 From e2442851c61ad645020d78be8ae0c7c851024758 Mon Sep 17 00:00:00 2001 From: andreykproductengine Date: Tue, 27 Nov 2018 20:07:41 +0200 Subject: SL-10080 Limit LOD factor to 4 --- indra/newview/llappviewer.cpp | 6 +++--- indra/newview/llviewercontrol.cpp | 6 +++--- indra/newview/llvovolume.h | 2 ++ 3 files changed, 8 insertions(+), 6 deletions(-) (limited to 'indra/newview') diff --git a/indra/newview/llappviewer.cpp b/indra/newview/llappviewer.cpp index f1af872fb4..bd45f68a5c 100644 --- a/indra/newview/llappviewer.cpp +++ b/indra/newview/llappviewer.cpp @@ -568,12 +568,12 @@ static void settings_to_globals() LLVertexBuffer::sUseVAO = gSavedSettings.getBOOL("RenderUseVAO"); LLImageGL::sGlobalUseAnisotropic = gSavedSettings.getBOOL("RenderAnisotropic"); LLImageGL::sCompressTextures = gSavedSettings.getBOOL("RenderCompressTextures"); - LLVOVolume::sLODFactor = gSavedSettings.getF32("RenderVolumeLODFactor"); + LLVOVolume::sLODFactor = llmin(gSavedSettings.getF32("RenderVolumeLODFactor"), MAX_LOD_FACTOR); LLVOVolume::sDistanceFactor = 1.f-LLVOVolume::sLODFactor * 0.1f; LLVolumeImplFlexible::sUpdateFactor = gSavedSettings.getF32("RenderFlexTimeFactor"); LLVOTree::sTreeFactor = gSavedSettings.getF32("RenderTreeLODFactor"); - LLVOAvatar::sLODFactor = gSavedSettings.getF32("RenderAvatarLODFactor"); - LLVOAvatar::sPhysicsLODFactor = gSavedSettings.getF32("RenderAvatarPhysicsLODFactor"); + LLVOAvatar::sLODFactor = llmin(gSavedSettings.getF32("RenderAvatarLODFactor"), MAX_LOD_FACTOR); + LLVOAvatar::sPhysicsLODFactor = llmin(gSavedSettings.getF32("RenderAvatarPhysicsLODFactor"), MAX_LOD_FACTOR); LLVOAvatar::updateImpostorRendering(gSavedSettings.getU32("RenderAvatarMaxNonImpostors")); LLVOAvatar::sVisibleInFirstPerson = gSavedSettings.getBOOL("FirstPersonAvatarVisible"); // clamp auto-open time to some minimum usable value diff --git a/indra/newview/llviewercontrol.cpp b/indra/newview/llviewercontrol.cpp index 88984d518a..e62d6eb951 100644 --- a/indra/newview/llviewercontrol.cpp +++ b/indra/newview/llviewercontrol.cpp @@ -219,20 +219,20 @@ static bool handleAnisotropicChanged(const LLSD& newvalue) static bool handleVolumeLODChanged(const LLSD& newvalue) { - LLVOVolume::sLODFactor = (F32) newvalue.asReal(); + LLVOVolume::sLODFactor = llmin((F32) newvalue.asReal(), MAX_LOD_FACTOR); LLVOVolume::sDistanceFactor = 1.f-LLVOVolume::sLODFactor * 0.1f; return true; } static bool handleAvatarLODChanged(const LLSD& newvalue) { - LLVOAvatar::sLODFactor = (F32) newvalue.asReal(); + LLVOAvatar::sLODFactor = llmin((F32) newvalue.asReal(), MAX_LOD_FACTOR); return true; } static bool handleAvatarPhysicsLODChanged(const LLSD& newvalue) { - LLVOAvatar::sPhysicsLODFactor = (F32) newvalue.asReal(); + LLVOAvatar::sPhysicsLODFactor = llmin((F32) newvalue.asReal(), MAX_LOD_FACTOR); return true; } diff --git a/indra/newview/llvovolume.h b/indra/newview/llvovolume.h index 0882fc095d..13db9c39b7 100644 --- a/indra/newview/llvovolume.h +++ b/indra/newview/llvovolume.h @@ -54,6 +54,8 @@ enum LLVolumeInterfaceType INTERFACE_FLEXIBLE = 1, }; +const F32 MAX_LOD_FACTOR = 4.0f; + class LLRiggedVolume : public LLVolume { -- cgit v1.2.3 From f3b2ac0858e1dff226892e25cd1cebbe98a225a3 Mon Sep 17 00:00:00 2001 From: maxim_productengine Date: Thu, 29 Nov 2018 18:38:47 +0200 Subject: SL-10135 Change group notices to show as SLT --- indra/newview/llnotificationlistitem.cpp | 11 ++++++----- indra/newview/lltoastgroupnotifypanel.cpp | 16 ++++++++-------- indra/newview/skins/default/xui/en/language_settings.xml | 1 + 3 files changed, 15 insertions(+), 13 deletions(-) (limited to 'indra/newview') diff --git a/indra/newview/llnotificationlistitem.cpp b/indra/newview/llnotificationlistitem.cpp index a5bc75e6bd..b405d3dca2 100644 --- a/indra/newview/llnotificationlistitem.cpp +++ b/indra/newview/llnotificationlistitem.cpp @@ -135,7 +135,8 @@ std::string LLNotificationListItem::buildNotificationDate(const LLDate& time_sta +LLTrans::getString("TimeDay")+"]/[" +LLTrans::getString("TimeYear")+"] [" +LLTrans::getString("TimeHour")+"]:[" - +LLTrans::getString("TimeMin")+"]"; + +LLTrans::getString("TimeMin")+"] [" + +LLTrans::getString("TimeTimezone")+"]"; break; } LLSD substitution; @@ -376,13 +377,13 @@ BOOL LLGroupNoticeNotificationListItem::postBuild() mTitleBoxExp->setValue(mParams.subject); mNoticeTextExp->setValue(mParams.message); - mTimeBox->setValue(buildNotificationDate(mParams.time_stamp, UTC)); - mTimeBoxExp->setValue(buildNotificationDate(mParams.time_stamp, UTC)); + mTimeBox->setValue(buildNotificationDate(mParams.time_stamp)); + mTimeBoxExp->setValue(buildNotificationDate(mParams.time_stamp)); //Workaround: in case server timestamp is 0 - we use the time when notification was actually received if (mParams.time_stamp.isNull()) { - mTimeBox->setValue(buildNotificationDate(mParams.received_time, UTC)); - mTimeBoxExp->setValue(buildNotificationDate(mParams.received_time, UTC)); + mTimeBox->setValue(buildNotificationDate(mParams.received_time)); + mTimeBoxExp->setValue(buildNotificationDate(mParams.received_time)); } setSender(mParams.sender); diff --git a/indra/newview/lltoastgroupnotifypanel.cpp b/indra/newview/lltoastgroupnotifypanel.cpp index f7dc32d0d7..817d1dd7b4 100644 --- a/indra/newview/lltoastgroupnotifypanel.cpp +++ b/indra/newview/lltoastgroupnotifypanel.cpp @@ -84,14 +84,14 @@ LLToastGroupNotifyPanel::LLToastGroupNotifyPanel(const LLNotificationPtr& notifi //message body const std::string& message = payload["message"].asString(); - std::string timeStr = "["+LLTrans::getString("UTCTimeWeek")+"],[" - +LLTrans::getString("UTCTimeDay")+"] [" - +LLTrans::getString("UTCTimeMth")+"] [" - +LLTrans::getString("UTCTimeYr")+"] [" - +LLTrans::getString("UTCTimeHr")+"]:[" - +LLTrans::getString("UTCTimeMin")+"]:[" - +LLTrans::getString("UTCTimeSec")+"] [" - +LLTrans::getString("UTCTimeTimezone")+"]"; + std::string timeStr = "[" + LLTrans::getString("TimeWeek") + "], [" + + LLTrans::getString("TimeMonth") + "]/[" + + LLTrans::getString("TimeDay") + "]/[" + + LLTrans::getString("TimeYear") + "] [" + + LLTrans::getString("TimeHour") + "]:[" + + LLTrans::getString("TimeMin") + "] [" + + LLTrans::getString("TimeTimezone") + "]"; + const LLDate timeStamp = notification->getDate(); LLDate notice_date = timeStamp.notNull() ? timeStamp : payload["received_time"].asDate(); LLSD substitution; diff --git a/indra/newview/skins/default/xui/en/language_settings.xml b/indra/newview/skins/default/xui/en/language_settings.xml index 51779e4bfd..d418fc38e3 100644 --- a/indra/newview/skins/default/xui/en/language_settings.xml +++ b/indra/newview/skins/default/xui/en/language_settings.xml @@ -42,6 +42,7 @@ wkday,datetime,slt ampm,datetime,slt hour12,datetime,slt + timezone,datetime,slt mthnum,datetime,local wkday,datetime,local -- cgit v1.2.3 From d9fdb948d9b7d7b873ec83c43332f97018573194 Mon Sep 17 00:00:00 2001 From: andreykproductengine Date: Thu, 29 Nov 2018 21:04:35 +0200 Subject: SL-9747 [Mesh Uploader] Remove confusing model_metric from upload --- indra/newview/llfloatermodelpreview.cpp | 3 --- indra/newview/llmeshrepository.cpp | 14 +---------- .../skins/default/xui/en/floater_model_preview.xml | 29 ---------------------- 3 files changed, 1 insertion(+), 45 deletions(-) (limited to 'indra/newview') diff --git a/indra/newview/llfloatermodelpreview.cpp b/indra/newview/llfloatermodelpreview.cpp index 268c646719..818d364c3e 100644 --- a/indra/newview/llfloatermodelpreview.cpp +++ b/indra/newview/llfloatermodelpreview.cpp @@ -1418,8 +1418,6 @@ void LLModelPreview::rebuildUploadData() std::string requested_name = mFMP->getChild("description_form")->getValue().asString(); - std::string metric = mFMP->getChild("model_category_combo")->getValue().asString(); - LLSpinCtrl* scale_spinner = mFMP->getChild("import_scale"); F32 scale = scale_spinner->getValue().asReal(); @@ -1460,7 +1458,6 @@ void LLModelPreview::rebuildUploadData() if (base_model && !requested_name.empty()) { base_model->mRequestedLabel = requested_name; - base_model->mMetric = metric; } for (int i = LLModel::NUM_LODS - 1; i >= LLModel::LOD_IMPOSTOR; i--) diff --git a/indra/newview/llmeshrepository.cpp b/indra/newview/llmeshrepository.cpp index a689a0da0b..f32dad7f55 100644 --- a/indra/newview/llmeshrepository.cpp +++ b/indra/newview/llmeshrepository.cpp @@ -2174,7 +2174,6 @@ void LLMeshUploadThread::wholeModelToLLSD(LLSD& dest, bool include_textures) std::map mesh_index; std::string model_name; - std::string model_metric; S32 instance_num = 0; @@ -2204,11 +2203,6 @@ void LLMeshUploadThread::wholeModelToLLSD(LLSD& dest, bool include_textures) model_name = data.mBaseModel->getName(); } - if (model_metric.empty()) - { - model_metric = data.mBaseModel->getMetric(); - } - std::stringstream ostr; LLModel::Decomposition& decomp = @@ -2363,11 +2357,6 @@ void LLMeshUploadThread::wholeModelToLLSD(LLSD& dest, bool include_textures) model_name = data.mBaseModel->getName(); } - if (model_metric.empty()) - { - model_metric = data.mBaseModel->getMetric(); - } - std::stringstream ostr; LLModel::Decomposition& decomp = @@ -2498,8 +2487,7 @@ void LLMeshUploadThread::wholeModelToLLSD(LLSD& dest, bool include_textures) if (model_name.empty()) model_name = "mesh model"; result["name"] = model_name; - if (model_metric.empty()) model_metric = "MUT_Unspecified"; - res["metric"] = model_metric; + res["metric"] = "MUT_Unspecified"; result["asset_resources"] = res; dump_llsd_to_file(result,make_dump_name("whole_model_",dump_num)); diff --git a/indra/newview/skins/default/xui/en/floater_model_preview.xml b/indra/newview/skins/default/xui/en/floater_model_preview.xml index 3db431de1b..5a86eb06fb 100644 --- a/indra/newview/skins/default/xui/en/floater_model_preview.xml +++ b/indra/newview/skins/default/xui/en/floater_model_preview.xml @@ -73,35 +73,6 @@ prevalidate_callback="ascii" top_pad="5" width="290" /> - - This model represents... - - - - - - - - - - - - Date: Mon, 3 Dec 2018 16:14:22 +0200 Subject: SL-10150 'Preset in use' shows last used preset name after deleting it --- indra/newview/llfloaterpreference.cpp | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'indra/newview') diff --git a/indra/newview/llfloaterpreference.cpp b/indra/newview/llfloaterpreference.cpp index d63ee1b367..92c9d1ae59 100644 --- a/indra/newview/llfloaterpreference.cpp +++ b/indra/newview/llfloaterpreference.cpp @@ -2600,6 +2600,10 @@ void LLPanelPreferenceGraphics::onPresetsListChange() { instance->saveSettings(); //make cancel work correctly after changing the preset } + else + { + instance->saveGraphicsPreset(std::string()); + } } void LLPanelPreferenceGraphics::setPresetText() -- cgit v1.2.3 From c94e981f40652920a7fb5234a65369bf58d41865 Mon Sep 17 00:00:00 2001 From: andreykproductengine Date: Mon, 3 Dec 2018 17:30:35 +0200 Subject: SL-10080 clamp instead of llmax --- indra/newview/llappviewer.cpp | 6 +++--- indra/newview/llviewercontrol.cpp | 6 +++--- indra/newview/llvoavatar.h | 2 ++ 3 files changed, 8 insertions(+), 6 deletions(-) (limited to 'indra/newview') diff --git a/indra/newview/llappviewer.cpp b/indra/newview/llappviewer.cpp index bd45f68a5c..7c79cc7ddf 100644 --- a/indra/newview/llappviewer.cpp +++ b/indra/newview/llappviewer.cpp @@ -568,12 +568,12 @@ static void settings_to_globals() LLVertexBuffer::sUseVAO = gSavedSettings.getBOOL("RenderUseVAO"); LLImageGL::sGlobalUseAnisotropic = gSavedSettings.getBOOL("RenderAnisotropic"); LLImageGL::sCompressTextures = gSavedSettings.getBOOL("RenderCompressTextures"); - LLVOVolume::sLODFactor = llmin(gSavedSettings.getF32("RenderVolumeLODFactor"), MAX_LOD_FACTOR); + LLVOVolume::sLODFactor = llclamp(gSavedSettings.getF32("RenderVolumeLODFactor"), 0.01f, MAX_LOD_FACTOR); LLVOVolume::sDistanceFactor = 1.f-LLVOVolume::sLODFactor * 0.1f; LLVolumeImplFlexible::sUpdateFactor = gSavedSettings.getF32("RenderFlexTimeFactor"); LLVOTree::sTreeFactor = gSavedSettings.getF32("RenderTreeLODFactor"); - LLVOAvatar::sLODFactor = llmin(gSavedSettings.getF32("RenderAvatarLODFactor"), MAX_LOD_FACTOR); - LLVOAvatar::sPhysicsLODFactor = llmin(gSavedSettings.getF32("RenderAvatarPhysicsLODFactor"), MAX_LOD_FACTOR); + LLVOAvatar::sLODFactor = llclamp(gSavedSettings.getF32("RenderAvatarLODFactor"), 0.f, MAX_AVATAR_LOD_FACTOR); + LLVOAvatar::sPhysicsLODFactor = llclamp(gSavedSettings.getF32("RenderAvatarPhysicsLODFactor"), 0.f, MAX_AVATAR_LOD_FACTOR); LLVOAvatar::updateImpostorRendering(gSavedSettings.getU32("RenderAvatarMaxNonImpostors")); LLVOAvatar::sVisibleInFirstPerson = gSavedSettings.getBOOL("FirstPersonAvatarVisible"); // clamp auto-open time to some minimum usable value diff --git a/indra/newview/llviewercontrol.cpp b/indra/newview/llviewercontrol.cpp index e62d6eb951..a699491e1b 100644 --- a/indra/newview/llviewercontrol.cpp +++ b/indra/newview/llviewercontrol.cpp @@ -219,20 +219,20 @@ static bool handleAnisotropicChanged(const LLSD& newvalue) static bool handleVolumeLODChanged(const LLSD& newvalue) { - LLVOVolume::sLODFactor = llmin((F32) newvalue.asReal(), MAX_LOD_FACTOR); + LLVOVolume::sLODFactor = llclamp((F32) newvalue.asReal(), 0.01f, MAX_LOD_FACTOR); LLVOVolume::sDistanceFactor = 1.f-LLVOVolume::sLODFactor * 0.1f; return true; } static bool handleAvatarLODChanged(const LLSD& newvalue) { - LLVOAvatar::sLODFactor = llmin((F32) newvalue.asReal(), MAX_LOD_FACTOR); + LLVOAvatar::sLODFactor = llclamp((F32) newvalue.asReal(), 0.f, MAX_AVATAR_LOD_FACTOR); return true; } static bool handleAvatarPhysicsLODChanged(const LLSD& newvalue) { - LLVOAvatar::sPhysicsLODFactor = llmin((F32) newvalue.asReal(), MAX_LOD_FACTOR); + LLVOAvatar::sPhysicsLODFactor = llclamp((F32) newvalue.asReal(), 0.f, MAX_AVATAR_LOD_FACTOR); return true; } diff --git a/indra/newview/llvoavatar.h b/indra/newview/llvoavatar.h index deb22617a4..a4f8e95c65 100644 --- a/indra/newview/llvoavatar.h +++ b/indra/newview/llvoavatar.h @@ -75,6 +75,8 @@ class LLTexGlobalColor; struct LLAppearanceMessageContents; class LLViewerJointMesh; +const F32 MAX_AVATAR_LOD_FACTOR = 1.0f; + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // LLVOAvatar -- cgit v1.2.3 From a39d330cc22c603d5c06fabe86104e8948573e20 Mon Sep 17 00:00:00 2001 From: andreykproductengine Date: Mon, 3 Dec 2018 20:27:44 +0200 Subject: SL-10152 Uninstaller's offers to delete remaining files is problematic --- .../newview/installers/windows/installer_template.nsi | 4 +--- indra/newview/installers/windows/lang_en-us.nsi | Bin 8734 -> 8814 bytes 2 files changed, 1 insertion(+), 3 deletions(-) (limited to 'indra/newview') diff --git a/indra/newview/installers/windows/installer_template.nsi b/indra/newview/installers/windows/installer_template.nsi index 14c8dba39f..d6e4b005df 100644 --- a/indra/newview/installers/windows/installer_template.nsi +++ b/indra/newview/installers/windows/installer_template.nsi @@ -651,9 +651,7 @@ RMDir "$INSTDIR" IfFileExists "$INSTDIR" FOLDERFOUND NOFOLDER FOLDERFOUND: -# Silent uninstall always removes all files (/SD IDYES) - MessageBox MB_YESNO $(DeleteProgramFilesMB) /SD IDYES IDNO NOFOLDER - RMDir /r "$INSTDIR" + MessageBox MB_OK $(DeleteProgramFilesMB) /SD IDOK IDOK NOFOLDER NOFOLDER: diff --git a/indra/newview/installers/windows/lang_en-us.nsi b/indra/newview/installers/windows/lang_en-us.nsi index 00aa47de69..f854f5db06 100644 Binary files a/indra/newview/installers/windows/lang_en-us.nsi and b/indra/newview/installers/windows/lang_en-us.nsi differ -- cgit v1.2.3 From 320b7bacc2ef34b1434178cce8eb2818493fec21 Mon Sep 17 00:00:00 2001 From: maxim_productengine Date: Tue, 4 Dec 2018 18:51:44 +0200 Subject: SL-10149 FIXED 'Mute when minimized' checkbox is displayed without focus on it after pressing on label in the "Preferences" floater --- indra/newview/llfloaterpreference.cpp | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'indra/newview') diff --git a/indra/newview/llfloaterpreference.cpp b/indra/newview/llfloaterpreference.cpp index 92c9d1ae59..c66247b4b7 100644 --- a/indra/newview/llfloaterpreference.cpp +++ b/indra/newview/llfloaterpreference.cpp @@ -2329,6 +2329,7 @@ BOOL LLPanelPreference::postBuild() if (hasChild("mute_chb_label", TRUE)) { getChild("mute_chb_label")->setShowCursorHand(false); + getChild("mute_chb_label")->setSoundFlags(LLView::MOUSE_UP); getChild("mute_chb_label")->setClickedCallback(boost::bind(&toggleMuteWhenMinimized)); } @@ -2452,6 +2453,11 @@ void LLPanelPreference::toggleMuteWhenMinimized() { std::string mute("MuteWhenMinimized"); gSavedSettings.setBOOL(mute, !gSavedSettings.getBOOL(mute)); + LLFloaterPreference* instance = LLFloaterReg::findTypedInstance("preferences"); + if (instance) + { + instance->getChild("mute_when_minimized")->setBtnFocus(); + } } void LLPanelPreference::cancel() -- cgit v1.2.3 From 6e87cc5a7570884e81c671bd6e94e3a2b68099ad Mon Sep 17 00:00:00 2001 From: AndreyL ProductEngine Date: Tue, 4 Dec 2018 20:45:49 +0200 Subject: mac build fix --- indra/newview/llfloaterpreference.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'indra/newview') diff --git a/indra/newview/llfloaterpreference.cpp b/indra/newview/llfloaterpreference.cpp index c66247b4b7..ac751a785d 100644 --- a/indra/newview/llfloaterpreference.cpp +++ b/indra/newview/llfloaterpreference.cpp @@ -2608,7 +2608,8 @@ void LLPanelPreferenceGraphics::onPresetsListChange() } else { - instance->saveGraphicsPreset(std::string()); + std::string dummy; + instance->saveGraphicsPreset(dummy); } } -- cgit v1.2.3 From 4c92c7b2d025b7cd85bf176287b86a3990959841 Mon Sep 17 00:00:00 2001 From: andreykproductengine Date: Tue, 4 Dec 2018 17:52:46 +0200 Subject: SL-1481 Don't predict region crossings over a second --- indra/newview/app_settings/settings.xml | 11 +++++++ indra/newview/llviewerobject.cpp | 58 ++++++++++++++++++++++++--------- indra/newview/llviewerobject.h | 4 ++- indra/newview/llviewerobjectlist.cpp | 2 ++ 4 files changed, 59 insertions(+), 16 deletions(-) (limited to 'indra/newview') diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml index 3ad8b6cded..0eef5120eb 100644 --- a/indra/newview/app_settings/settings.xml +++ b/indra/newview/app_settings/settings.xml @@ -14068,6 +14068,17 @@ Value 1 + RegionCrossingInterpolationTime + + Comment + How long to extrapolate object motion after crossing regions + Persist + 1 + Type + F32 + Value + 1 + VerboseLogs Comment diff --git a/indra/newview/llviewerobject.cpp b/indra/newview/llviewerobject.cpp index 1e46a1cf9e..079a9f0372 100644 --- a/indra/newview/llviewerobject.cpp +++ b/indra/newview/llviewerobject.cpp @@ -127,6 +127,7 @@ BOOL LLViewerObject::sUseSharedDrawables(FALSE); // TRUE // sMaxUpdateInterpolationTime must be greater than sPhaseOutUpdateInterpolationTime F64Seconds LLViewerObject::sMaxUpdateInterpolationTime(3.0); // For motion interpolation: after X seconds with no updates, don't predict object motion F64Seconds LLViewerObject::sPhaseOutUpdateInterpolationTime(2.0); // For motion interpolation: after Y seconds with no updates, taper off motion prediction +F64Seconds LLViewerObject::sMaxRegionCrossingInterpolationTime(1.0);// For motion interpolation: don't interpolate over this time on region crossing std::map LLViewerObject::sObjectDataMap; @@ -2487,7 +2488,7 @@ void LLViewerObject::loadFlags(U32 flags) return; } -void LLViewerObject::idleUpdate(LLAgent &agent, const F64 &time) +void LLViewerObject::idleUpdate(LLAgent &agent, const F64 &frame_time) { //static LLTrace::BlockTimerStatHandle ftm("Viewer Object"); //LL_RECORD_BLOCK_TIME(ftm); @@ -2498,19 +2499,19 @@ void LLViewerObject::idleUpdate(LLAgent &agent, const F64 &time) { // calculate dt from last update F32 time_dilation = mRegionp ? mRegionp->getTimeDilation() : 1.0f; - F32 dt_raw = ((F64Seconds)time - mLastInterpUpdateSecs).value(); + F32 dt_raw = ((F64Seconds)frame_time - mLastInterpUpdateSecs).value(); F32 dt = time_dilation * dt_raw; applyAngularVelocity(dt); if (isAttachment()) { - mLastInterpUpdateSecs = (F64Seconds)time; + mLastInterpUpdateSecs = (F64Seconds)frame_time; return; } else { // Move object based on it's velocity and rotation - interpolateLinearMotion(time, dt); + interpolateLinearMotion(frame_time, dt); } } @@ -2520,7 +2521,7 @@ void LLViewerObject::idleUpdate(LLAgent &agent, const F64 &time) // Move an object due to idle-time viewer side updates by interpolating motion -void LLViewerObject::interpolateLinearMotion(const F64SecondsImplicit& time, const F32SecondsImplicit& dt_seconds) +void LLViewerObject::interpolateLinearMotion(const F64SecondsImplicit& frame_time, const F32SecondsImplicit& dt_seconds) { // linear motion // PHYSICS_TIMESTEP is used below to correct for the fact that the velocity in object @@ -2532,7 +2533,7 @@ void LLViewerObject::interpolateLinearMotion(const F64SecondsImplicit& time, con // zeroing it out F32 dt = dt_seconds; - F64Seconds time_since_last_update = time - mLastMessageUpdateSecs; + F64Seconds time_since_last_update = frame_time - mLastMessageUpdateSecs; if (time_since_last_update <= (F64Seconds)0.0 || dt <= 0.f) { return; @@ -2580,7 +2581,7 @@ void LLViewerObject::interpolateLinearMotion(const F64SecondsImplicit& time, con (time_since_last_packet > sPhaseOutUpdateInterpolationTime)) { // Start to reduce motion interpolation since we haven't seen a server update in a while - F64Seconds time_since_last_interpolation = time - mLastInterpUpdateSecs; + F64Seconds time_since_last_interpolation = frame_time - mLastInterpUpdateSecs; F64 phase_out = 1.0; if (time_since_last_update > sMaxUpdateInterpolationTime) { // Past the time limit, so stop the object @@ -2636,6 +2637,7 @@ void LLViewerObject::interpolateLinearMotion(const F64SecondsImplicit& time, con // Check to see if it's going off the region LLVector3 temp(new_pos); + static F64SecondsImplicit region_cross_expire = 0; // frame time we detected region crossing in + wait time if (temp.clamp(0.f, mRegionp->getWidth())) { // Going off this region, so see if we might end up on another region LLVector3d old_pos_global = mRegionp->getPosGlobalFromRegion(getPositionRegion()); @@ -2644,21 +2646,47 @@ void LLViewerObject::interpolateLinearMotion(const F64SecondsImplicit& time, con // Clip the positions to known regions LLVector3d clip_pos_global = LLWorld::getInstance()->clipToVisibleRegions(old_pos_global, new_pos_global); if (clip_pos_global != new_pos_global) - { // Was clipped, so this means we hit a edge where there is no region to enter - - //LL_INFOS() << "Hit empty region edge, clipped predicted position to " << mRegionp->getPosRegionFromGlobal(clip_pos_global) - // << " from " << new_pos << LL_ENDL; - new_pos = mRegionp->getPosRegionFromGlobal(clip_pos_global); + { + // Was clipped, so this means we hit a edge where there is no region to enter + LLVector3 clip_pos = mRegionp->getPosRegionFromGlobal(clip_pos_global); + LL_DEBUGS("Interpolate") << "Hit empty region edge, clipped predicted position to " + << clip_pos + << " from " << new_pos << LL_ENDL; + new_pos = clip_pos; // Stop motion and get server update for bouncing on the edge new_v.clear(); setAcceleration(LLVector3::zero); } else - { // Let predicted movement cross into another region - //LL_INFOS() << "Predicting region crossing to " << new_pos << LL_ENDL; + { + // Check for how long we are crossing. + // Note: theoretically we can find time from velocity, acceleration and + // distance from border to new position, but it is not going to work + // if 'phase_out' activates + if (region_cross_expire == 0) + { + // Workaround: we can't accurately figure out time when we cross border + // so just write down time 'after the fact', it is far from optimal in + // case of lags, but for lags sMaxUpdateInterpolationTime will kick in first + LL_DEBUGS("Interpolate") << "Predicted region crossing, new position " << new_pos << LL_ENDL; + region_cross_expire = frame_time + sMaxRegionCrossingInterpolationTime; + } + else if (frame_time > region_cross_expire) + { + // Predicting crossing over 1s, stop motion + // Stop motion + LL_DEBUGS("Interpolate") << "Predicting region crossing for too long, stopping at " << new_pos << LL_ENDL; + new_v.clear(); + setAcceleration(LLVector3::zero); + region_cross_expire = 0; + } } } + else + { + region_cross_expire = 0; + } // Set new position and velocity setPositionRegion(new_pos); @@ -2669,7 +2697,7 @@ void LLViewerObject::interpolateLinearMotion(const F64SecondsImplicit& time, con } // Update the last time we did anything - mLastInterpUpdateSecs = time; + mLastInterpUpdateSecs = frame_time; } diff --git a/indra/newview/llviewerobject.h b/indra/newview/llviewerobject.h index d6c8b76147..990c392531 100644 --- a/indra/newview/llviewerobject.h +++ b/indra/newview/llviewerobject.h @@ -615,7 +615,7 @@ private: U32 checkMediaURL(const std::string &media_url); // Motion prediction between updates - void interpolateLinearMotion(const F64SecondsImplicit & time, const F32SecondsImplicit & dt); + void interpolateLinearMotion(const F64SecondsImplicit & frame_time, const F32SecondsImplicit & dt); static void initObjectDataMap(); @@ -851,6 +851,7 @@ protected: static void setPhaseOutUpdateInterpolationTime(F32 value) { sPhaseOutUpdateInterpolationTime = (F64Seconds) value; } static void setMaxUpdateInterpolationTime(F32 value) { sMaxUpdateInterpolationTime = (F64Seconds) value; } + static void setMaxRegionCrossingInterpolationTime(F32 value) { sMaxRegionCrossingInterpolationTime = (F64Seconds) value; } static void setVelocityInterpolate(BOOL value) { sVelocityInterpolate = value; } static void setPingInterpolate(BOOL value) { sPingInterpolate = value; } @@ -860,6 +861,7 @@ private: static F64Seconds sPhaseOutUpdateInterpolationTime; // For motion interpolation static F64Seconds sMaxUpdateInterpolationTime; // For motion interpolation + static F64Seconds sMaxRegionCrossingInterpolationTime; // For motion interpolation static BOOL sVelocityInterpolate; static BOOL sPingInterpolate; diff --git a/indra/newview/llviewerobjectlist.cpp b/indra/newview/llviewerobjectlist.cpp index 2aff71367e..932759c86d 100644 --- a/indra/newview/llviewerobjectlist.cpp +++ b/indra/newview/llviewerobjectlist.cpp @@ -854,6 +854,7 @@ void LLViewerObjectList::update(LLAgent &agent) F32 interp_time = gSavedSettings.getF32("InterpolationTime"); F32 phase_out_time = gSavedSettings.getF32("InterpolationPhaseOut"); + F32 region_interp_time = llclamp(gSavedSettings.getF32("RegionCrossingInterpolationTime"), 0.5f, 5.f); if (interp_time < 0.0 || phase_out_time < 0.0 || phase_out_time > interp_time) @@ -864,6 +865,7 @@ void LLViewerObjectList::update(LLAgent &agent) } LLViewerObject::setPhaseOutUpdateInterpolationTime( interp_time ); LLViewerObject::setMaxUpdateInterpolationTime( phase_out_time ); + LLViewerObject::setMaxRegionCrossingInterpolationTime(region_interp_time); gAnimateTextures = gSavedSettings.getBOOL("AnimateTextures"); -- cgit v1.2.3 From b39cfe229ba127b9ac3e47edd1255b95fe32c5ea Mon Sep 17 00:00:00 2001 From: Mnikolenko ProductEngine Date: Fri, 7 Dec 2018 13:31:54 +0200 Subject: SL-10175 Update copyright year in application info --- indra/newview/CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'indra/newview') diff --git a/indra/newview/CMakeLists.txt b/indra/newview/CMakeLists.txt index ce8b662231..33886acb71 100644 --- a/indra/newview/CMakeLists.txt +++ b/indra/newview/CMakeLists.txt @@ -2074,7 +2074,7 @@ if (DARWIN) set(MACOSX_BUNDLE_BUNDLE_NAME "SecondLife") set(MACOSX_BUNDLE_SHORT_VERSION_STRING "${VIEWER_SHORT_VERSION}") set(MACOSX_BUNDLE_BUNDLE_VERSION "${VIEWER_SHORT_VERSION}${VIEWER_MACOSX_PHASE}${VIEWER_REVISION}") - set(MACOSX_BUNDLE_COPYRIGHT "Copyright © Linden Research, Inc. 2007") + set(MACOSX_BUNDLE_COPYRIGHT "Copyright © Linden Research, Inc. 2018") set(MACOSX_BUNDLE_NSMAIN_NIB_FILE "SecondLife.nib") set(MACOSX_BUNDLE_NSPRINCIPAL_CLASS "NSApplication") -- cgit v1.2.3 From a48ff6c2fadb5697ab204a34ac696f1ce920e02d Mon Sep 17 00:00:00 2001 From: andreykproductengine Date: Thu, 6 Dec 2018 19:50:33 +0200 Subject: SL-10172 Add a KB link to the TLS failure dialog --- indra/newview/llxmlrpctransaction.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) (limited to 'indra/newview') diff --git a/indra/newview/llxmlrpctransaction.cpp b/indra/newview/llxmlrpctransaction.cpp index 143c97fca4..f5c169996f 100644 --- a/indra/newview/llxmlrpctransaction.cpp +++ b/indra/newview/llxmlrpctransaction.cpp @@ -507,6 +507,8 @@ void LLXMLRPCTransaction::Impl::setHttpStatus(const LLCore::HttpStatus &status) case CURLE_SSL_CACERT: case CURLE_SSL_CONNECT_ERROR: + { + std::string uri_base = "https://community.secondlife.com/knowledgebase/english/error-messages-r520/#Section__3"; message = "Often this means that your computer\'s clock is set incorrectly.\n" "Please go to Control Panels and make sure the time and date\n" @@ -514,8 +516,9 @@ void LLXMLRPCTransaction::Impl::setHttpStatus(const LLCore::HttpStatus &status) "Also check that your network and firewall are set up correctly.\n" "If you continue to receive this error, please go\n" "to the Support section of the SecondLife.com web site\n" - "and report the problem."; + "and report the problem.\n\n[" + uri_base + " Knowledge Base]"; break; + } default: break; -- cgit v1.2.3 From 221201de4eaba585ae713b279a0e9ba1c8fd61cf Mon Sep 17 00:00:00 2001 From: andreykproductengine Date: Sun, 9 Dec 2018 20:57:36 +0200 Subject: SL-10001 Fixed scale --- indra/newview/llmanip.cpp | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) (limited to 'indra/newview') diff --git a/indra/newview/llmanip.cpp b/indra/newview/llmanip.cpp index 1dc03123eb..6589aa477f 100644 --- a/indra/newview/llmanip.cpp +++ b/indra/newview/llmanip.cpp @@ -441,14 +441,13 @@ void LLManip::renderXYZ(const LLVector3 &vec) LLUIImagePtr imagep = LLUI::getUIImage("Rounded_Square"); gViewerWindow->setup2DRender(); const LLVector2& display_scale = gViewerWindow->getDisplayScale(); - gGL.scalef(display_scale.mV[VX], display_scale.mV[VY], 1.f); gGL.color4f(0.f, 0.f, 0.f, 0.7f); imagep->draw( - window_center_x - 115, - window_center_y + vertical_offset - PAD, - 235, - PAD * 2 + 10, + (window_center_x - 115) * display_scale.mV[VX], + (window_center_y + vertical_offset - PAD) * display_scale.mV[VY], + 235 * display_scale.mV[VX], + (PAD * 2 + 10) * display_scale.mV[VY], LLColor4(0.f, 0.f, 0.f, 0.7f) ); LLFontGL* font = LLFontGL::getFontSansSerif(); -- cgit v1.2.3 From 1e5ad657abcff4f3bd8d4b6f870e15b75215799d Mon Sep 17 00:00:00 2001 From: andreykproductengine Date: Mon, 10 Dec 2018 18:28:45 +0200 Subject: SL-10092 Autoreplace Keyword was not working with non-English characters --- indra/newview/llautoreplace.cpp | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) (limited to 'indra/newview') diff --git a/indra/newview/llautoreplace.cpp b/indra/newview/llautoreplace.cpp index dd9354fe3a..0516520c56 100644 --- a/indra/newview/llautoreplace.cpp +++ b/indra/newview/llautoreplace.cpp @@ -68,8 +68,8 @@ void LLAutoReplace::autoreplaceCallback(S32& replacement_start, S32& replacement word_start--; // walk word_start back to the beginning of the word } LL_DEBUGS("AutoReplace") << "word_start: " << word_start << " word_end: " << word_end << LL_ENDL; - std::string str_text = std::string(input_text.begin(), input_text.end()); - std::string last_word = str_text.substr(word_start, word_end - word_start + 1); + LLWString old_string = input_text.substr(word_start, word_end - word_start + 1); + std::string last_word = wstring_to_utf8str(old_string); std::string replacement_word(mSettings.replaceWord(last_word)); if (replacement_word != last_word) @@ -79,9 +79,8 @@ void LLAutoReplace::autoreplaceCallback(S32& replacement_start, S32& replacement { // return the replacement string replacement_start = word_start; - replacement_length = last_word.length(); + replacement_length = word_end - word_start + 1; replacement_string = utf8str_to_wstring(replacement_word); - LLWString old_string = utf8str_to_wstring(last_word); S32 size_change = replacement_string.size() - old_string.size(); cursor_pos += size_change; } -- cgit v1.2.3 From c658e891345fd98dcededa5c21efc17993805522 Mon Sep 17 00:00:00 2001 From: andreykproductengine Date: Wed, 12 Dec 2018 15:24:26 +0200 Subject: SL-9512 Move constant to common place --- indra/newview/lltoastnotifypanel.cpp | 8 +++----- indra/newview/lltoastpanel.cpp | 3 +++ indra/newview/lltoastpanel.h | 1 + indra/newview/lltoastscripttextbox.cpp | 4 +--- 4 files changed, 8 insertions(+), 8 deletions(-) (limited to 'indra/newview') diff --git a/indra/newview/lltoastnotifypanel.cpp b/indra/newview/lltoastnotifypanel.cpp index e3a856be5c..a2116817a2 100644 --- a/indra/newview/lltoastnotifypanel.cpp +++ b/indra/newview/lltoastnotifypanel.cpp @@ -46,8 +46,6 @@ const S32 BOTTOM_PAD = VPAD * 3; const S32 IGNORE_BTN_TOP_DELTA = 3*VPAD;//additional ignore_btn padding S32 BUTTON_WIDTH = 90; -// *TODO: magic numbers - 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; //static @@ -319,7 +317,7 @@ void LLToastNotifyPanel::init( LLRect rect, bool show_images ) mTextBox = getChild("text_editor_box"); } - mTextBox->setMaxTextLength(MAX_LENGTH); + mTextBox->setMaxTextLength(LLToastPanel::MAX_TEXT_LENGTH); mTextBox->setVisible(TRUE); mTextBox->setPlainText(!show_images); mTextBox->setContentTrusted(is_content_trusted); @@ -411,7 +409,7 @@ void LLToastNotifyPanel::init( LLRect rect, bool show_images ) //.xml file intially makes info panel only follow left/right/top. This is so that when control buttons are added the info panel //can shift upward making room for the buttons inside mControlPanel. After the buttons are added, the info panel can then be set to follow 'all'. mInfoPanel->setFollowsAll(); - snapToMessageHeight(mTextBox, MAX_LENGTH); + snapToMessageHeight(mTextBox, LLToastPanel::MAX_TEXT_LENGTH); // reshape the panel to its previous size if (current_rect.notEmpty()) @@ -472,7 +470,7 @@ void LLIMToastNotifyPanel::snapToMessageHeight() //Add message height if it is visible if (mTextBox->getVisible()) { - S32 new_panel_height = computeSnappedToMessageHeight(mTextBox, MAX_LENGTH); + S32 new_panel_height = computeSnappedToMessageHeight(mTextBox, LLToastPanel::MAX_TEXT_LENGTH); //reshape the panel with new height if (new_panel_height != getRect().getHeight()) diff --git a/indra/newview/lltoastpanel.cpp b/indra/newview/lltoastpanel.cpp index e1b764a943..7c624d5b50 100644 --- a/indra/newview/lltoastpanel.cpp +++ b/indra/newview/lltoastpanel.cpp @@ -26,6 +26,7 @@ #include "llviewerprecompiledheaders.h" +#include "lldbstrings.h" #include "llpanelgenerictip.h" #include "llpanelonlinestatus.h" #include "llnotifications.h" @@ -35,6 +36,8 @@ //static const S32 LLToastPanel::MIN_PANEL_HEIGHT = 40; // VPAD(4)*2 + ICON_HEIGHT(32) +// 'magic numbers', consider initializing (512+20) part from xml/notifications +const S32 LLToastPanel::MAX_TEXT_LENGTH = 512 + 20 + DB_FIRST_NAME_BUF_SIZE + DB_LAST_NAME_BUF_SIZE + DB_INV_ITEM_NAME_BUF_SIZE; LLToastPanel::LLToastPanel(const LLNotificationPtr& notification) { diff --git a/indra/newview/lltoastpanel.h b/indra/newview/lltoastpanel.h index 51630381f2..6a9b72a5ae 100644 --- a/indra/newview/lltoastpanel.h +++ b/indra/newview/lltoastpanel.h @@ -49,6 +49,7 @@ public: virtual const LLUUID& getID(); static const S32 MIN_PANEL_HEIGHT; + static const S32 MAX_TEXT_LENGTH; /** * Builder method for constructing notification specific panels. diff --git a/indra/newview/lltoastscripttextbox.cpp b/indra/newview/lltoastscripttextbox.cpp index 518c6c0ee4..eb86a44055 100644 --- a/indra/newview/lltoastscripttextbox.cpp +++ b/indra/newview/lltoastscripttextbox.cpp @@ -36,8 +36,6 @@ #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) @@ -45,7 +43,7 @@ LLToastScriptTextbox::LLToastScriptTextbox(const LLNotificationPtr& notification buildFromFile( "panel_notify_textbox.xml"); mInfoText = getChild("text_editor_box"); - mInfoText->setMaxTextLength(MAX_LENGTH); + mInfoText->setMaxTextLength(LLToastPanel::MAX_TEXT_LENGTH); mInfoText->setValue(notification->getMessage()); getChild("ignore_btn")->setClickedCallback(boost::bind(&LLToastScriptTextbox::onClickIgnore, this)); -- cgit v1.2.3 From 21d4ce26d3b3db5458321271ea5b7c7069289c94 Mon Sep 17 00:00:00 2001 From: AndreyL ProductEngine Date: Wed, 12 Dec 2018 00:11:16 +0200 Subject: INTL-324 added support for TLS failure dialog localization --- indra/newview/llxmlrpctransaction.cpp | 31 ++++++-------------------- indra/newview/skins/default/xui/en/strings.xml | 25 +++++++++++++++++++++ 2 files changed, 32 insertions(+), 24 deletions(-) (limited to 'indra/newview') diff --git a/indra/newview/llxmlrpctransaction.cpp b/indra/newview/llxmlrpctransaction.cpp index f5c169996f..cc223c1f48 100644 --- a/indra/newview/llxmlrpctransaction.cpp +++ b/indra/newview/llxmlrpctransaction.cpp @@ -483,42 +483,25 @@ void LLXMLRPCTransaction::Impl::setHttpStatus(const LLCore::HttpStatus &status) { CURLcode code = static_cast(status.toULong()); std::string message; - std::string uri = "http://secondlife.com/community/support.php"; + std::string uri = "http://support.secondlife.com"; LLURI failuri(mURI); - + LLStringUtil::format_map_t args; switch (code) { case CURLE_COULDNT_RESOLVE_HOST: - message = - std::string("DNS could not resolve the host name(") + failuri.hostName() + ").\n" - "Please verify that you can connect to the www.secondlife.com\n" - "web site. If you can, but continue to receive this error,\n" - "please go to the support section and report this problem."; + args["[HOSTNAME]"] = failuri.hostName(); + message = LLTrans::getString("couldnt_resolve_host", args); break; case CURLE_SSL_PEER_CERTIFICATE: - message = - "The login server couldn't verify itself via SSL.\n" - "If you continue to receive this error, please go\n" - "to the Support section of the SecondLife.com web site\n" - "and report the problem."; + message = LLTrans::getString("ssl_peer_certificate"); break; case CURLE_SSL_CACERT: - case CURLE_SSL_CONNECT_ERROR: - { - std::string uri_base = "https://community.secondlife.com/knowledgebase/english/error-messages-r520/#Section__3"; - message = - "Often this means that your computer\'s clock is set incorrectly.\n" - "Please go to Control Panels and make sure the time and date\n" - "are set correctly.\n" - "Also check that your network and firewall are set up correctly.\n" - "If you continue to receive this error, please go\n" - "to the Support section of the SecondLife.com web site\n" - "and report the problem.\n\n[" + uri_base + " Knowledge Base]"; + case CURLE_SSL_CONNECT_ERROR: + message = LLTrans::getString("ssl_connect_error"); break; - } default: break; diff --git a/indra/newview/skins/default/xui/en/strings.xml b/indra/newview/skins/default/xui/en/strings.xml index f5f4b4acab..e8fdb2d5b1 100644 --- a/indra/newview/skins/default/xui/en/strings.xml +++ b/indra/newview/skins/default/xui/en/strings.xml @@ -4233,4 +4233,29 @@ Try enclosing path to the editor with double quotes. The physics shape does not have correct version. Set the correct version for the physics model. + + +DNS could not resolve the host name([HOSTNAME]). +Please verify that you can connect to the www.secondlife.com +web site. If you can, but continue to receive this error, +please go to the support section and report this problem. + + +The login server couldn't verify itself via SSL. +If you continue to receive this error, please go +to the Support section of the SecondLife.com web site +and report the problem. + + +Often this means that your computer's clock is set incorrectly. +Please go to Control Panels and make sure the time and date +are set correctly. +Also check that your network and firewall are set up correctly. +If you continue to receive this error, please go +to the Support section of the SecondLife.com web site +and report the problem. + +[https://community.secondlife.com/knowledgebase/english/error-messages-r520/#Section__3 Knowledge Base] + + -- cgit v1.2.3 From 701ae96ff685847c8ddb46a4460fd70940733255 Mon Sep 17 00:00:00 2001 From: maxim_productengine Date: Thu, 13 Dec 2018 12:37:18 +0200 Subject: SL-10228 FIXED HTTP/HTTPS URL in the object name is represented as a hyperlink in message floater --- .../newview/skins/default/xui/en/notifications.xml | 28 +++++++++++----------- 1 file changed, 14 insertions(+), 14 deletions(-) (limited to 'indra/newview') diff --git a/indra/newview/skins/default/xui/en/notifications.xml b/indra/newview/skins/default/xui/en/notifications.xml index cc57e1375a..23a8d21f8a 100644 --- a/indra/newview/skins/default/xui/en/notifications.xml +++ b/indra/newview/skins/default/xui/en/notifications.xml @@ -1845,7 +1845,7 @@ You are not allowed to terraform parcel [PARCEL]. name="CannotCopyWarning" type="alertmodal"> You do not have permission to copy the following items: -[ITEMS] +<nolink>[ITEMS]</nolink> and will lose it from your inventory if you give it away. Do you really want to offer these items? confirm fail -Copy failed because you lack permission to copy the object '[OBJ_NAME]'. +Copy failed because you lack permission to copy the object <nolink>'[OBJ_NAME]'</nolink>. fail -Copy failed because the object '[OBJ_NAME]' cannot be transferred to you. +Copy failed because the object <nolink>'[OBJ_NAME]'</nolink> cannot be transferred to you. fail -Copy failed because the object '[OBJ_NAME]' contributes to navmesh. +Copy failed because the object <nolink>'[OBJ_NAME]'</nolink> contributes to navmesh. fail -Cannot save '[OBJ_NAME]' to object contents because the object it was rezzed from no longer exists. +Cannot save <nolink>'[OBJ_NAME]'</nolink> to object contents because the object it was rezzed from no longer exists. fail -Cannot save '[OBJ_NAME]' to object contents because you do not have permission to modify the object '[DEST_NAME]'. +Cannot save <nolink>'[OBJ_NAME]'</nolink> to object contents because you do not have permission to modify the object <nolink>'[DEST_NAME]'</nolink>. fail -Cannot save '[OBJ_NAME]' back to inventory -- this operation has been disabled. +Cannot save <nolink>'[OBJ_NAME]'</nolink> back to inventory -- this operation has been disabled. fail -You cannot copy your selection because you do not have permission to copy the object '[OBJ_NAME]'. +You cannot copy your selection because you do not have permission to copy the object <nolink>'[OBJ_NAME]'</nolink>. fail -You cannot copy your selection because the object '[OBJ_NAME]' is not transferrable. +You cannot copy your selection because the object <nolink>'[OBJ_NAME]'</nolink> is not transferrable. fail -You cannot copy your selection because the object '[OBJ_NAME]' is not transferrable. +You cannot copy your selection because the object <nolink>'[OBJ_NAME]'</nolink> is not transferrable. fail -Removal of the object '[OBJ_NAME]' from the simulator is disallowed by the permissions system. +Removal of the object <nolink>'[OBJ_NAME]'</nolink> from the simulator is disallowed by the permissions system. fail -Cannot save your selection because you do not have permission to modify the object '[OBJ_NAME]'. +Cannot save your selection because you do not have permission to modify the object <nolink>'[OBJ_NAME]'</nolink>. fail -Cannot save your selection because the object '[OBJ_NAME]' is not copyable. +Cannot save your selection because the object <nolink>'[OBJ_NAME]'</nolink> is not copyable. fail -You cannot take your selection because you do not have permission to modify the object '[OBJ_NAME]'. +You cannot take your selection because you do not have permission to modify the object <nolink>'[OBJ_NAME]'</nolink>. Date: Wed, 12 Dec 2018 20:21:21 +0200 Subject: SL-10231 Bug in texture cache size computation --- indra/newview/lltexturecache.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'indra/newview') diff --git a/indra/newview/lltexturecache.cpp b/indra/newview/lltexturecache.cpp index 633e025478..eb4b914e18 100644 --- a/indra/newview/lltexturecache.cpp +++ b/indra/newview/lltexturecache.cpp @@ -1038,11 +1038,11 @@ S64 LLTextureCache::initCache(ELLPath location, S64 max_size, BOOL texture_cache { llassert_always(getPending() == 0) ; //should not start accessing the texture cache before initialized. - S64 header_size = (max_size / 100) * 36; //0.36 * max_size - S64 max_entries = header_size / (TEXTURE_CACHE_ENTRY_SIZE + TEXTURE_FAST_CACHE_ENTRY_SIZE); + S64 entries_size = (max_size * 36) / 100; //0.36 * max_size + S64 max_entries = entries_size / (TEXTURE_CACHE_ENTRY_SIZE + TEXTURE_FAST_CACHE_ENTRY_SIZE); sCacheMaxEntries = (S32)(llmin((S64)sCacheMaxEntries, max_entries)); - header_size = sCacheMaxEntries * TEXTURE_CACHE_ENTRY_SIZE; - max_size -= header_size; + entries_size = sCacheMaxEntries * (TEXTURE_CACHE_ENTRY_SIZE + TEXTURE_FAST_CACHE_ENTRY_SIZE); + max_size -= entries_size; if (sCacheMaxTexturesSize > 0) sCacheMaxTexturesSize = llmin(sCacheMaxTexturesSize, max_size); else -- cgit v1.2.3 From 80054757ed0eee816c253a7707576252b7e89d9e Mon Sep 17 00:00:00 2001 From: andreykproductengine Date: Thu, 13 Dec 2018 00:10:52 +0200 Subject: SL-1481 Time limit should be per object --- indra/newview/llviewerobject.cpp | 14 +++++++------- indra/newview/llviewerobject.h | 1 + 2 files changed, 8 insertions(+), 7 deletions(-) (limited to 'indra/newview') diff --git a/indra/newview/llviewerobject.cpp b/indra/newview/llviewerobject.cpp index 079a9f0372..007adf2a72 100644 --- a/indra/newview/llviewerobject.cpp +++ b/indra/newview/llviewerobject.cpp @@ -261,6 +261,7 @@ LLViewerObject::LLViewerObject(const LLUUID &id, const LLPCode pcode, LLViewerRe mLastInterpUpdateSecs(0.f), mLastMessageUpdateSecs(0.f), mLatestRecvPacketID(0), + mRegionCrossExpire(0), mData(NULL), mAudioSourcep(NULL), mAudioGain(1.f), @@ -2636,8 +2637,7 @@ void LLViewerObject::interpolateLinearMotion(const F64SecondsImplicit& frame_tim new_pos.mV[VZ] = llmax(min_height, new_pos.mV[VZ]); // Check to see if it's going off the region - LLVector3 temp(new_pos); - static F64SecondsImplicit region_cross_expire = 0; // frame time we detected region crossing in + wait time + LLVector3 temp(new_pos.mV[VX], new_pos.mV[VY], 0.f); if (temp.clamp(0.f, mRegionp->getWidth())) { // Going off this region, so see if we might end up on another region LLVector3d old_pos_global = mRegionp->getPosGlobalFromRegion(getPositionRegion()); @@ -2664,28 +2664,28 @@ void LLViewerObject::interpolateLinearMotion(const F64SecondsImplicit& frame_tim // Note: theoretically we can find time from velocity, acceleration and // distance from border to new position, but it is not going to work // if 'phase_out' activates - if (region_cross_expire == 0) + if (mRegionCrossExpire == 0) { // Workaround: we can't accurately figure out time when we cross border // so just write down time 'after the fact', it is far from optimal in // case of lags, but for lags sMaxUpdateInterpolationTime will kick in first LL_DEBUGS("Interpolate") << "Predicted region crossing, new position " << new_pos << LL_ENDL; - region_cross_expire = frame_time + sMaxRegionCrossingInterpolationTime; + mRegionCrossExpire = frame_time + sMaxRegionCrossingInterpolationTime; } - else if (frame_time > region_cross_expire) + else if (frame_time > mRegionCrossExpire) { // Predicting crossing over 1s, stop motion // Stop motion LL_DEBUGS("Interpolate") << "Predicting region crossing for too long, stopping at " << new_pos << LL_ENDL; new_v.clear(); setAcceleration(LLVector3::zero); - region_cross_expire = 0; + mRegionCrossExpire = 0; } } } else { - region_cross_expire = 0; + mRegionCrossExpire = 0; } // Set new position and velocity diff --git a/indra/newview/llviewerobject.h b/indra/newview/llviewerobject.h index 990c392531..8b1535851e 100644 --- a/indra/newview/llviewerobject.h +++ b/indra/newview/llviewerobject.h @@ -772,6 +772,7 @@ protected: F64Seconds mLastInterpUpdateSecs; // Last update for purposes of interpolation F64Seconds mLastMessageUpdateSecs; // Last update from a message from the simulator TPACKETID mLatestRecvPacketID; // Latest time stamp on message from simulator + F64SecondsImplicit mRegionCrossExpire; // frame time we detected region crossing in + wait time // extra data sent from the sim...currently only used for tree species info U8* mData; -- cgit v1.2.3 From 5111e0c921d17b83b41aef02b6334a8361ce1181 Mon Sep 17 00:00:00 2001 From: maxim_productengine Date: Thu, 13 Dec 2018 18:21:11 +0200 Subject: SL-10229 FIXED Group icon doesn't display by default in the People and Profile floaters after creating new group --- indra/newview/llpanelgroupgeneral.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) (limited to 'indra/newview') diff --git a/indra/newview/llpanelgroupgeneral.cpp b/indra/newview/llpanelgroupgeneral.cpp index f85a2ffbc1..b53cd222e7 100644 --- a/indra/newview/llpanelgroupgeneral.cpp +++ b/indra/newview/llpanelgroupgeneral.cpp @@ -461,11 +461,12 @@ bool LLPanelGroupGeneral::createGroupCallback(const LLSD& notification, const LL // Yay! We are making a new group! U32 enrollment_fee = (mCtrlEnrollmentFee->get() ? (U32) mSpinEnrollmentFee->get() : 0); - + LLUUID insignia_id = mInsignia->getImageItemID().isNull() ? LLUUID::null : mInsignia->getImageAssetID(); + LLGroupMgr::getInstance()->sendCreateGroupRequest(mGroupNameEditor->getText(), mEditCharter->getText(), mCtrlShowInGroupList->get(), - mInsignia->getImageAssetID(), + insignia_id, enrollment_fee, mCtrlOpenEnrollment->get(), false, -- cgit v1.2.3 From bf2efcf43e5efaf91220a0c77f3db792636edeb1 Mon Sep 17 00:00:00 2001 From: maxim_productengine Date: Fri, 14 Dec 2018 16:48:54 +0200 Subject: SL-10233 FIXED 'Default' button doesn't work in 'Pick:Texture' floater for multiple selections with different textures --- indra/newview/lltexturectrl.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'indra/newview') diff --git a/indra/newview/lltexturectrl.cpp b/indra/newview/lltexturectrl.cpp index a5a2eec246..1a2a10f721 100644 --- a/indra/newview/lltexturectrl.cpp +++ b/indra/newview/lltexturectrl.cpp @@ -131,7 +131,7 @@ LLFloaterTexturePicker::~LLFloaterTexturePicker() void LLFloaterTexturePicker::setImageID(const LLUUID& image_id, bool set_selection /*=true*/) { - if( mImageAssetID != image_id && mActive) + if( ((mImageAssetID != image_id) || mTentative) && mActive) { mNoCopyTextureSelected = FALSE; mViewModel->setDirty(); // *TODO: shouldn't we be using setValue() here? -- cgit v1.2.3 From 514e4f661bbf4355ead4e60288c0075cc945b597 Mon Sep 17 00:00:00 2001 From: andreykproductengine Date: Thu, 13 Dec 2018 20:01:01 +0200 Subject: SL-10236 The "Attach To", "Attach To HUD", and "Wear" options aren't greyed out --- indra/newview/llinventorybridge.cpp | 5 ++++- indra/newview/lloutfitslist.cpp | 21 +++++++++++++++++++-- indra/newview/llviewermenu.cpp | 18 ++++++------------ 3 files changed, 29 insertions(+), 15 deletions(-) (limited to 'indra/newview') diff --git a/indra/newview/llinventorybridge.cpp b/indra/newview/llinventorybridge.cpp index 1987e15850..e7367d5ced 100644 --- a/indra/newview/llinventorybridge.cpp +++ b/indra/newview/llinventorybridge.cpp @@ -7344,7 +7344,10 @@ void LLFolderViewGroupedItemBridge::groupFilterContextMenu(folder_view_item_dequ { if (!LLAppearanceMgr::instance().canAddWearables(ids) && canWearSelected(ids)) { - disabled_items.push_back(std::string("Wearable Add")); + disabled_items.push_back(std::string("Wearable And Object Wear")); + disabled_items.push_back(std::string("Wearable Add")); + disabled_items.push_back(std::string("Attach To")); + disabled_items.push_back(std::string("Attach To HUD")); } } disable_context_entries_if_present(menu, disabled_items); diff --git a/indra/newview/lloutfitslist.cpp b/indra/newview/lloutfitslist.cpp index 892fa385d7..f2a284a561 100644 --- a/indra/newview/lloutfitslist.cpp +++ b/indra/newview/lloutfitslist.cpp @@ -621,8 +621,14 @@ void LLOutfitsList::applyFilterToTab( bool LLOutfitsList::canWearSelected() { + if (!isAgentAvatarValid()) + { + return false; + } + uuid_vec_t selected_items; getSelectedItemsUUIDs(selected_items); + S32 nonreplacable_objects = 0; for (uuid_vec_t::const_iterator it = selected_items.begin(); it != selected_items.end(); ++it) { @@ -633,10 +639,21 @@ bool LLOutfitsList::canWearSelected() { return false; } + + const LLViewerInventoryItem* item = gInventory.getItem(id); + if (!item) + { + return false; + } + + if (item->getType() == LLAssetType::AT_OBJECT) + { + nonreplacable_objects++; + } } - // All selected items can be worn. - return true; + // All selected items can be worn. But do we have enough space for them? + return nonreplacable_objects == 0 || gAgentAvatarp->canAttachMoreObjects(nonreplacable_objects); } void LLOutfitsList::wearSelectedItems() diff --git a/indra/newview/llviewermenu.cpp b/indra/newview/llviewermenu.cpp index 6c52f118ad..ba68ce4cf4 100644 --- a/indra/newview/llviewermenu.cpp +++ b/indra/newview/llviewermenu.cpp @@ -7068,25 +7068,19 @@ BOOL object_selected_and_point_valid() BOOL object_is_wearable() { - if (!object_selected_and_point_valid()) + if (!isAgentAvatarValid()) { return FALSE; } - if (sitting_on_selection()) + if (!object_selected_and_point_valid()) { return FALSE; } - LLObjectSelectionHandle selection = LLSelectMgr::getInstance()->getSelection(); - for (LLObjectSelection::valid_root_iterator iter = LLSelectMgr::getInstance()->getSelection()->valid_root_begin(); - iter != LLSelectMgr::getInstance()->getSelection()->valid_root_end(); iter++) + if (sitting_on_selection()) { - LLSelectNode* node = *iter; - if (node->mPermissions->getOwner() == gAgent.getID()) - { - return TRUE; - } + return FALSE; } - return FALSE; + return gAgentAvatarp->canAttachMoreObjects(); } @@ -9207,7 +9201,7 @@ void initialize_menus() enable.add("Object.EnableOpen", boost::bind(&enable_object_open)); enable.add("Object.EnableTouch", boost::bind(&enable_object_touch, _1)); enable.add("Object.EnableDelete", boost::bind(&enable_object_delete)); - enable.add("Object.EnableWear", boost::bind(&object_selected_and_point_valid)); + enable.add("Object.EnableWear", boost::bind(&object_is_wearable)); enable.add("Object.EnableStandUp", boost::bind(&enable_object_stand_up)); enable.add("Object.EnableSit", boost::bind(&enable_object_sit, _1)); -- cgit v1.2.3 From 2b2b6d40847d9d1bcd070a16003834389d954f32 Mon Sep 17 00:00:00 2001 From: maxim_productengine Date: Tue, 18 Dec 2018 11:41:32 +0200 Subject: SL-10251 show correct fee for 'save to disk' option on Japanese localization --- indra/newview/skins/default/xui/ja/panel_snapshot_options.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'indra/newview') diff --git a/indra/newview/skins/default/xui/ja/panel_snapshot_options.xml b/indra/newview/skins/default/xui/ja/panel_snapshot_options.xml index ebaab7c122..04dfc0176d 100644 --- a/indra/newview/skins/default/xui/ja/panel_snapshot_options.xml +++ b/indra/newview/skins/default/xui/ja/panel_snapshot_options.xml @@ -1,7 +1,7 @@ + + + + + + + + + L$ [AMT] + + + + + + Date: Tue, 8 Jan 2019 14:15:44 +0200 Subject: SL-10320 FIXED Crash in LLVOAvatar::updateAttachmentOverrides() --- indra/newview/llvoavatar.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'indra/newview') diff --git a/indra/newview/llvoavatar.cpp b/indra/newview/llvoavatar.cpp index 321f774210..2682c5b698 100644 --- a/indra/newview/llvoavatar.cpp +++ b/indra/newview/llvoavatar.cpp @@ -5992,7 +5992,7 @@ void LLVOAvatar::rebuildAttachmentOverrides() LLViewerObject *vo = *at_it; // Attached animated objects affect joints in their control // avs, not the avs to which they are attached. - if (!vo->isAnimatedObject()) + if (vo && !vo->isAnimatedObject()) { addAttachmentOverridesForObject(vo); } @@ -6043,7 +6043,7 @@ void LLVOAvatar::updateAttachmentOverrides() LLViewerObject *vo = *at_it; // Attached animated objects affect joints in their control // avs, not the avs to which they are attached. - if (!vo->isAnimatedObject()) + if (vo && !vo->isAnimatedObject()) { addAttachmentOverridesForObject(vo, &meshes_seen); } -- cgit v1.2.3 From 4316f1d322bc8e0439780d68442d76b17927247c Mon Sep 17 00:00:00 2001 From: "Brad Payne (Vir Linden)" Date: Tue, 8 Jan 2019 21:28:47 +0000 Subject: SL-10285 - removed one possible route for the isImpostor() crash. Intermittent issue. --- indra/newview/llcontrolavatar.cpp | 2 ++ indra/newview/llviewerobject.cpp | 1 + 2 files changed, 3 insertions(+) (limited to 'indra/newview') diff --git a/indra/newview/llcontrolavatar.cpp b/indra/newview/llcontrolavatar.cpp index d3fd5813a0..0f02c23cb0 100644 --- a/indra/newview/llcontrolavatar.cpp +++ b/indra/newview/llcontrolavatar.cpp @@ -60,6 +60,8 @@ LLControlAvatar::LLControlAvatar(const LLUUID& id, const LLPCode pcode, LLViewer // virtual LLControlAvatar::~LLControlAvatar() { + // Should already have been unlinked before destruction + llassert(!mRootVolp); } // virtual diff --git a/indra/newview/llviewerobject.cpp b/indra/newview/llviewerobject.cpp index 007adf2a72..ec1095813b 100644 --- a/indra/newview/llviewerobject.cpp +++ b/indra/newview/llviewerobject.cpp @@ -3100,6 +3100,7 @@ void LLViewerObject::unlinkControlAvatar() if (mControlAvatar) { mControlAvatar->markForDeath(); + mControlAvatar->mRootVolp = NULL; mControlAvatar = NULL; } } -- cgit v1.2.3 From cd859cd9e8a032d2d708788893654e5ceaadac09 Mon Sep 17 00:00:00 2001 From: maxim_productengine Date: Wed, 9 Jan 2019 10:57:15 +0200 Subject: SL-10321 FIXED 'Uploads' tab is not displayed after any search in Preferences --- indra/newview/llsearchableui.cpp | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'indra/newview') diff --git a/indra/newview/llsearchableui.cpp b/indra/newview/llsearchableui.cpp index 6058079ae4..de90896548 100644 --- a/indra/newview/llsearchableui.cpp +++ b/indra/newview/llsearchableui.cpp @@ -70,6 +70,11 @@ bool ll::prefs::PanelData::hightlightAndHide( LLWString const &aFilter ) for( tSearchableItemList::iterator itr = mChildren.begin(); itr != mChildren.end(); ++itr ) (*itr)->setNotHighlighted( ); + if (aFilter.empty()) + { + return true; + } + bool bVisible(false); for( tSearchableItemList::iterator itr = mChildren.begin(); itr != mChildren.end(); ++itr ) bVisible |= (*itr)->hightlightAndHide( aFilter ); -- cgit v1.2.3 From fdf39d3cf4ece8e587dcc865b1c6d5ab12e66948 Mon Sep 17 00:00:00 2001 From: maxim_productengine Date: Thu, 10 Jan 2019 15:41:48 +0200 Subject: SL-10329 Increase panel height to avoid message overlapping --- indra/newview/skins/default/xui/en/floater_model_preview.xml | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) (limited to 'indra/newview') diff --git a/indra/newview/skins/default/xui/en/floater_model_preview.xml b/indra/newview/skins/default/xui/en/floater_model_preview.xml index e073268b0a..a07fe99aef 100644 --- a/indra/newview/skins/default/xui/en/floater_model_preview.xml +++ b/indra/newview/skins/default/xui/en/floater_model_preview.xml @@ -34,7 +34,6 @@ LOD materials are not a subset of reference model. Some physical hulls exceed vertex limitations. The physics mesh too dense remove the small thin triangles (see preview) - The Firestorm OpenSim build is not supported for physics upload in SL. All Analyzing... Simplifying... @@ -1223,7 +1222,7 @@ You dont have rights to upload mesh models. [[VURL] Find out how] to get certified. - + [STATUS] -- cgit v1.2.3 From 02aa64e195c25087e9cf7c7f32a851d8b84d2798 Mon Sep 17 00:00:00 2001 From: eli Date: Thu, 10 Jan 2019 16:46:49 -0800 Subject: FIX INTL-324 Viewer Set55 translation (viewer-neko) --- .../newview/skins/default/xui/de/notifications.xml | 36 ++++++++++++---------- indra/newview/skins/default/xui/de/strings.xml | 21 +++++++++++++ .../newview/skins/default/xui/es/notifications.xml | 35 ++++++++++++--------- indra/newview/skins/default/xui/es/strings.xml | 21 +++++++++++++ .../newview/skins/default/xui/fr/notifications.xml | 36 ++++++++++++---------- indra/newview/skins/default/xui/fr/strings.xml | 21 +++++++++++++ .../newview/skins/default/xui/it/notifications.xml | 34 +++++++++++--------- indra/newview/skins/default/xui/it/strings.xml | 21 +++++++++++++ .../newview/skins/default/xui/ja/notifications.xml | 34 +++++++++++--------- indra/newview/skins/default/xui/ja/strings.xml | 21 +++++++++++++ .../newview/skins/default/xui/pt/notifications.xml | 36 ++++++++++++---------- indra/newview/skins/default/xui/pt/strings.xml | 21 +++++++++++++ .../newview/skins/default/xui/ru/notifications.xml | 36 ++++++++++++---------- indra/newview/skins/default/xui/ru/strings.xml | 21 +++++++++++++ .../newview/skins/default/xui/tr/notifications.xml | 36 ++++++++++++---------- indra/newview/skins/default/xui/tr/strings.xml | 21 +++++++++++++ .../newview/skins/default/xui/zh/notifications.xml | 32 ++++++++++--------- indra/newview/skins/default/xui/zh/strings.xml | 21 +++++++++++++ 18 files changed, 366 insertions(+), 138 deletions(-) (limited to 'indra/newview') diff --git a/indra/newview/skins/default/xui/de/notifications.xml b/indra/newview/skins/default/xui/de/notifications.xml index 43af1d8655..57dbaa0ea6 100644 --- a/indra/newview/skins/default/xui/de/notifications.xml +++ b/indra/newview/skins/default/xui/de/notifications.xml @@ -244,6 +244,10 @@ Wählen Sie ein einzelnes Objekt aus und versuchen Sie es erneut. Hinweis: Bei Aktivierung dieser Option sehen alle Personen, die diesen Computer benutzen, Ihre Lieblingsorte. + + Das Starten mehrerer Second Life Viewer wird nicht unterstützt. Dies kann zu Kollisionen des Textur-Caches, Fehlern sowie verschlechterter Grafik und Leistung führen. + + Wenn Sie einem anderen Einwohner Änderungsrechte gewähren, dann kann dieser JEDES Objekt, das Sie inworld besitzen, ändern, löschen oder an sich nehmen. Seien Sie daher beim Gewähren dieser Rechte sehr vorsichtig! Möchten Sie [NAME] Änderungsrechte gewähren? @@ -725,9 +729,9 @@ Sie können die Grafikqualität unter Einstellungen > Grafik wieder erhöhen. Sie sind nicht zum Terraformen der Parzelle „[PARCEL]“ berechtigt. - Sie sind nicht berechtigt, die folgenden Objekte zu kopieren: -[ITEMS] -Wenn Sie diese weitergeben, werden sie aus Ihrem Inventar entfernt. Möchten Sie diese Objekte wirklich weggeben? + Sie sind nicht berechtigt, die folgenden Objekte zu kopieren: +<nolink>[ITEMS]</nolink> +und die Objekte werden aus Ihrem Inventar gelöscht, wenn Sie diese weggeben. Möchten Sie diese Objekte wirklich weggeben? @@ -3730,13 +3734,13 @@ es sich nicht in der gleichen Region befindet wie Sie. Auf Land, das Sie nicht besitzen, können Sie keine Bäume und Gräser erstellen. - Kopieren fehlgeschlagen, da Sie keine Berechtigung zum Kopieren des Objekts „OBJ_NAME]“ besitzen. + Kopieren fehlgeschlagen, da Sie nicht über die Berechtigung zum Kopieren des Objekts <nolink>'[OBJ_NAME]'</nolink> verfügen. - Kopieren fehlgeschlagen, weil Objekt „[OBJ_NAME]“ nicht an Sie übertragen werden kann. + Kopieren fehlgeschlagen, da das Objekt <nolink>'[OBJ_NAME]'</nolink> nicht an Sie übertragen werden kann. - Kopieren fehlgeschlagen, weil Objekt „[OBJ_NAME]“ zum Navmesh beiträgt. + Kopieren fehlgeschlagen, da das Objekt <nolink>'[OBJ_NAME]'</nolink> zum Navmesh beiträgt. Ohne ausgewählte Hauptobjekte duplizieren. @@ -3781,34 +3785,34 @@ Warten Sie kurz und versuchen Sie es noch einmal. Erneutes Speichern im Inventar ist deaktiviert. - „[OBJ_NAME]“ kann nicht im Objektinhalt gespeichert werden, da das Objekt, aus dem es gerezzt wurde, nicht mehr existiert. + <nolink>'[OBJ_NAME]'</nolink> kann nicht im Objektinhalt gespeichert werden, da das Objekt, aus dem es gerezzt wurde, nicht mehr existiert. - „[OBJ_NAME]“ kann nicht in Objektinhalt gespeichert werden, da Sie nicht die Berechtigung zum Modifizieren des Objekts „[DEST_NAME]“ besitzen. + <nolink>'[OBJ_NAME]'</nolink> kann nicht in Objektinhalt gespeichert werden, da Sie nicht über die Berechtigung zum Modifizieren des Objekts <nolink>'[DEST_NAME]'</nolink> verfügen. - „[OBJ_NAME]“ kann nicht erneut im Inventar gespeichert werden – dieser Vorgang wurde deaktiviert. + <nolink>'[OBJ_NAME]'</nolink> kann nicht erneut im Inventar gespeichert werden – dieser Vorgang wurde deaktiviert. - Sie können Ihre Auswahl nicht kopieren, da Sie nicht die Berechtigung zum Kopieren des Objekts „[OBJ_NAME]“ haben. + Sie können Ihre Auswahl nicht kopieren, da Sie nicht über die Berechtigung zum Kopieren des Objekts <nolink>'[OBJ_NAME]'</nolink> verfügen. - Sie können Ihre Auswahl nicht kopieren, da das Objekt „[OBJ_NAME]“ nicht übertragbar ist. + Sie können Ihre Auswahl nicht kopieren, da das Objekt <nolink>'[OBJ_NAME]'</nolink> nicht übertragbar ist. - Sie können Ihre Auswahl nicht kopieren, da das Objekt „[OBJ_NAME]“ nicht übertragbar ist. + Sie können Ihre Auswahl nicht kopieren, da das Objekt <nolink>'[OBJ_NAME]'</nolink> nicht übertragbar ist. - Entfernen des Objekts „[OBJ_NAME]“ aus dem Simulator wird vom Berechtigungssystem nicht gestattet. + Entfernen des Objekts <nolink>'[OBJ_NAME]'</nolink> aus dem Simulator wird vom Berechtigungssystem nicht gestattet. - Sie können Ihre Auswahl nicht speichern, da Sie keine Berechtigung zum Modifizieren des Objekts „[OBJ_NAME]“ besitzen. + Sie können Ihre Auswahl nicht speichern, da Sie nicht über die Berechtigung zum Modifizieren des Objekts <nolink>'[OBJ_NAME]'</nolink> verfügen. - Ihre Auswahl kann nicht gespeichert werden, da das Objekt „[OBJ_NAME]“ nicht kopiert werden kann. + Ihre Auswahl kann nicht gespeichert werden, da das Objekt <nolink>'[OBJ_NAME]'</nolink> nicht kopiert werden kann. - Sie können Ihre Auswahl nicht in Empfang nehmen, da Sie nicht die Berechtigung zum Modifizieren des Objekts „[OBJ_NAME]“ haben. + Sie können Ihre Auswahl nicht in Empfang nehmen, da Sie nicht über die Berechtigung zum Modifizieren des Objekts <nolink>'[OBJ_NAME]'</nolink> verfügen. Interner Fehler: Unbekannter Zielttyp. diff --git a/indra/newview/skins/default/xui/de/strings.xml b/indra/newview/skins/default/xui/de/strings.xml index cde04d8d69..78d445f362 100644 --- a/indra/newview/skins/default/xui/de/strings.xml +++ b/indra/newview/skins/default/xui/de/strings.xml @@ -5740,4 +5740,25 @@ Setzen Sie den Editorpfad in Anführungszeichen Die Physikform hat keine korrekte Version. Legen Sie die korrekte Version für das Physikmodell fest. + + Der DNS konnte den Hostnamen ([HOSTNAME]) nicht auflösen Prüfen +Sie bitte, ob Sie die Website www.secondlife.com aufrufen können. Wenn Sie die +Website aufrufen können, jedoch weiterhin diese Fehlermeldung erhalten, +besuchen Sie bitte den Support-Bereich und melden Sie das Problem. + + + Der Anmeldeserver konnte sich nicht per SSL verifizieren. +Wenn Sie diese Fehlermeldung weiterhin erhalten, besuchen +Sie bitte den Support-Bereich der Website Secondlife.com +und melden Sie das Problem. + + + Die Ursache hierfür ist häufig eine falsch eingestellte Uhrzeit auf Ihrem Computer. +Bitte vergewissern Sie sich, dass Datum und Uhrzeit in der Systemsteuerung korrekt +eingestellt sind. Überprüfen Sie außerdem, ob Ihre Netzwerk- und Firewall-Einstellungen +korrekt sind. Wenn Sie diese Fehlermeldung weiterhin erhalten, besuchen Sie bitte den +Support-Bereich der Website Secondlife.com und melden Sie das Problem. + +[https://community.secondlife.com/knowledgebase/english/error-messages-r520/#Section__3 Knowledge-Base] + diff --git a/indra/newview/skins/default/xui/es/notifications.xml b/indra/newview/skins/default/xui/es/notifications.xml index 70825eadbe..7b1185c4c3 100644 --- a/indra/newview/skins/default/xui/es/notifications.xml +++ b/indra/newview/skins/default/xui/es/notifications.xml @@ -243,6 +243,10 @@ La inicialización del mercado ha fallado por un error del sistema o de la red. Nota: Al activar esta opción, cualquiera que utilice este ordenador podrá ver tu lista de lugares favoritos. + + No es posible ejecutar varios visores Second Life ya que esta funcionalidad no es compatible. Puede provocar problemas de caché en la textura, imágenes degradadas o alteradas y un bajo rendimiento. + + Al conceder permisos de modificación a otro Residente, le estás permitiendo cambiar, borrar o tomar CUALQUIER objeto que tengas en el mundo. Sé MUY cuidadoso al conceder este permiso. ¿Quieres conceder permisos de modificación a [NAME]? @@ -713,8 +717,9 @@ La calidad gráfica puede ajustarse en Preferencias > Gráficos. No tienes permiso para modificar el terreno de la parcela [PARCEL]. - No tienes permiso para copiar los elementos siguientes: -[ITEMS] y, si los das, los perderás del inventario. ¿Seguro que quieres ofrecerlos? + No tienes permiso para copiar los elementos siguientes: +<nolink>[ITEMS]</nolink> +y, si los das, los perderás del inventario. ¿Seguro que quieres ofrecerlos? @@ -3712,13 +3717,13 @@ no está en la misma región que tú. No puedes crear árboles y hierba en un terreno que no es tuyo. - Error al copiar: careces de permiso para copiar el objeto '[OBJ_NAME]'. + Error al copiar porque no tienes permiso para copiar el objeto <nolink>'[OBJ_NAME]'</nolink>. - Error al copiar: no se te puede transferir el objeto '[OBJ_NAME]'. + Error al copiar porque no puedes recibir una transferencia del objeto <nolink>'[OBJ_NAME]'</nolink>. - Error al copiar porque el objeto '[OBJ_NAME]' contribuye al navmesh. + Error al copiar porque el objeto <nolink>'[OBJ_NAME]'</nolink> contribuye a navmesh. Duplicación sin objetos raíz seleccionados. @@ -3763,34 +3768,34 @@ Prueba otra vez dentro de un minuto. Se ha deshabilitado Devolver el objeto a mi inventario. - No se puede guardar '[OBJ_NAME]' en el contenido del objeto porque el objeto desde el cual ha sido colocado ya no existe. + No se puede guardar <nolink>'[OBJ_NAME]'</nolink> en los contenidos del objeto porque el objeto a partir del cual fue creado ya no existe. - No se puede guardar '[OBJ_NAME]' en el contenido del objeto porque no tienes permiso para modificar el objeto '[DEST_NAME]'. + No se puede guardar <nolink>'[OBJ_NAME]'</nolink> en los contenidos del objeto porque no tienes permiso para modificar el objeto <nolink>'[DEST_NAME]'</nolink>. - No se puede guardar '[OBJ_NAME]' de nuevo en el inventario; esta operación está desactivada. + No se puede volver a guardar <nolink>'[OBJ_NAME]'</nolink> en el inventario. Esta operación fue desactivada. - No se puede copiar tu selección porque no tienes permiso para copiar el objeto '[OBJ_NAME]'. + No puedes copiar el elemento seleccionado porque no tienes permiso para copiar el objeto <nolink>'[OBJ_NAME]'</nolink>. - No se puede copiar tu selección porque el objeto '[OBJ_NAME]' es intransferible. + No puedes copiar el elemento seleccionado porque el objeto <nolink>'[OBJ_NAME]'</nolink> no es transferible. - No se puede copiar tu selección porque el objeto '[OBJ_NAME]' es intransferible. + No puedes copiar el elemento seleccionado porque el objeto <nolink>'[OBJ_NAME]'</nolink> no es transferible. - El sistema de permisos no admite la eliminación del objeto '[OBJ_NAME]' del simulador. + El sistema de permisos no autoriza quitar el objeto <nolink>'[OBJ_NAME]'</nolink> del simulador. - No se puede guardar tu selección porque no tienes permiso para modificar el objeto '[OBJ_NAME]'. + No puedes guardar el elemento seleccionado porque no tienes permiso para modificar el objeto <nolink>'[OBJ_NAME]'</nolink>. - No se puede guardar tu selección porque el objeto '[OBJ_NAME]' no se puede copiar. + No puedes guardar el elemento seleccionado porque el objeto <nolink>'[OBJ_NAME]'</nolink> no puede ser copiado. - No se puede aceptar tu selección porque no tienes permiso para modificar el objeto '[OBJ_NAME]'. + No puedes tomar el elemento seleccionado porque no tienes permiso para modificar el objeto <nolink>'[OBJ_NAME]'</nolink>. Error interno: tipo de destino desconocido. diff --git a/indra/newview/skins/default/xui/es/strings.xml b/indra/newview/skins/default/xui/es/strings.xml index 36a2711a5c..15e3c0622d 100644 --- a/indra/newview/skins/default/xui/es/strings.xml +++ b/indra/newview/skins/default/xui/es/strings.xml @@ -5651,4 +5651,25 @@ Inténtalo incluyendo la ruta de acceso al editor entre comillas La versión de la forma física no es correcta. Configura la versión correcta del modelo físico. + + Error de DNS al resolver el nombre del host([HOSTNAME]). +Por favor verifica si puedes conectarte al sitio web www.secondlife.com. +Si puedes conectarte, pero aún recibes este error, por favor accede a +la sección Soporte y genera un informe del problema. + + + El servidor de inicio de sesión no pudo verificarse vía SSL. +Si aún recibes este error, por favor accede a +la sección Soporte del sitio web Secondlife.com +y genera un informe del problema. + + + En general esto significa que el horario de tu computadora no está bien configurado. +Por favor accede al Panel de control y asegúrate de que la hora y la fecha estén +bien configurados. Verifica también que tu red y tu cortafuegos estén bien +configurados. Si aún recibes este error, por favor accede a la sección Soporte +del sitio web Secondlife.com y genera un informe del problema. + +[https://community.secondlife.com/knowledgebase/english/error-messages-r520/#Section__3 Base de conocimientos] + diff --git a/indra/newview/skins/default/xui/fr/notifications.xml b/indra/newview/skins/default/xui/fr/notifications.xml index 74abecf760..9066f1e70c 100644 --- a/indra/newview/skins/default/xui/fr/notifications.xml +++ b/indra/newview/skins/default/xui/fr/notifications.xml @@ -244,6 +244,10 @@ Veuillez ne sélectionner qu'un seul objet. Remarque : si vous activez cette option, toutes les personnes utilisant cet ordinateur pourront voir votre liste d'endroits favoris. + + L'exécution de plusieurs visualiseurs Second Life n'est pas prise en charge. Cela peut entraîner des collisions de cache de texture, une corruption et une dégradation des visuels et des performances. + + Lorsque vous accordez des droits de modification à un autre résident, vous lui permettez de changer, supprimer ou prendre n'importe lequel de vos objets dans Second Life. Réfléchissez bien avant d'accorder ces droits. Voulez-vous vraiment accorder des droits de modification à [NAME] ? @@ -717,9 +721,9 @@ La qualité des graphiques peut être augmentée à la section Préférences > Vous n'êtes pas autorisé(e) à terraformer la parcelle [PARCEL]. - Vous n'êtes pas autorisé à copier les articles suivants : -[ITEMS]. -Ceux-ci disparaîtront donc de votre inventaire si vous les donnez. Voulez-vous vraiment offrir ces articles ? + Vous n'êtes pas autorisé à copier les objets suivants : +<nolink>[ITEMS]</nolink> +et il disparaîtra de votre inventaire si vous le donnez. Voulez-vous vraiment offrir ces articles ? @@ -3715,13 +3719,13 @@ il ne se trouve pas dans la même région que vous. Vous ne pouvez pas créer d'arbres ni d'herbe sur un terrain qui ne vous appartient pas. - Échec de la copie car vous ne disposez pas des droits requis pour copier l'objet [OBJ_NAME]. + La copie a échoué car vous ne disposez pas de l'autorisation nécessaire pour copier l'objet <nolink>'[OBJ_NAME]'</nolink>. - Échec de la copie car l'objet [OBJ_NAME] ne peut pas vous être transféré. + La copie a échoué car l'objet <nolink>'[OBJ_NAME]'</nolink> ne peut pas vous être transféré. - Échec de la copie car l'objet [OBJ_NAME] contribue au maillage de navigation. + La copie a échoué car l'objet <nolink>'[OBJ_NAME]'</nolink> contribue à navmesh. Dupliquer sans objet racine sélectionné @@ -3766,34 +3770,34 @@ Veuillez réessayer dans une minute. Le réenregistrement dans l'inventaire a été désactivé. - Impossible d'enregistrer [OBJ_NAME] dans le contenu des objets car l'objet à partir duquel il a été rezzé n'existe plus. + Impossible de sauvegarder <nolink>'[OBJ_NAME]'</nolink> dans le contenu de l'objet car l'objet à partir duquel il a été rezzé n'existe plus. - Impossible d'enregistrer [OBJ_NAME] dans le contenu des objets car vous ne disposez pas des droits requis pour modifier l'objet [DEST_NAME]. + Impossible de sauvegarder<nolink>'[OBJ_NAME]'</nolink> dans le contenu de l'objet car vous n'êtes pas autorisé à modifier l'objet <nolink>'[DEST_NAME]'</nolink>. - Impossible de réenregistrer [OBJ_NAME] dans l'inventaire -- cette opération a été désactivée. + Impossible de sauvegarder <nolink>'[OBJ_NAME]'</nolink> dans l'inventaire - cette opération a été désactivée. - Vous ne pouvez pas copier votre sélection car vous n'avez pas le droit de copier l'objet [OBJ_NAME]. + Vous ne pouvez pas copier votre sélection parce que vous n'êtes pas autorisé à copier l'objet <nolink>'[OBJ_NAME]'</nolink>. - Vous ne pouvez pas copier votre sélection car l'objet [OBJ_NAME] n'est pas transférable. + Vous ne pouvez pas copier votre sélection parce que l'objet <nolink>'[OBJ_NAME]'</nolink> n'est pas transférable. - Vous ne pouvez pas copier votre sélection car l'objet [OBJ_NAME] n'est pas transférable. + Vous ne pouvez pas copier votre sélection parce que l'objet <nolink>'[OBJ_NAME]'</nolink> n'est pas transférable. - La suppression de l'objet [OBJ_NAME] du simulateur n'est pas autorisée par le système de droits. + La suppression de l'objet <nolink>'[OBJ_NAME]'</nolink> du simulateur n'est pas autorisée par le système d'autorisations. - Vous ne pouvez pas enregistrer votre sélection car vous n'avez pas le droit de modifier l'objet [OBJ_NAME]. + Impossible de sauvegarder votre sélection parce que vous n'êtes pas autorisé à modifier l'objet <nolink>'[OBJ_NAME]'</nolink>. - Vous ne pouvez pas enregistrer votre sélection car l'objet [OBJ_NAME] ne peut pas être copié. + Impossible d'enregistrer votre sélection car l'objet <nolink>'[OBJ_NAME]'</nolink> n'est pas copiable. - Vous ne pouvez pas prendre votre sélection car vous n'avez pas le droit de modifier l'objet [OBJ_NAME]. + Vous ne pouvez pas sauvegarder votre sélection parce que vous n'êtes pas autorisé à modifier l'objet <nolink>'[OBJ_NAME]'</nolink>. Erreur interne : type de destination inconnue. diff --git a/indra/newview/skins/default/xui/fr/strings.xml b/indra/newview/skins/default/xui/fr/strings.xml index 7f5851b51d..13dd2b3640 100644 --- a/indra/newview/skins/default/xui/fr/strings.xml +++ b/indra/newview/skins/default/xui/fr/strings.xml @@ -5741,4 +5741,25 @@ Essayez avec le chemin d'accès à l'éditeur entre guillemets doubles La forme physique n’a pas la version correcte. Configurez la version correcte pour le modèle physique. + + DNS n'a pas pu résoudre le nom d'hôte([HOSTNAME]). +Veuillez vérifier que vous parvenez à vous connecter au site www.secondlife.com. +Si c'est le cas, et que vous continuez à recevoir ce message d'erreur, veuillez vous +rendre à la section Support et signaler ce problème + + + Le serveur d'identification a rencontré une erreur de connexion SSL. +Si vous continuez à recevoir ce message d'erreur, +veuillez vous rendre à la section Support du site web +SecondLife.com et signaler ce problème + + + Ceci est souvent dû à un mauvais réglage de l'horloge de votre ordinateur. +Veuillez aller à Tableaux de bord et assurez-vous que l'heure et la date sont réglés +correctement. Vérifiez également que votre réseau et votre pare-feu sont configurés +correctement. Si vous continuez à recevoir ce message d'erreur, veuillez vous rendre +à la section Support du site web SecondLife.com et signaler ce problème. + +[https://community.secondlife.com/knowledgebase/english/error-messages-r520/#Section__3 Base de connaissances] + diff --git a/indra/newview/skins/default/xui/it/notifications.xml b/indra/newview/skins/default/xui/it/notifications.xml index d1a47535d8..8a057914ac 100644 --- a/indra/newview/skins/default/xui/it/notifications.xml +++ b/indra/newview/skins/default/xui/it/notifications.xml @@ -244,6 +244,10 @@ Scegli solo un oggetto e riprova. Nota: Se attivi questa opzione, chiunque usa questo computer può vedere l'elenco di luoghi preferiti. + + Non è possibile utilizzare più di un viewer Second Life contemporaneamente. L’utilizzo simultaneo potrebbe portare a collisioni o corruzione della cache texture, e ad un peggioramento nelle immagini e nella performance. + + Quando concedi i diritti di modifica ad un altro residente, gli permetti di modificare, eliminare o prendere QUALSIASI oggetto che possiedi in Second Life. Pertanto ti consigliamo di essere ben sicuro quando concedi questo diritto. Vuoi concedere i diritti di modifica a [NAME]? @@ -716,8 +720,8 @@ La qualità grafica può essere aumentata in Preferenze > Grafica. Non hai l'autorizzazione a copiare i seguenti oggetti: -[ITEMS] -e se li dai via, verranno eliminati dal tuo inventario. Sicuro di volere offrire questi oggetti? +<nolink>[ITEMS]</nolink> +e se li dai via, verranno eliminati dal tuo inventario. Sicuro di voler offrire questi oggetti? @@ -3719,13 +3723,13 @@ non è nella stessa regione in cui ti trovi. Non puoi creare alberi ed erba su terreni che non sono di tua proprietà. - Copia non riuscita perché non hai l'autorizzazione necessaria per copiare l'oggetto '[OBJ_NAME]'. + Copia non riuscita perché non hai il permesso per copiare l’oggetto <nolink>'[OBJ_NAME]'</nolink>. - La copia non è riuscita perché '[OBJ_NAME]' non può essere trasferito a te. + Copia non riuscita perché l’oggetto <nolink>'[OBJ_NAME]'</nolink> non può esserti trasferito. - La copia non è riuscita perché '[OBJ_NAME]' contribuisce al navmesh. + Copia non riuscita perché l’oggetto <nolink>'[OBJ_NAME]'</nolink> contribuisce al navmesh. Duplicato senza oggetto principale selezionato. @@ -3770,34 +3774,34 @@ Riprova tra un minuto. Opzione Salva nell'inventario disattivata - Impossibile salvare '[OBJ_NAME]' nei contenuti dell'oggetto perché l'oggetto da cui è stato razzato non esiste più. + Impossibile salvare <nolink>'[OBJ_NAME]'</nolink> in contenuti oggetto perché l’oggetto da cui è stato rezzato non esiste più. - Impossibile salvare '[OBJ_NAME]' nei contenuti dell'oggetto perché non hai l'autorizzazione necessaria per modificare l'oggetto '[DEST_NAME]'. + Impossibile salvare <nolink>'[OBJ_NAME]'</nolink> in contenuti oggetto perché non hai i permessi per modificare l’oggetto <nolink>'[DEST_NAME]’</nolink>. - Impossibile riportare '[OBJ_NAME]' nell'inventario -- questa operazione è stata disattivata. + Impossibile salvare <nolink>'[OBJ_NAME]'</nolink> nell’inventario: questa operazione è stata disabilitata. - Non puoi copiare l'elemento selezionato perché non hai l'autorizzazione necessaria per copiare l'oggetto '[OBJ_NAME]'. + Non puoi copiare la selezione perché non hai il permesso di copiare l’oggetto <nolink>'[OBJ_NAME]'</nolink>. - Non puoi copiare la selezione perché l'oggetto '[OBJ_NAME]' non può essere trasferito. + Non puoi copiare la selezione perché l’oggetto <nolink>'[OBJ_NAME]'</nolink> non è trasferibile. - Non puoi copiare la selezione perché l'oggetto '[OBJ_NAME]' non può essere trasferito. + Non puoi copiare la selezione perché l’oggetto <nolink>'[OBJ_NAME]'</nolink> non è trasferibile. - La rimozione dell'oggetto '[OBJ_NAME]' dal simulatore non è consentita dal sistema delle autorizzazioni. + La rimozione dell’oggetto <nolink>'[OBJ_NAME]'</nolink> dal simulatore è disattivata dal sistema dei permessi. - Non puoi salvare l'elemento selezionato perché non hai l'autorizzazione necessaria per modificare l'oggetto '[OBJ_NAME]'. + Non puoi copiare la selezione perché non hai il permesso di modificare l’oggetto <nolink>'[OBJ_NAME]'</nolink>. - Non puoi salvare la selezione perché l'oggetto '[OBJ_NAME]' non può essere copiato. + Non puoi copiare la selezione perché l’oggetto <nolink>'[OBJ_NAME]'</nolink> non è copiabile. - Non puoi prendere l'elemento selezionato perché non hai l'autorizzazione necessaria per modificare l'oggetto '[OBJ_NAME]'. + Non puoi prendere ciò che hai selezionato perché non hai il permesso di modificare l’oggetto <nolink>'[OBJ_NAME]'</nolink>. Errore interno: Tipo di destinazione sconosciuto. diff --git a/indra/newview/skins/default/xui/it/strings.xml b/indra/newview/skins/default/xui/it/strings.xml index 918e655ab6..be3acc14b3 100644 --- a/indra/newview/skins/default/xui/it/strings.xml +++ b/indra/newview/skins/default/xui/it/strings.xml @@ -5656,4 +5656,25 @@ Prova a racchiudere il percorso dell'editor in doppie virgolette. La versione della forma fisica non è corretta. Imposta la versione corretta per il modello della fisica. + + Il DNS non ha potuto risolvere il nome dell’host([HOSTNAME]). +Verifica di riuscire a connetterti al sito web www.secondlife.com. +Se riesci ma continui a ricevere questo errore, visita la sezione +Assistenza e segnala il problema. + + + Il server per il login non ha potuto effettuare la verifica tramite SSL. +Se continui a ricevere questo errore, visita +la sezione Assistenza nel sito SecondLife.com +e segnala il problema. + + + Spesso l’errore è dovuto all’orologio del computer, impostato incorrettamente. +Vai al Pannello di Controllo e assicurati che data e ora siano +esatte. Controlla anche che il network e il firewall siano impostati +correttamente. Se continui a ricevere questo errore, visita la sezione +Assistenza nel sito SecondLife.com e segnala il problema. + +[https://community.secondlife.com/knowledgebase/english/error-messages-r520/#Section__3 Base conoscenze] + diff --git a/indra/newview/skins/default/xui/ja/notifications.xml b/indra/newview/skins/default/xui/ja/notifications.xml index 99ba5b2655..fc6c951a55 100644 --- a/indra/newview/skins/default/xui/ja/notifications.xml +++ b/indra/newview/skins/default/xui/ja/notifications.xml @@ -244,6 +244,10 @@ 注意:このオプションを有効にすると、このパソコンを使うユーザーは誰でも、あなたのお気に入りの場所を見ることができるようになります。 + + 複数の Second Life ビューワを実行することはサポートされていません。テクスチャキャッシュのコリジョンや破損、およびビジュアルとパフォーマンスの低下につながる恐れがあります。 + + 他人に修正権限を与えると、権限を与えられた人はあなたが所有するインワールドのオブジェクトを変更、削除、持ち帰ることができます。この権限を与える際には十分に注意してください。 [NAME] に修正権限を与えますか? @@ -735,7 +739,9 @@ L$ が不足しているのでこのグループに参加することができ あなたには [PARCEL] 区画を地形編集する許可がありません。 - あなたには[ITEMS]というアイテムをコピーする許可がありません。他の住人に提供すると、そのアイテムはあなたのインベントリから削除されます。本当にこれらのアイテムを譲りますか? + あなたには次アイテムをコピーする権限がありません: +<nolink>[ITEMS]</nolink> +他の住人に譲ると、そのアイテムはあなたの持ち物から削除されます。本当にこれらのアイテムを譲りますか? @@ -3756,13 +3762,13 @@ M キーを押して変更します。 所有していない土地に木や草を植えることはできません。 - オブジェクト '[OBJ_NAME]' をコピーする権限がないため、コピーに失敗しました。 + あなたにはオブジェクト <nolink>'[OBJ_NAME]'</nolink> をコピーする権限がないため、コピーに失敗しました。 - オブジェクト '[OBJ_NAME]' をあなたに転送できないため、コピーに失敗しました。 + オブジェクト <nolink>'[OBJ_NAME]'</nolink> はあなたに譲渡できないため、コピーに失敗しました。 - オブジェクト '[OBJ_NAME]' がナビメッシュに貢献しているため、コピーに失敗しました。 + オブジェクト <nolink>'[OBJ_NAME]'</nolink> は navmesh に関連があるため、コピーに失敗しました。 ルートオブジェクトを選択せずに複製します。 @@ -3807,34 +3813,34 @@ M キーを押して変更します。 「「持ち物」に保存」が無効になっています。 - '[OBJ_NAME]' の Rez 元であるオブジェクトが存在しないため、このオブジェクトをオブジェクトコンテンツに保存できません。 + 「存在しません」から rez されたため、<nolink>'[OBJ_NAME]'</nolink> をオブジェクトの中身に保存できませんでした。 - オブジェクト '[DEST_NAME]' を修正する権限がないため、オブジェクトのコンテンツに '[OBJ_NAME]' を保存できません。 + あなたにはオブジェクト <nolink>'[DEST_NAME]'</nolink> を修正する権限がないため、<nolink>'[OBJ_NAME]'</nolink>をオブジェクトの中身に保存できませんでした。 - インベントリに '[OBJ_NAME]' を保存することはできません - この操作が無効になっています。 + <nolink>'[OBJ_NAME]'</nolink> をインベントリに保存できません。この操作は無効になりました。 - オブジェクト '[OBJ_NAME]' を変更する権限を持っていないため、選択したものをコピーできません。 + あなたにはオブジェクト <nolink>'[OBJ_NAME]'</nolink> をコピーする権限がないため、選択内容をコピーできません。 - オブジェクト '[OBJ_NAME]' を転送できないため、選択したものをコピーできません。 + オブジェクト <nolink>'[OBJ_NAME]'</nolink> を譲渡できないため、選択内容をコピーできません。 - オブジェクト '[OBJ_NAME]' を転送できないため、選択したものをコピーできません。 + オブジェクト <nolink>'[OBJ_NAME]'</nolink> を譲渡できないため、選択内容をコピーできません。 - シミュレータからのオブジェクト '[OBJ_NAME]' の削除は、権限システムによって無効にされています。 + オブジェクト <nolink>'[OBJ_NAME]'</nolink> をシミュレーターから削除することは、権限のシステムにより許可されていません。 - オブジェクト '[OBJ_NAME]' を変更する権限を持っていないため、選択したものを保存できません。 + あなたにはオブジェクト <nolink>'[OBJ_NAME]'</nolink> を修正する権限がないため、選択内容を保存できません。 - オブジェクト '[OBJ_NAME]' をコピーできないため、選択したものを保存できません。 + オブジェクト <nolink>'[OBJ_NAME]'</nolink> はコピー不可なため、選択内容を保存できません。 - オブジェクト '[OBJ_NAME]' を変更する権限を持っていないため、選択したものを取得できません。 + あなたにはオブジェクト <nolink>'[OBJ_NAME]'</nolink> を修正する権限がないため、選択内容を選ぶことはできません。 内部エラー: 不明な宛先タイプ。 diff --git a/indra/newview/skins/default/xui/ja/strings.xml b/indra/newview/skins/default/xui/ja/strings.xml index bcf4698bb0..9116bba8bb 100644 --- a/indra/newview/skins/default/xui/ja/strings.xml +++ b/indra/newview/skins/default/xui/ja/strings.xml @@ -5739,4 +5739,25 @@ www.secondlife.com から最新バージョンをダウンロードしてくだ 物理形状のバージョンが正しくありません。物理モデルに正しいバージョンを設定してください。 + + DNS がホスト名 ([HOSTNAME]) を解決できませんでした。 +www.secondlife.com のウェブサイトに接続できるかご確認ください。 +接続できても、このエラーが継続的に起こる場合は、 +サポートセクションから問題を報告してください。 + + + ログインサーバーが SSL 経由で確認できませんでした。 +このエラーが継続的に起こる場合は、 +Secondlife.com のサポートセクションから +問題を報告してください。 + + + この問題の多くは、お使いのコンピュータの時計が正しく設定されていないために起こります。 +コントロールパネルから時刻と日付が正しく設定されているかご確認ください。 +お使いのネットワークとファイアウォールも正しく設定されているかお確かめください。 +このエラーが継続的に起こる場合は、Secondlife.com のサポートセクションから +問題を報告してください。 + +[https://community.secondlife.com/knowledgebase/english/error-messages-r520/#Section__3 ナレッジベース] + diff --git a/indra/newview/skins/default/xui/pt/notifications.xml b/indra/newview/skins/default/xui/pt/notifications.xml index 5c848034d8..b4cf0a1b20 100644 --- a/indra/newview/skins/default/xui/pt/notifications.xml +++ b/indra/newview/skins/default/xui/pt/notifications.xml @@ -243,6 +243,10 @@ Por favor, selecione apenas um objeto e tente novamente. Nota: Ao ativar esta opção, qualquer pessoa que utilizar este computador poderá ver a sua lista de lugares preferidos. + + Não é possível executar múltiplos visualizadores Second Life. Pode levar a uma falha, um corrompimento, visuais alterados e falha no desempenho no cache de textura. + + Conceder direitos de modificação a outros residentes vai autorizá-los a mudar, apagar ou pegar TODOS os seus objetos. Seja MUITO cuidadoso ao conceder esta autorização. Deseja dar direitos de modificação a [NAME]? @@ -711,9 +715,9 @@ Para aumentar a qualidade do vídeo, vá para Preferências > Vídeo. Você não está autorizado a terraplanar o terreno [PARCEL]. - Você não tem autorização para copiar os itens abaixo: -[ITEMS] -ao dá-los, você ficará sem eles no seu inventário. Deseja realmente dar estes itens? + Não existe autorização para copiar os itens abaixo: +<nolink>[ITEMS]</nolink> +e eles sairão do inverntário se sair. Deseja realmente dar estes itens? @@ -3702,13 +3706,13 @@ ele não está na mesma região que você. Você não pode criar árvores e grama em terrenos que não são sua propriedade. - A cópia falhou porque você não está autorizado a copiar o objeto '[OBJ_NAME]'. + Falha na cópia por falta de permissão para copiar o objeto <nolink>'[OBJ_NAME]'</nolink>. - A cópia falhou porque o objeto '[OBJ_NAME]' não pode ser transferido para você. + Falha na cópia, porque o objeto <nolink>'[OBJ_NAME]'</nolink> não pode ser transferido para você. - A cópia falhou porque o objeto '[OBJ_NAME]' contribui para o navmesh. + Falha na cópia, porque o objeto <nolink>'[OBJ_NAME]'</nolink> contribui para o Navmesh. Duplicar sem objetos raiz selecionados. @@ -3753,34 +3757,34 @@ Tente novamente em instantes. Salvar no inventário foi desativado. - Não é possível salvar '[OBJ_NAME]' no conteúdo do objeto porque o objeto do qual ele foi renderizado não existe mais. + Não foi possível salvar <nolink>'[OBJ_NAME]'</nolink> para os conteúdos do objeto, porque o objeto foi utilizado e não existe mais. - Não é possível salvar '[OBJ_NAME]' no conteúdo do objeto porque você não tem permissão para modificar o objeto '[DEST_NAME]'. + Não foi possível salvar <nolink>'[OBJ_NAME]'</nolink> para os conteúdos do objeto, porque você não tem permissão para modificar o objeto <nolink>'[DEST_NAME]'</nolink>. - Não é possível salvar '[OBJ_NAME]' no inventário -- essa operação foi desativada. + Não é possível salvar <nolink>'[OBJ_NAME]'</nolink> no inventário outra vez -- esta operação foi desabilitada. - Você não pode copiar sua seleção porque não está autorizado a copiar o objeto '[OBJ_NAME]'. + Não é possível copiar a seleção porque você não tem permissão para copiar o objeto <nolink>'[OBJ_NAME]'</nolink>. - Você não pode copiar a seleção porque o objeto '[OBJ_NAME]' não é transferível. + Não é possível copiar a seleção porque o objeto <nolink>'[OBJ_NAME]'</nolink> não é transferível. - Você não pode copiar a seleção porque o objeto '[OBJ_NAME]' não é transferível. + Não é possível copiar a seleção porque o objeto <nolink>'[OBJ_NAME]'</nolink> não é transferível. - A remoção do objeto '[OBJ_NAME]' do simulador é proibida pelo sistema de permissões. + A remoção do objeto <nolink>'[OBJ_NAME]'</nolink> do simulador não é permitida pelo sistema de permissão. - Você não pode salvar sua seleção porque não está autorizado a modificar o objeto '[OBJ_NAME]'. + Não é possível salvar a seleção porque você não tem permissão para modificar o objeto <nolink>'[OBJ_NAME]'</nolink>. - Não é possível salvar sua seleção porque o objeto '[OBJ_NAME]' não é copiável. + Não é possível salvar a seleção porque o objeto <nolink>'[OBJ_NAME]'</nolink> não é copiável. - Você não pode levar sua seleção porque não está autorizado a modificar o objeto '[OBJ_NAME]'. + Não é possível realizar a seleção porque você não tem permissão para modificar o objeto <nolink>'[OBJ_NAME]'</nolink>. Erro interno: tipo de destino desconhecido. diff --git a/indra/newview/skins/default/xui/pt/strings.xml b/indra/newview/skins/default/xui/pt/strings.xml index ecf90ef787..4151ef36ac 100644 --- a/indra/newview/skins/default/xui/pt/strings.xml +++ b/indra/newview/skins/default/xui/pt/strings.xml @@ -5615,4 +5615,25 @@ Tente colocar o caminho do editor entre aspas. A forma física não tem a versão correta. Defina a versão correta para o modelo físico. + + O DNS não pode resolver o nome do host([HOSTNAME]). +Verifique se você pode conectar ao site www.secondlife.com . Se você +puder, mas se continuar recebendo esta mensagem de erro, vá à sessão +Suporte no site Secondlife.com e informe o problema. + + + O servidor de acesso não pôde verificá-lo pelo SSL. +Se você continuar recebendo esta mensagem de erro, +vá à sessão Suporte no site Secondlife.com +e informe o problema. + + + Geralmente, esse erro significa que o relógio do seu computador não está com o horário correto. +Vá em Painel de Controles e certifique-se de que a hora e data estejam corretos. +Além disso, verifique se a sua rede e firewall estejam corretos. Se você continuar +recebendo esta mensagem de erro, vá à sessão Suporte no site Secondlife.com +e informe o problema. + +[https://community.secondlife.com/knowledgebase/english/error-messages-r520/#Section__3 Base de conhecimento] + diff --git a/indra/newview/skins/default/xui/ru/notifications.xml b/indra/newview/skins/default/xui/ru/notifications.xml index d752bf254e..d6866b6489 100644 --- a/indra/newview/skins/default/xui/ru/notifications.xml +++ b/indra/newview/skins/default/xui/ru/notifications.xml @@ -244,6 +244,10 @@ Примечание. После включения этой опции все пользователи данного компьютера смогут увидеть список ваших избранных мест. + + Запуск нескольких приложений Second Life Viewer не поддерживается. Это может привести к конфликтам кэша текстур, повреждению и снижению производительности и визуального отображения. + + Предоставление другому жителю прав на изменение позволит ему изменять, удалять или брать ЛЮБЫЕ ваши объекты. Будьте ОЧЕНЬ осторожны с предоставлением такого разрешения. Дать пользователю [NAME] права на изменение? @@ -717,9 +721,9 @@ Вам не разрешено терраформировать участок [PARCEL]. - У вас нет разрешения на копирование следующих предметов: -[ITEMS] -Если вы отдадите эти вещи, их больше не будет в вашем инвентаре. Вы действительно хотите предложить эти предметы? + У вас нет разрешения на копирование следующих предметов: +<nolink>[ITEMS]</nolink> +и они пропадут из вашего инвентаря, если вы их отдадите. Вы действительно хотите предложить эти предметы? @@ -3715,13 +3719,13 @@ Вы не можете создавать деревья и траву на чужой земле. - Не удалось скопировать: вам не разрешено копировать объект «[OBJ_NAME]». + Не удалось скопировать, потому что у вас нет разрешения на копирование этого предмета <nolink>'[OBJ_NAME]'</nolink>. - Не удалось скопировать: объект «[OBJ_NAME]» нельзя перенести к вам. + Не удалось скопировать, потому что предмет <nolink>'[OBJ_NAME]'</nolink> не может быть перемещён к вам. - Не удалось скопировать: объект «[OBJ_NAME]» относится к навигационной сетке. + Не удалось скопировать, потому что предмет <nolink>'[OBJ_NAME]'</nolink> относится к навигационной сетке. Выбран дубликат без корневых объектов. @@ -3766,34 +3770,34 @@ Сохранение в инвентаре отключено. - Нельзя сохранить «[OBJ_NAME]» в содержимом объекта: объект, из которого оно было выложено, уже не существует. + Не удалось сохранить <nolink>'[OBJ_NAME]'</nolink> в содержимом предмета, потому что место, в котором был создан предмет, больше не существует. - Нельзя сохранить «[OBJ_NAME]» в содержимом объекта: вам не разрешено изменять объект «[DEST_NAME]». + Не удалось сохранить <nolink>'[OBJ_NAME]'</nolink> в содержимом предмета, потому что у вас нет разрешения на модификацию предмета <nolink>'[DEST_NAME]'</nolink>. - Невозможно сохранить «[OBJ_NAME]» в инвентаре: эта операция запрещена. + Не удалось сохранить <nolink>'[OBJ_NAME]'</nolink> обратно в инвентаре – эта операция заблокирована. - Нельзя скопировать выбранное: вам не разрешено копировать объект «[OBJ_NAME]». + Вы не можете скопировать выбор, потому что у вас нет разрешения на копирование этого предмета <nolink>'[OBJ_NAME]'</nolink>. - Невозможно скопировать выбранный предмет: объект «[OBJ_NAME]» не переносится. + Вы не можете скопировать свой выбор, потому что предмет <nolink>'[OBJ_NAME]'</nolink> не может быть перемещён. - Невозможно скопировать выбранный предмет: объект «[OBJ_NAME]» не переносится. + Вы не можете скопировать свой выбор, потому что предмет <nolink>'[OBJ_NAME]'</nolink> не может быть перемещён. - Удаление объекта «[OBJ_NAME]» из симулятора запрещено системой разрешений. + Удаление предмета <nolink>'[OBJ_NAME]'</nolink> из симулятора не допущено системой прав доступа. - Нельзя сохранить выбранное: вам не разрешено изменять объект «[OBJ_NAME]». + Копирование выбора невозможно, потому что у вас нет разрешения на модифицирование этого предмета <nolink>'[OBJ_NAME]'</nolink>. - Невозможно сохранить выбранный предмет: объект «[OBJ_NAME]» не копируется. + Вы не можете сохранить свой выбор, потому что предмет <nolink>'[OBJ_NAME]'</nolink> не поддаётся копированию. - Нельзя забрать выбранное: вам не разрешено изменять объект «[OBJ_NAME]». + Вы не можете скопировать свой выбор, потому что у вас нет разрешения на модифицирование этого предмета <nolink>'[OBJ_NAME]'</nolink>. Внутренняя ошибка: неизвестный тип места назначения. diff --git a/indra/newview/skins/default/xui/ru/strings.xml b/indra/newview/skins/default/xui/ru/strings.xml index 267c717189..dcc503f18c 100644 --- a/indra/newview/skins/default/xui/ru/strings.xml +++ b/indra/newview/skins/default/xui/ru/strings.xml @@ -5747,4 +5747,25 @@ support@secondlife.com. У физической формы нет правильной версии. Задайте правильную версию для физической модели. + + DNS не удалось разрешить имя узла([HOSTNAME]). +Проверьте возможность подключения к веб-сайту www.secondlife.com. +Если вы продолжаете получать эту ошибку, перейдите в раздел +поддержки и сообщите о проблеме. + + + Серверу входа в систему не удалось пройти аутентификацию с помощью +протокола SSL. Если вы продолжаете получать эту ошибку, +перейдите в раздел поддержки на веб-сайте SecondLife.com +и сообщите о проблеме. + + + Часто это означает, что часы компьютера установлены неправильно. +Перейдите, пожалуйста, на Панели управления и убедитесь в правильной +установке времени и даты. Также проверьте правильность настройки сети +и брандмауэра. Если вы продолжаете получать эту ошибку, перейдите в +раздел поддержки на веб-сайте SecondLife.com и сообщите о проблеме. + +[https://community.secondlife.com/knowledgebase/english/error-messages-r520/#Section__3 База знаний] + diff --git a/indra/newview/skins/default/xui/tr/notifications.xml b/indra/newview/skins/default/xui/tr/notifications.xml index d72d89f1f5..fce5bbfcab 100644 --- a/indra/newview/skins/default/xui/tr/notifications.xml +++ b/indra/newview/skins/default/xui/tr/notifications.xml @@ -244,6 +244,10 @@ Lütfen sadece bir nesne seçin ve tekrar deneyin. Not: Bu seçeneği etkinleştirdiğinizde, bu bilgisayarı kullanan herkes en sevdiğiniz konumlar listenizi görebilecek. + + Birden çok Second Life görüntüleyiciyi çalıştırma özelliği desteklenmiyor. Bu durum doku önbelleği çakışmalarına, görsellerin bozulmasına ve performansın düşmesine yol açabilir. + + Başka bir Sakine değişiklik yapma hakkı verdiğinizde, SL dünyasında sahip olduğunuz HERHANGİ BİR nesneyi değiştirebilme, silebilme veya alabilmelerine izin vermiş olursunuz. Bu izni verirken ÇOK dikkatli olun. [NAME] adlı kişiye değişiklik yapma hakkı vermek istiyor musunuz? @@ -718,9 +722,9 @@ Grafik Kalitesi, Tercihler > Grafikler sekmesinden yükseltilebilir. [PARCEL] parseli üzerinde yer şekillendirmesi yapma izniniz bulunmuyor. - Aşağıdaki öğeleri kopyalamak için gerekli izne sahip değilsiniz: -[ITEMS] -Bu öğeleri verdiğiniz takdirde envanterinizden çıkacaklar. Bu öğeleri teklif etmeyi gerçekten istiyor musunuz? + Aşağıdaki öğeleri kopyalama izniniz yok: +<nolink>[ITEMS]</nolink> +ve bunları elden çıkardığınız takdirde envanterinizden kaybolacaktır. Bu öğeleri sunmayı gerçekten istiyor musunuz? @@ -3714,13 +3718,13 @@ Girişim iptal edildi. Sahibi olmadığınız arazide ağaçlar ve çimen oluşturamazsınız. - '[OBJ_NAME]' nesnesini kopyalama izniniz olmadığı için kopyalama başarılamadı. + <nolink>'[OBJ_NAME]'</nolink> nesnesini kopyalama izniniz olmadığından kopyalama başarısız oldu. - '[OBJ_NAME]' nesnesi size aktarılamadığı için kopyalama başarılamadı. + <nolink>'[OBJ_NAME]'</nolink> nesnesi size devredilemediğinden kopyalama başarısız oldu. - '[OBJ_NAME]' nesnesi navmesh'e katkıda bulunduğu için kopyalama başarılamadı. + <nolink>'[OBJ_NAME]'</nolink> nesnesi navigasyon örgüsüne katkıda bulunduğundan kopyalama başarısız oldu. Kök nesne seçili olmayan kopya. @@ -3765,34 +3769,34 @@ Lütfen bir dakika sonra tekrar deneyin. Envantere Geri Kaydet devre dışı bırakıldı. - '[OBJ_NAME]' nesne içeriğine kaydedilemedi, çünkü oluşturulurken temel alınan nesne artık mevcut değil. + Yeniden canlandırıldığı nesne artık mevcut olmadığından <nolink>'[OBJ_NAME]'</nolink> nesne içeriklerine kaydedilemiyor. - '[DEST_NAME]' nesnesini değiştirme izniniz olmadığı için '[OBJ_NAME]' nesne içeriğine kaydedilemedi. + <nolink>'[DEST_NAME]'</nolink> nesnesini değiştirme izniniz olmadığından <nolink>'[OBJ_NAME]'</nolink> nesne içeriklerine kaydedilemiyor. - '[OBJ_NAME]' envantere geri kaydedilemez -- bu işlem devre dışı bırakıldı. + <nolink>'[OBJ_NAME]'</nolink> envantere tekrar kaydedilemiyor -- bu işlem devre dışı bırakılmış. - '[OBJ_NAME]' nesnesini kopyalama izniniz olmadığı için seçiminizi kopyalamayazsınız. + <nolink>'[OBJ_NAME]'</nolink> nesnesini kopyalama izniniz olmadığından seçiminizi kopyalayamazsınız. - '[OBJ_NAME]' nesnesi aktarılamaz olduğu için seçiminizi kopyalayamazsınız. + <nolink>'[OBJ_NAME]'</nolink> nesnesi devredilebilir olmadığından seçiminizi kopyalayamazsınız. - '[OBJ_NAME]' nesnesi aktarılamaz olduğu için seçiminizi kopyalayamazsınız. + <nolink>'[OBJ_NAME]'</nolink> nesnesi devredilebilir olmadığından seçiminizi kopyalayamazsınız. - Benzeticiden '[OBJ_NAME]' nesnesinin kaldırılmasına izinler sistemi izin vermiyor. + <nolink>'[OBJ_NAME]'</nolink> nesnesinin simülatörden kaldırılmasına izin sistemi tarafından izin verilmiyor. - '[OBJ_NAME]' nesnesini değiştirme izniniz olmadığı için seçiminizi kaydedemezsiniz. + <nolink>'[OBJ_NAME]'</nolink> nesnesini değiştirme izniniz olmadığından seçiminiz kaydedilemiyor. - '[OBJ_NAME]' nesnesi kopyalanamaz olduğu için seçiminizi kaydedemezsiniz. + <nolink>'[OBJ_NAME]'</nolink> nesnesi kopyalanabilir olmadığından seçiminiz kaydedilemiyor. - '[OBJ_NAME]' nesnesini değiştirme izniniz olmadığı için seçiminizi alamazsınız. + <nolink>'[OBJ_NAME]'</nolink> nesnesini değiştirme izniniz olmadığından seçiminizi alamazsınız. Dahili Hata: Bilinmeyen hedef türü. diff --git a/indra/newview/skins/default/xui/tr/strings.xml b/indra/newview/skins/default/xui/tr/strings.xml index b574420793..ea6f2115e4 100644 --- a/indra/newview/skins/default/xui/tr/strings.xml +++ b/indra/newview/skins/default/xui/tr/strings.xml @@ -5748,4 +5748,25 @@ Düzenleyici yolunu çift tırnakla çevrelemeyi deneyin. Fiziksel şekil doğru sürüme sahip değil. Fiziksel model için doğru sürümü ayarlayın. + + DNS sunucusu ana bilgisayar adını çözümleyemedi ([HOSTNAME]). +Lütfen www.secondlife.com web sitesine bağlanabildiğinizi doğrulayın. +Bağlanabiliyor, ancak bu hatayı almaya devam ediyorsanız, lütfen +destek bölümüne gidin ve bu sorunu bildirin. + + + Oturum açma sunucusu SSL aracılığıyla kendini doğrulayamadı. +Bu hatayı almaya devam ederseniz, lütfen +SecondLife.com web sitesinin Destek +bölümüne gidin ve sorunu bildirin. + + + Çoğunlukla, bu durum, bilgisayarınızın saatinin yanlış ayarlandığı anlamına gelir. +Lütfen Denetim Masası'na gidin ve tarih ve saat ayarlarının doğru yapıldığından emin olun. +Ayrıca, ağınızın ve güvenlik duvarınızın doğru şekilde ayarlanıp ayarlanmadığını kontrol edin. +Bu hatayı almaya devam ederseniz, lütfen SecondLife.com web sitesinin Destek bölümüne +gidin ve sorunu bildirin. + +[https://community.secondlife.com/knowledgebase/english/error-messages-r520/#Section__3 Bilgi Bankası] + diff --git a/indra/newview/skins/default/xui/zh/notifications.xml b/indra/newview/skins/default/xui/zh/notifications.xml index 9fe7b5acae..120ed1e7d2 100644 --- a/indra/newview/skins/default/xui/zh/notifications.xml +++ b/indra/newview/skins/default/xui/zh/notifications.xml @@ -244,6 +244,10 @@ 注意:你一旦同意這選項,任何使用這部電腦的人都可看到你有哪些「最愛」地點。 + + 不支援同時執行多個Second Life瀏覽器。 這麼做可能導致材質快取相互碰撞、毀損,並降低視覺效果及性能。 + + 賦予另一居民「修改」權,將允許他更改、刪除或拿取你在虛擬世界裡擁有的任何物件。 賦予這項權限時,敬請慎重考慮。 你仍要賦予 [NAME] 修改權嗎? @@ -719,7 +723,7 @@ 你沒有權限複製以下項目: -[ITEMS] +<nolink>[ITEMS]</nolink> 如果你將它送人,它將無法續留在收納區。 你確定要送出這些東西嗎? @@ -3714,13 +3718,13 @@ SHA1 指紋:[MD5_DIGEST] 你無法在別人的土地上建立樹和草。 - 複製失敗,你無權複製物件 '[OBJ_NAME]'。 + 複製失敗,你無權複製物件<nolink>'[OBJ_NAME]'</nolink>。 - 複製失敗,因為物件 '[OBJ_NAME]' 無法轉移給你。 + 複製失敗,因為物件<nolink>'[OBJ_NAME]'</nolink>無法轉移給你。 - 複製失敗,因為物件 '[OBJ_NAME]' 對導航網面有貢獻。 + 複製失敗,因為物件<nolink>'[OBJ_NAME]'</nolink>對導航網面有貢獻。 選取了沒有根的重覆物件。 @@ -3765,34 +3769,34 @@ SHA1 指紋:[MD5_DIGEST] 「儲存回收納區」功能已被停用。 - 無法將 '[OBJ_NAME]' 儲存到物件內容,因為產生它的來源物件已不存在。 + 無法將<nolink>'[OBJ_NAME]'</nolink>儲存到物件內容,因為產生它的來源物件已不存在。 - 無法儲存 [OBJ_NAME] 到物件內容,你無權修改 '[DEST_NAME]' 物件。 + 無法儲存<nolink>'[OBJ_NAME]'</nolink>到物件內容,因爲你無權修改<nolink>'[DEST_NAME]'</nolink>物件。 - 無法將 '[OBJ_NAME]' 儲存回收納區,此動作已被停用。 + 無法將<nolink>'[OBJ_NAME]'</nolink>儲存回收納區,此動作已被停用。 - 無法複製你所選的,因為你無權複製物件 '[OBJ_NAME]'。 + 無法複製你所選的,因為你無權複製物件<nolink>'[OBJ_NAME]'</nolink>。 - 無法選取複製,因為物件 '[OBJ_NAME]' 不可轉移。 + 無法選取複製,因為物件<nolink>'[OBJ_NAME]'</nolink>不可轉移。 - 無法選取複製,因為物件 '[OBJ_NAME]' 不可轉移。 + 無法選取複製,因為物件<nolink>'[OBJ_NAME]'</nolink>不可轉移。 - 權限系統不允許從模擬器移除物件 '[OBJ_NAME]'。 + 權限系統不允許從模擬器移除物件<nolink>'[OBJ_NAME]'</nolink>。 - 無法儲存你所選的,因為你無權修改 '[OBJ_NAME]' 物件。 + 無法儲存你所選的,因為你無權修改<nolink>'[OBJ_NAME]'</nolink>物件。 - 無法儲存你所選的,因為物件 '[OBJ_NAME]' 不可複製。 + 無法儲存你所選的,因為物件<nolink>'[OBJ_NAME]'</nolink>不可複製。 - 無法拿取你所選的,因為你無權修改 '[OBJ_NAME]' 物件。 + 無法取用你所選的,因為你無權修改物件<nolink>'[OBJ_NAME]'</nolink>。 內部錯誤:未知的目的地類型。 diff --git a/indra/newview/skins/default/xui/zh/strings.xml b/indra/newview/skins/default/xui/zh/strings.xml index 24d8dc60cb..f8fd727145 100644 --- a/indra/newview/skins/default/xui/zh/strings.xml +++ b/indra/newview/skins/default/xui/zh/strings.xml @@ -5746,4 +5746,25 @@ http://secondlife.com/support 求助解決問題。 物理形狀的版本不正確。 請設成正確的物理模型版本。 + + DNS無法解決主機名稱([HOSTNAME])。 +請確認你能夠連通 www.secondlife.com +網站。 如能連通,但繼續看到這個錯誤, +請到「支援」部分通報問題。 + + + 登入伺服器無法透過SSL自我確認。 +如果你繼續看到這個錯誤,請前往 +SecondLife.com網站的「支援」部分 +提報問題。 + + + 這通常意味你電腦的時鐘設定不正確。 +請到控制台確定時間和日期設定正確。 +並檢查確定你的網路和防火牆設定正確。 +如果你繼續看到這個錯誤,請前往SecondLife.com +網站的「支援」部分提報問題。 + +[https://community.secondlife.com/knowledgebase/english/error-messages-r520/#Section__3 知識庫] + -- cgit v1.2.3 From aa1d4c0dc9e1923d3233256b03c414cf1e9205fb Mon Sep 17 00:00:00 2001 From: eli Date: Thu, 10 Jan 2019 16:53:31 -0800 Subject: FIX INTL-327 German misspellings --- .../newview/skins/default/xui/de/floater_pathfinding_console.xml | 2 +- .../newview/skins/default/xui/de/floater_pathfinding_linksets.xml | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) (limited to 'indra/newview') diff --git a/indra/newview/skins/default/xui/de/floater_pathfinding_console.xml b/indra/newview/skins/default/xui/de/floater_pathfinding_console.xml index 27c6b73967..2422e414e0 100644 --- a/indra/newview/skins/default/xui/de/floater_pathfinding_console.xml +++ b/indra/newview/skins/default/xui/de/floater_pathfinding_console.xml @@ -96,7 +96,7 @@ - + diff --git a/indra/newview/skins/default/xui/de/floater_pathfinding_linksets.xml b/indra/newview/skins/default/xui/de/floater_pathfinding_linksets.xml index a423f3efea..6729e242ac 100644 --- a/indra/newview/skins/default/xui/de/floater_pathfinding_linksets.xml +++ b/indra/newview/skins/default/xui/de/floater_pathfinding_linksets.xml @@ -61,10 +61,10 @@ Begehbar - Statisches Hinternis + Statisches Hindernis - Bewegliches Hinternis + Bewegliches Hindernis Materialvolumen @@ -103,8 +103,8 @@ - - + + -- cgit v1.2.3 From 9c8584a3a7562810c83dd5e2d02e42e6d6870d96 Mon Sep 17 00:00:00 2001 From: maxim_productengine Date: Fri, 11 Jan 2019 17:39:26 +0200 Subject: SL-10327 FIXED Scalable preview of mesh model is shown with black bar on top in the Upload Model menu --- indra/newview/app_settings/settings.xml | 2 +- indra/newview/llfloatermodelpreview.cpp | 19 +++++++++++++++++-- .../skins/default/xui/en/floater_model_preview.xml | 8 +++----- 3 files changed, 21 insertions(+), 8 deletions(-) (limited to 'indra/newview') diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml index 72301e7d14..82087fbe5d 100644 --- a/indra/newview/app_settings/settings.xml +++ b/indra/newview/app_settings/settings.xml @@ -8053,7 +8053,7 @@ PreviewRenderSize Comment - Resolution of the image rendered for the mesh upload preview + Resolution of the image rendered for the mesh upload preview (must be a power of 2) Persist 1 Type diff --git a/indra/newview/llfloatermodelpreview.cpp b/indra/newview/llfloatermodelpreview.cpp index c86eed2192..2cc42460a5 100644 --- a/indra/newview/llfloatermodelpreview.cpp +++ b/indra/newview/llfloatermodelpreview.cpp @@ -427,8 +427,23 @@ void LLFloaterModelPreview::initModelPreview() { delete mModelPreview; } - auto size = gSavedSettings.getS32("PreviewRenderSize"); - mModelPreview = new LLModelPreview(size, size, this ); + + S32 tex_width = 512; + S32 tex_height = 512; + + S32 max_width = llmin(gSavedSettings.getS32("PreviewRenderSize"), (S32)gPipeline.mScreenWidth); + S32 max_height = llmin(gSavedSettings.getS32("PreviewRenderSize"), (S32)gPipeline.mScreenHeight); + + while ((tex_width << 1) <= max_width) + { + tex_width <<= 1; + } + while ((tex_height << 1) <= max_height) + { + tex_height <<= 1; + } + + mModelPreview = new LLModelPreview(tex_width, tex_height, this); mModelPreview->setPreviewTarget(16.f); mModelPreview->setDetailsCallback(boost::bind(&LLFloaterModelPreview::setDetails, this, _1, _2, _3, _4, _5)); mModelPreview->setModelUpdatedCallback(boost::bind(&LLFloaterModelPreview::toggleCalculateButton, this, _1)); diff --git a/indra/newview/skins/default/xui/en/floater_model_preview.xml b/indra/newview/skins/default/xui/en/floater_model_preview.xml index a07fe99aef..274e6e6c7a 100644 --- a/indra/newview/skins/default/xui/en/floater_model_preview.xml +++ b/indra/newview/skins/default/xui/en/floater_model_preview.xml @@ -1490,7 +1490,6 @@ Analysed: name="right_panel" top="0" left="640" - background_visible="true" width="375"> Preview Spread: @@ -1594,8 +1592,8 @@ Analysed: name="physics_explode" follows="right|bottom" valign="center" - top="15" - left="80" + left="105" + top_delta="-3" min_val="0.0" max_val="3.0" height="20" -- cgit v1.2.3 From 127ed9c67809b5ad169fbc971e800c7744363c57 Mon Sep 17 00:00:00 2001 From: maxim_productengine Date: Mon, 14 Jan 2019 13:50:28 +0200 Subject: SL-10352 FIXED 'Search menus' disappears after entering and exiting mouselook view --- indra/newview/app_settings/settings.xml | 11 +++++++++++ indra/newview/llstatusbar.cpp | 4 ++-- 2 files changed, 13 insertions(+), 2 deletions(-) (limited to 'indra/newview') diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml index 82087fbe5d..8f7c4601e8 100644 --- a/indra/newview/app_settings/settings.xml +++ b/indra/newview/app_settings/settings.xml @@ -11530,6 +11530,17 @@ Value 0 + MenuSearch + + Comment + Show/hide 'Search menus' field + Persist + 1 + Type + Boolean + Value + 1 + GroupListShowIcons Comment diff --git a/indra/newview/llstatusbar.cpp b/indra/newview/llstatusbar.cpp index b893e4a058..f3c270a97b 100644 --- a/indra/newview/llstatusbar.cpp +++ b/indra/newview/llstatusbar.cpp @@ -247,11 +247,11 @@ BOOL LLStatusBar::postBuild() mFilterEdit = getChild( "search_menu_edit" ); mSearchPanel = getChild( "menu_search_panel" ); - //mSearchPanel->setVisible(gSavedSettings.getBOOL("MenuSearch")); + mSearchPanel->setVisible(gSavedSettings.getBOOL("MenuSearch")); mFilterEdit->setKeystrokeCallback(boost::bind(&LLStatusBar::onUpdateFilterTerm, this)); mFilterEdit->setCommitCallback(boost::bind(&LLStatusBar::onUpdateFilterTerm, this)); collectSearchableItems(); - //gSavedSettings.getControl("MenuSearch")->getCommitSignal()->connect(boost::bind(&LLStatusBar::updateMenuSearchVisibility, this, _2)); + gSavedSettings.getControl("MenuSearch")->getCommitSignal()->connect(boost::bind(&LLStatusBar::updateMenuSearchVisibility, this, _2)); return TRUE; } -- cgit v1.2.3 From 26fae750ba753f32f58bd56d297f2d98c5759e50 Mon Sep 17 00:00:00 2001 From: andreykproductengine Date: Mon, 14 Jan 2019 22:04:44 +0200 Subject: SL-10291 Replace apr_mutex with standard C++11 functionality --- indra/newview/llappviewer.cpp | 2 +- indra/newview/lldirpicker.cpp | 2 +- indra/newview/llfloaterconversationpreview.cpp | 2 +- indra/newview/llfloatermodelpreview.cpp | 4 ++-- indra/newview/lllogchat.cpp | 6 +++--- indra/newview/llmeshrepository.cpp | 14 +++++++------- indra/newview/lltexturecache.cpp | 8 ++++---- indra/newview/lltexturefetch.cpp | 6 +++--- indra/newview/llviewermenufile.cpp | 2 +- indra/newview/llwatchdog.cpp | 4 ++-- 10 files changed, 25 insertions(+), 25 deletions(-) (limited to 'indra/newview') diff --git a/indra/newview/llappviewer.cpp b/indra/newview/llappviewer.cpp index 7c79cc7ddf..f8fa06b527 100644 --- a/indra/newview/llappviewer.cpp +++ b/indra/newview/llappviewer.cpp @@ -2148,7 +2148,7 @@ bool LLAppViewer::initThreads() if (LLTrace::BlockTimer::sLog || LLTrace::BlockTimer::sMetricLog) { - LLTrace::BlockTimer::setLogLock(new LLMutex(NULL)); + LLTrace::BlockTimer::setLogLock(new LLMutex()); mFastTimerLogThread = new LLFastTimerLogThread(LLTrace::BlockTimer::sLogName); mFastTimerLogThread->start(); } diff --git a/indra/newview/lldirpicker.cpp b/indra/newview/lldirpicker.cpp index 5443afe60c..b8e6e81ee6 100644 --- a/indra/newview/lldirpicker.cpp +++ b/indra/newview/lldirpicker.cpp @@ -315,7 +315,7 @@ void LLDirPickerThread::run() //static void LLDirPickerThread::initClass() { - sMutex = new LLMutex(NULL); + sMutex = new LLMutex(); } //static diff --git a/indra/newview/llfloaterconversationpreview.cpp b/indra/newview/llfloaterconversationpreview.cpp index b48ecc8f31..66198b3bf6 100644 --- a/indra/newview/llfloaterconversationpreview.cpp +++ b/indra/newview/llfloaterconversationpreview.cpp @@ -46,7 +46,7 @@ LLFloaterConversationPreview::LLFloaterConversationPreview(const LLSD& session_i mPageSize(gSavedSettings.getS32("ConversationHistoryPageSize")), mAccountName(session_id[LL_FCP_ACCOUNT_NAME]), mCompleteName(session_id[LL_FCP_COMPLETE_NAME]), - mMutex(NULL), + mMutex(), mShowHistory(false), mMessages(NULL), mHistoryThreadsBusy(false), diff --git a/indra/newview/llfloatermodelpreview.cpp b/indra/newview/llfloatermodelpreview.cpp index 2cc42460a5..616bee84fd 100644 --- a/indra/newview/llfloatermodelpreview.cpp +++ b/indra/newview/llfloatermodelpreview.cpp @@ -266,7 +266,7 @@ mCalculateBtn(NULL) sInstance = this; mLastMouseX = 0; mLastMouseY = 0; - mStatusLock = new LLMutex(NULL); + mStatusLock = new LLMutex(); mModelPreview = NULL; mLODMode[LLModel::LOD_HIGH] = 0; @@ -1265,7 +1265,7 @@ void LLFloaterModelPreview::onMouseCaptureLostModelPreview(LLMouseHandler* handl //----------------------------------------------------------------------------- LLModelPreview::LLModelPreview(S32 width, S32 height, LLFloater* fmp) -: LLViewerDynamicTexture(width, height, 3, ORDER_MIDDLE, FALSE), LLMutex(NULL) +: LLViewerDynamicTexture(width, height, 3, ORDER_MIDDLE, FALSE), LLMutex() , mLodsQuery() , mLodsWithParsingError() , mPelvisZOffset( 0.0f ) diff --git a/indra/newview/lllogchat.cpp b/indra/newview/lllogchat.cpp index c535fc1cdf..c9889667b4 100644 --- a/indra/newview/lllogchat.cpp +++ b/indra/newview/lllogchat.cpp @@ -516,7 +516,7 @@ LLMutex* LLLogChat::historyThreadsMutex() { if (sHistoryThreadsMutex == NULL) { - sHistoryThreadsMutex = new LLMutex(NULL); + sHistoryThreadsMutex = new LLMutex(); } return sHistoryThreadsMutex; } @@ -1012,8 +1012,8 @@ void LLDeleteHistoryThread::run() LLActionThread::LLActionThread(const std::string& name) : LLThread(name), - mMutex(NULL), - mRunCondition(NULL), + mMutex(), + mRunCondition(), mFinished(false) { } diff --git a/indra/newview/llmeshrepository.cpp b/indra/newview/llmeshrepository.cpp index f32dad7f55..a6002bd57f 100644 --- a/indra/newview/llmeshrepository.cpp +++ b/indra/newview/llmeshrepository.cpp @@ -830,9 +830,9 @@ LLMeshRepoThread::LLMeshRepoThread() { LLAppCoreHttp & app_core_http(LLAppViewer::instance()->getAppCoreHttp()); - mMutex = new LLMutex(NULL); - mHeaderMutex = new LLMutex(NULL); - mSignal = new LLCondition(NULL); + mMutex = new LLMutex(); + mHeaderMutex = new LLMutex(); + mSignal = new LLCondition(); mHttpRequest = new LLCore::HttpRequest; mHttpOptions = LLCore::HttpOptions::ptr_t(new LLCore::HttpOptions); mHttpOptions->setTransferTimeout(SMALL_MESH_XFER_TIMEOUT); @@ -2039,7 +2039,7 @@ LLMeshUploadThread::LLMeshUploadThread(LLMeshUploadThread::instance_list& data, mUploadSkin = upload_skin; mUploadJoints = upload_joints; mLockScaleIfJointPosition = lock_scale_if_joint_position; - mMutex = new LLMutex(NULL); + mMutex = new LLMutex(); mPendingUploads = 0; mFinished = false; mOrigin = gAgent.getPositionAgent(); @@ -3446,7 +3446,7 @@ LLMeshRepository::LLMeshRepository() void LLMeshRepository::init() { - mMeshMutex = new LLMutex(NULL); + mMeshMutex = new LLMutex(); LLConvexDecomposition::getInstance()->initSystem(); @@ -4588,8 +4588,8 @@ LLPhysicsDecomp::LLPhysicsDecomp() mQuitting = false; mDone = false; - mSignal = new LLCondition(NULL); - mMutex = new LLMutex(NULL); + mSignal = new LLCondition(); + mMutex = new LLMutex(); } LLPhysicsDecomp::~LLPhysicsDecomp() diff --git a/indra/newview/lltexturecache.cpp b/indra/newview/lltexturecache.cpp index eb4b914e18..e5af47ab6c 100644 --- a/indra/newview/lltexturecache.cpp +++ b/indra/newview/lltexturecache.cpp @@ -825,10 +825,10 @@ void LLTextureCacheWorker::endWork(S32 param, bool aborted) LLTextureCache::LLTextureCache(bool threaded) : LLWorkerThread("TextureCache", threaded), - mWorkersMutex(NULL), - mHeaderMutex(NULL), - mListMutex(NULL), - mFastCacheMutex(NULL), + mWorkersMutex(), + mHeaderMutex(), + mListMutex(), + mFastCacheMutex(), mHeaderAPRFile(NULL), mReadOnly(TRUE), //do not allow to change the texture cache until setReadOnly() is called. mTexturesSizeTotal(0), diff --git a/indra/newview/lltexturefetch.cpp b/indra/newview/lltexturefetch.cpp index 1f69939c46..ca401f5c17 100644 --- a/indra/newview/lltexturefetch.cpp +++ b/indra/newview/lltexturefetch.cpp @@ -925,7 +925,7 @@ LLTextureFetchWorker::LLTextureFetchWorker(LLTextureFetch* fetcher, mCanUseHTTP(true), mRetryAttempt(0), mActiveCount(0), - mWorkMutex(NULL), + mWorkMutex(), mFirstPacket(0), mLastPacket(-1), mTotalPackets(0), @@ -2543,8 +2543,8 @@ LLTextureFetch::LLTextureFetch(LLTextureCache* cache, LLImageDecodeThread* image mDebugPause(FALSE), mPacketCount(0), mBadPacketCount(0), - mQueueMutex(getAPRPool()), - mNetworkQueueMutex(getAPRPool()), + mQueueMutex(), + mNetworkQueueMutex(), mTextureCache(cache), mImageDecodeThread(imagedecodethread), mTextureBandwidth(0), diff --git a/indra/newview/llviewermenufile.cpp b/indra/newview/llviewermenufile.cpp index d2a5578568..a9a91b158b 100644 --- a/indra/newview/llviewermenufile.cpp +++ b/indra/newview/llviewermenufile.cpp @@ -175,7 +175,7 @@ void LLFilePickerThread::run() //static void LLFilePickerThread::initClass() { - sMutex = new LLMutex(NULL); + sMutex = new LLMutex(); } //static diff --git a/indra/newview/llwatchdog.cpp b/indra/newview/llwatchdog.cpp index 2782cd9545..dd6c77ca7d 100644 --- a/indra/newview/llwatchdog.cpp +++ b/indra/newview/llwatchdog.cpp @@ -155,7 +155,7 @@ void LLWatchdogTimeout::ping(const std::string& state) // LLWatchdog LLWatchdog::LLWatchdog() : - mSuspectsAccessMutex(NULL), + mSuspectsAccessMutex(), mTimer(NULL), mLastClockCount(0), mKillerCallback(&default_killer_callback) @@ -185,7 +185,7 @@ void LLWatchdog::init(killer_event_callback func) mKillerCallback = func; if(!mSuspectsAccessMutex && !mTimer) { - mSuspectsAccessMutex = new LLMutex(NULL); + mSuspectsAccessMutex = new LLMutex(); mTimer = new LLWatchdogTimerThread(); mTimer->setSleepTime(WATCHDOG_SLEEP_TIME_USEC / 1000); mLastClockCount = LLTimer::getTotalTime(); -- cgit v1.2.3 From 346fc435f1b12e47b8bf51d15c70ceca4615de41 Mon Sep 17 00:00:00 2001 From: andreykproductengine Date: Thu, 17 Jan 2019 01:53:27 +0200 Subject: SL-10291 cleanup-mutex --- indra/newview/lltexturefetch.h | 1 - 1 file changed, 1 deletion(-) (limited to 'indra/newview') diff --git a/indra/newview/lltexturefetch.h b/indra/newview/lltexturefetch.h index cfa312ccd9..19369137b7 100644 --- a/indra/newview/lltexturefetch.h +++ b/indra/newview/lltexturefetch.h @@ -35,7 +35,6 @@ #include "lluuid.h" #include "llworkerthread.h" #include "lltextureinfo.h" -#include "llapr.h" #include "llimageworker.h" #include "httprequest.h" #include "httpoptions.h" -- cgit v1.2.3 From fa15830e02ed249186625e845e2ac19749d10193 Mon Sep 17 00:00:00 2001 From: andreykproductengine Date: Tue, 15 Jan 2019 18:31:17 +0200 Subject: SL-10291 Replace apr_atomic with standard C++11 functionality --- indra/newview/llappviewer.h | 1 + indra/newview/llmeshrepository.cpp | 3 ++- indra/newview/lltexturecache.h | 2 +- 3 files changed, 4 insertions(+), 2 deletions(-) (limited to 'indra/newview') diff --git a/indra/newview/llappviewer.h b/indra/newview/llappviewer.h index e607b4a994..788fe6a19b 100644 --- a/indra/newview/llappviewer.h +++ b/indra/newview/llappviewer.h @@ -43,6 +43,7 @@ #define LL_LLAPPVIEWER_H #include "llallocator.h" +#include "llapr.h" #include "llcontrol.h" #include "llsys.h" // for LLOSInfo #include "lltimer.h" diff --git a/indra/newview/llmeshrepository.cpp b/indra/newview/llmeshrepository.cpp index a6002bd57f..2e7141bcfc 100644 --- a/indra/newview/llmeshrepository.cpp +++ b/indra/newview/llmeshrepository.cpp @@ -26,10 +26,11 @@ #include "llviewerprecompiledheaders.h" +#include "llapr.h" +#include "apr_portable.h" #include "apr_pools.h" #include "apr_dso.h" #include "llhttpconstants.h" -#include "llapr.h" #include "llmeshrepository.h" #include "llagent.h" diff --git a/indra/newview/lltexturecache.h b/indra/newview/lltexturecache.h index 987b9375c0..81ea7aeee2 100644 --- a/indra/newview/lltexturecache.h +++ b/indra/newview/lltexturecache.h @@ -221,7 +221,7 @@ private: typedef std::map size_map_t; size_map_t mTexturesSizeMap; S64 mTexturesSizeTotal; - LLAtomic32 mDoPurge; + LLAtomicBool mDoPurge; typedef std::map idx_entry_map_t; idx_entry_map_t mUpdatedEntryMap; -- cgit v1.2.3 From 3527e9c0423f8a3c10c9d6e93805540315b285b6 Mon Sep 17 00:00:00 2001 From: maxim_productengine Date: Fri, 18 Jan 2019 16:12:49 +0200 Subject: SL-3488 Remove "Disable Selected" and "Disable All" Buttons --- indra/newview/llfloatertopobjects.cpp | 41 +++------------------- indra/newview/llfloatertopobjects.h | 11 +----- .../skins/default/xui/en/floater_top_objects.xml | 26 +------------- 3 files changed, 6 insertions(+), 72 deletions(-) (limited to 'indra/newview') diff --git a/indra/newview/llfloatertopobjects.cpp b/indra/newview/llfloatertopobjects.cpp index 3e6fc3dc0d..9b5b3a0fc9 100644 --- a/indra/newview/llfloatertopobjects.cpp +++ b/indra/newview/llfloatertopobjects.cpp @@ -78,8 +78,6 @@ LLFloaterTopObjects::LLFloaterTopObjects(const LLSD& key) mCommitCallbackRegistrar.add("TopObjects.ShowBeacon", boost::bind(&LLFloaterTopObjects::onClickShowBeacon, this)); mCommitCallbackRegistrar.add("TopObjects.ReturnSelected", boost::bind(&LLFloaterTopObjects::onReturnSelected, this)); mCommitCallbackRegistrar.add("TopObjects.ReturnAll", boost::bind(&LLFloaterTopObjects::onReturnAll, this)); - mCommitCallbackRegistrar.add("TopObjects.DisableSelected", boost::bind(&LLFloaterTopObjects::onDisableSelected, this)); - mCommitCallbackRegistrar.add("TopObjects.DisableAll", boost::bind(&LLFloaterTopObjects::onDisableAll, this)); mCommitCallbackRegistrar.add("TopObjects.Refresh", boost::bind(&LLFloaterTopObjects::onRefresh, this)); mCommitCallbackRegistrar.add("TopObjects.GetByObjectName", boost::bind(&LLFloaterTopObjects::onGetByObjectName, this)); mCommitCallbackRegistrar.add("TopObjects.GetByOwnerName", boost::bind(&LLFloaterTopObjects::onGetByOwnerName, this)); @@ -332,7 +330,7 @@ void LLFloaterTopObjects::onClickShowBeacon() showBeacon(); } -void LLFloaterTopObjects::doToObjects(int action, bool all) +void LLFloaterTopObjects::returnObjects(bool all) { LLMessageSystem *msg = gMessageSystem; @@ -356,14 +354,7 @@ void LLFloaterTopObjects::doToObjects(int action, bool all) } if (start_message) { - if (action == ACTION_RETURN) - { - msg->newMessageFast(_PREHASH_ParcelReturnObjects); - } - else - { - msg->newMessageFast(_PREHASH_ParcelDisableObjects); - } + msg->newMessageFast(_PREHASH_ParcelReturnObjects); msg->nextBlockFast(_PREHASH_AgentData); msg->addUUIDFast(_PREHASH_AgentID, gAgent.getID()); msg->addUUIDFast(_PREHASH_SessionID,gAgent.getSessionID()); @@ -397,7 +388,7 @@ bool LLFloaterTopObjects::callbackReturnAll(const LLSD& notification, const LLSD if(!instance) return false; if (option == 0) { - instance->doToObjects(ACTION_RETURN, true); + instance->returnObjects(true); } return false; } @@ -410,31 +401,7 @@ void LLFloaterTopObjects::onReturnAll() void LLFloaterTopObjects::onReturnSelected() { - doToObjects(ACTION_RETURN, false); -} - - -//static -bool LLFloaterTopObjects::callbackDisableAll(const LLSD& notification, const LLSD& response) -{ - S32 option = LLNotificationsUtil::getSelectedOption(notification, response); - LLFloaterTopObjects* instance = LLFloaterReg::getTypedInstance("top_objects"); - if(!instance) return false; - if (option == 0) - { - instance->doToObjects(ACTION_DISABLE, true); - } - return false; -} - -void LLFloaterTopObjects::onDisableAll() -{ - LLNotificationsUtil::add("DisableAllTopObjects", LLSD(), LLSD(), callbackDisableAll); -} - -void LLFloaterTopObjects::onDisableSelected() -{ - doToObjects(ACTION_DISABLE, false); + returnObjects(false); } diff --git a/indra/newview/llfloatertopobjects.h b/indra/newview/llfloatertopobjects.h index dbbe9ac521..3138249c7a 100644 --- a/indra/newview/llfloatertopobjects.h +++ b/indra/newview/llfloatertopobjects.h @@ -78,15 +78,12 @@ private: static void onDoubleClickObjectsList(void* data); void onClickShowBeacon(); - void doToObjects(int action, bool all); + void returnObjects(bool all); void onReturnAll(); void onReturnSelected(); - void onDisableAll(); - void onDisableSelected(); static bool callbackReturnAll(const LLSD& notification, const LLSD& response); - static bool callbackDisableAll(const LLSD& notification, const LLSD& response); void onGetByOwnerName(); void onGetByObjectName(); @@ -108,12 +105,6 @@ private: F32 mtotalScore; - enum - { - ACTION_RETURN = 0, - ACTION_DISABLE - }; - static LLFloaterTopObjects* sInstance; }; diff --git a/indra/newview/skins/default/xui/en/floater_top_objects.xml b/indra/newview/skins/default/xui/en/floater_top_objects.xml index 36ceddd305..ceef541290 100644 --- a/indra/newview/skins/default/xui/en/floater_top_objects.xml +++ b/indra/newview/skins/default/xui/en/floater_top_objects.xml @@ -2,7 +2,7 @@ - - -- cgit v1.2.3 From af0e498293c86dc7bb1ae7911bf932b7b287e115 Mon Sep 17 00:00:00 2001 From: maxim_productengine Date: Mon, 21 Jan 2019 17:45:26 +0200 Subject: =?UTF-8?q?SL-10338=20FIXED=20The=20=E2=80=9Cadd=20friend=E2=80=9D?= =?UTF-8?q?=20button=20is=20available=20when=20user=20is=20already=20at=20?= =?UTF-8?q?your=20friends=20list?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- indra/newview/llchatitemscontainerctrl.cpp | 2 ++ indra/newview/llfloaterland.cpp | 2 ++ 2 files changed, 4 insertions(+) (limited to 'indra/newview') diff --git a/indra/newview/llchatitemscontainerctrl.cpp b/indra/newview/llchatitemscontainerctrl.cpp index eddc87efcd..4f42868f1a 100644 --- a/indra/newview/llchatitemscontainerctrl.cpp +++ b/indra/newview/llchatitemscontainerctrl.cpp @@ -29,6 +29,7 @@ #include "llchatitemscontainerctrl.h" #include "lltextbox.h" +#include "llavataractions.h" #include "llavatariconctrl.h" #include "llcommandhandler.h" #include "llfloaterreg.h" @@ -204,6 +205,7 @@ void LLFloaterIMNearbyChatToastPanel::init(LLSD& notification) mMsgText = getChild("msg_text", false); mMsgText->setContentTrusted(false); + mMsgText->setIsFriendCallback(LLAvatarActions::isFriend); mMsgText->setText(std::string("")); diff --git a/indra/newview/llfloaterland.cpp b/indra/newview/llfloaterland.cpp index 88b3fb7b96..a462f391ca 100644 --- a/indra/newview/llfloaterland.cpp +++ b/indra/newview/llfloaterland.cpp @@ -415,6 +415,7 @@ BOOL LLPanelLandGeneral::postBuild() mTextSalePending = getChild("SalePending"); mTextOwnerLabel = getChild("Owner:"); mTextOwner = getChild("OwnerText"); + mTextOwner->setIsFriendCallback(LLAvatarActions::isFriend); mContentRating = getChild("ContentRatingText"); mLandType = getChild("LandTypeText"); @@ -1191,6 +1192,7 @@ BOOL LLPanelLandObjects::postBuild() mIconGroup = LLUIImageList::getInstance()->getUIImage("icon_group.tga", 0); mOwnerList = getChild("owner list"); + mOwnerList->setIsFriendCallback(LLAvatarActions::isFriend); mOwnerList->sortByColumnIndex(3, FALSE); childSetCommitCallback("owner list", onCommitList, this); mOwnerList->setDoubleClickCallback(onDoubleClickOwner, this); -- cgit v1.2.3 From 8a92a771ba547d9d6a8bd1234e2e0b144a8bfcf5 Mon Sep 17 00:00:00 2001 From: andreykproductengine Date: Tue, 15 Jan 2019 22:27:28 +0200 Subject: SL-10291 Replace apr thread with standard C++11 functionality --- indra/newview/llmainlooprepeater.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'indra/newview') diff --git a/indra/newview/llmainlooprepeater.cpp b/indra/newview/llmainlooprepeater.cpp index db8d2e4ede..6736e9a950 100644 --- a/indra/newview/llmainlooprepeater.cpp +++ b/indra/newview/llmainlooprepeater.cpp @@ -46,7 +46,7 @@ void LLMainLoopRepeater::start(void) { if(mQueue != 0) return; - mQueue = new LLThreadSafeQueue(gAPRPoolp, 1024); + mQueue = new LLThreadSafeQueue(1024); mMainLoopConnection = LLEventPumps::instance(). obtain("mainloop").listen(LLEventPump::inventName(), boost::bind(&LLMainLoopRepeater::onMainLoop, this, _1)); mRepeaterConnection = LLEventPumps::instance(). -- cgit v1.2.3 From d785c87d620cb17681ea6d3011461154d96ab9d5 Mon Sep 17 00:00:00 2001 From: andreykproductengine Date: Tue, 29 Jan 2019 21:33:31 +0200 Subject: SL-2364 Fixed Viewer Caches Login Host DNS Entries Indefinetely --- indra/newview/lllogininstance.cpp | 7 ++++++- indra/newview/llxmlrpctransaction.cpp | 4 ++++ 2 files changed, 10 insertions(+), 1 deletion(-) (limited to 'indra/newview') diff --git a/indra/newview/lllogininstance.cpp b/indra/newview/lllogininstance.cpp index bc93fa2c20..bf4fc029ee 100644 --- a/indra/newview/lllogininstance.cpp +++ b/indra/newview/lllogininstance.cpp @@ -63,6 +63,9 @@ #include const S32 LOGIN_MAX_RETRIES = 3; +const F32 LOGIN_SRV_TIMEOUT_MIN = 10; +const F32 LOGIN_SRV_TIMEOUT_MAX = 120; +const F32 LOGIN_DNS_TIMEOUT_FACTOR = 0.9; // make DNS wait shorter then retry time class LLLoginInstance::Disposable { public: @@ -232,8 +235,10 @@ void LLLoginInstance::constructAuthParams(LLPointer user_credentia // Specify desired timeout/retry options LLSD http_params; - http_params["timeout"] = gSavedSettings.getF32("LoginSRVTimeout"); + F32 srv_timeout = llclamp(gSavedSettings.getF32("LoginSRVTimeout"), LOGIN_SRV_TIMEOUT_MIN, LOGIN_SRV_TIMEOUT_MAX); + http_params["timeout"] = srv_timeout; http_params["retries"] = LOGIN_MAX_RETRIES; + http_params["DNSCacheTimeout"] = srv_timeout * LOGIN_DNS_TIMEOUT_FACTOR; //Default: indefinite mRequestData.clear(); mRequestData["method"] = "login_to_simulator"; diff --git a/indra/newview/llxmlrpctransaction.cpp b/indra/newview/llxmlrpctransaction.cpp index cc223c1f48..8e2539606b 100644 --- a/indra/newview/llxmlrpctransaction.cpp +++ b/indra/newview/llxmlrpctransaction.cpp @@ -362,6 +362,10 @@ void LLXMLRPCTransaction::Impl::init(XMLRPC_REQUEST request, bool useGzip, const { httpOpts->setRetries(httpParams["retries"].asInteger()); } + if (httpParams.has("DNSCacheTimeout")) + { + httpOpts->setDNSCacheTimeout(httpParams["DNSCacheTimeout"].asInteger()); + } bool vefifySSLCert = !gSavedSettings.getBOOL("NoVerifySSLCert"); mCertStore = gSavedSettings.getString("CertStore"); -- cgit v1.2.3 From d903f8c1a1509c87af9bf5c173cab685be7dee03 Mon Sep 17 00:00:00 2001 From: andreykproductengine Date: Tue, 5 Feb 2019 16:14:27 +0200 Subject: SL-10470 Fixed freeze due to extensive logging --- indra/newview/llinventorybridge.cpp | 2 +- indra/newview/llinventorymodel.cpp | 16 +++++++++++++--- indra/newview/llinventorypanel.cpp | 3 ++- 3 files changed, 16 insertions(+), 5 deletions(-) (limited to 'indra/newview') diff --git a/indra/newview/llinventorybridge.cpp b/indra/newview/llinventorybridge.cpp index e7367d5ced..00b7732ee9 100644 --- a/indra/newview/llinventorybridge.cpp +++ b/indra/newview/llinventorybridge.cpp @@ -1415,7 +1415,7 @@ LLInvFVBridge* LLInvFVBridge::createBridge(LLAssetType::EType asset_type, break; default: - LL_INFOS() << "Unhandled asset type (llassetstorage.h): " + LL_INFOS_ONCE() << "Unhandled asset type (llassetstorage.h): " << (S32)asset_type << " (" << LLAssetType::lookup(asset_type) << ")" << LL_ENDL; break; } diff --git a/indra/newview/llinventorymodel.cpp b/indra/newview/llinventorymodel.cpp index a520e0171e..b140c7c38e 100644 --- a/indra/newview/llinventorymodel.cpp +++ b/indra/newview/llinventorymodel.cpp @@ -1820,9 +1820,19 @@ void LLInventoryModel::addItem(LLViewerInventoryItem* item) if (LLAssetType::lookup(item->getType()) == LLAssetType::badLookup()) { - LL_WARNS(LOG_INV) << "Got unknown asset type for item [ name: " << item->getName() - << " type: " << item->getType() - << " inv-type: " << item->getInventoryType() << " ]." << LL_ENDL; + if (item->getType() >= LLAssetType::AT_COUNT) + { + // Not yet supported. + LL_DEBUGS(LOG_INV) << "Got unknown asset type for item [ name: " << item->getName() + << " type: " << item->getType() + << " inv-type: " << item->getInventoryType() << " ]." << LL_ENDL; + } + else + { + LL_WARNS(LOG_INV) << "Got unknown asset type for item [ name: " << item->getName() + << " type: " << item->getType() + << " inv-type: " << item->getInventoryType() << " ]." << LL_ENDL; + } } // This condition means that we tried to add a link without the baseobj being in memory. diff --git a/indra/newview/llinventorypanel.cpp b/indra/newview/llinventorypanel.cpp index 3992b506e9..d4993a1091 100644 --- a/indra/newview/llinventorypanel.cpp +++ b/indra/newview/llinventorypanel.cpp @@ -871,7 +871,8 @@ LLFolderViewItem* LLInventoryPanel::buildNewViews(const LLUUID& id) if (objectp->getType() >= LLAssetType::AT_COUNT) { - LL_WARNS() << "LLInventoryPanel::buildNewViews called with unknown objectp->mType : " + // Example: Happens when we add assets of new, not yet supported type to library + LL_DEBUGS() << "LLInventoryPanel::buildNewViews called with unknown objectp->mType : " << ((S32) objectp->getType()) << " name " << objectp->getName() << " UUID " << objectp->getUUID() << LL_ENDL; -- cgit v1.2.3 From c0abc508f9bdedf05748186472ea433cd8ddd9c6 Mon Sep 17 00:00:00 2001 From: andreykproductengine Date: Tue, 5 Feb 2019 17:30:24 +0200 Subject: SL-10466 Viewer throwing misleading notification --- indra/newview/llviewermessage.cpp | 29 ++++++---------------- .../newview/skins/default/xui/en/notifications.xml | 22 ---------------- 2 files changed, 7 insertions(+), 44 deletions(-) (limited to 'indra/newview') diff --git a/indra/newview/llviewermessage.cpp b/indra/newview/llviewermessage.cpp index 981d226824..e50c8ee9f0 100644 --- a/indra/newview/llviewermessage.cpp +++ b/indra/newview/llviewermessage.cpp @@ -5531,17 +5531,6 @@ void notify_cautioned_script_question(const LLSD& notification, const LLSD& resp void script_question_mute(const LLUUID& item_id, const std::string& object_name); -bool unknown_script_question_cb(const LLSD& notification, const LLSD& response) -{ - // Only care if they muted the object here. - if ( response["Mute"] ) // mute - { - LLUUID task_id = notification["payload"]["task_id"].asUUID(); - script_question_mute(task_id,notification["payload"]["object_name"].asString()); - } - return false; -} - void experiencePermissionBlock(LLUUID experience, LLSD result) { LLSD permission; @@ -5647,8 +5636,7 @@ void script_question_mute(const LLUUID& task_id, const std::string& object_name) bool matches(const LLNotificationPtr notification) const { if (notification->getName() == "ScriptQuestionCaution" - || notification->getName() == "ScriptQuestion" - || notification->getName() == "UnknownScriptQuestion") + || notification->getName() == "ScriptQuestion") { return (notification->getPayload()["task_id"].asUUID() == blocked_id); } @@ -5665,7 +5653,6 @@ void script_question_mute(const LLUUID& task_id, const std::string& object_name) static LLNotificationFunctorRegistration script_question_cb_reg_1("ScriptQuestion", script_question_cb); static LLNotificationFunctorRegistration script_question_cb_reg_2("ScriptQuestionCaution", script_question_cb); static LLNotificationFunctorRegistration script_question_cb_reg_3("ScriptQuestionExperience", script_question_cb); -static LLNotificationFunctorRegistration unknown_script_question_cb_reg("UnknownScriptQuestion", unknown_script_question_cb); void process_script_experience_details(const LLSD& experience_details, LLSD args, LLSD payload) { @@ -5778,14 +5765,12 @@ void process_script_question(LLMessageSystem *msg, void **user_data) args["QUESTIONS"] = script_question; if (known_questions != questions) - { // This is in addition to the normal dialog. - LLSD payload; - payload["task_id"] = taskid; - payload["item_id"] = itemid; - payload["object_name"] = object_name; - - args["DOWNLOADURL"] = LLTrans::getString("ViewerDownloadURL"); - LLNotificationsUtil::add("UnknownScriptQuestion",args,payload); + { + // This is in addition to the normal dialog. + // Viewer got a request for not supported/implemented permission + LL_WARNS("Messaging") << "Object \"" << object_name << "\" requested " << script_question + << " permission. Permission is unknown and can't be granted. Item id: " << itemid + << " taskid:" << taskid << LL_ENDL; } if (known_questions) diff --git a/indra/newview/skins/default/xui/en/notifications.xml b/indra/newview/skins/default/xui/en/notifications.xml index 23a8d21f8a..efc5a30b63 100644 --- a/indra/newview/skins/default/xui/en/notifications.xml +++ b/indra/newview/skins/default/xui/en/notifications.xml @@ -7766,28 +7766,6 @@ Do not allow access if you do not fully understand why it wants access to your a - -The runtime script permission requested by '<nolink>[OBJECTNAME]</nolink>', an object owned by '[NAME]', isn't recognized by the viewer and can't be granted. - -To grant this permission please update your viewer to the latest version from [DOWNLOADURL]. - confirm -
-