From 0c70d3c616320ae6e3f22935b0fd997133b0e0ec Mon Sep 17 00:00:00 2001 From: Rye Mutt Date: Tue, 30 Jul 2024 10:53:38 -0400 Subject: [PATCH 01/12] Cache LLVOAvatar::isBuddy check to reduce repeated calls to LLAvatarTracker::isBuddy during draw (#2149) --- indra/newview/llvoavatar.cpp | 26 ++++++++++++++++++++------ indra/newview/llvoavatar.h | 2 ++ 2 files changed, 22 insertions(+), 6 deletions(-) diff --git a/indra/newview/llvoavatar.cpp b/indra/newview/llvoavatar.cpp index 6e6ad485cf..0fd8f8a98b 100644 --- a/indra/newview/llvoavatar.cpp +++ b/indra/newview/llvoavatar.cpp @@ -3395,7 +3395,7 @@ void LLVOAvatar::idleUpdateNameTagText(bool new_name) { is_muted = isInMuteList(); } - bool is_friend = LLAvatarTracker::instance().isBuddy(getID()); + bool is_friend = isBuddy(); bool is_cloud = getIsCloud(); if (is_appearance != mNameAppearance) @@ -8452,7 +8452,7 @@ bool LLVOAvatar::isTooComplex() const { bool too_complex; static LLCachedControl compelxity_render_mode(gSavedSettings, "RenderAvatarComplexityMode"); - bool render_friend = (LLAvatarTracker::instance().isBuddy(getID()) && compelxity_render_mode > AV_RENDER_LIMIT_BY_COMPLEXITY); + bool render_friend = (isBuddy() && compelxity_render_mode > AV_RENDER_LIMIT_BY_COMPLEXITY); if (isSelf() || render_friend || mVisuallyMuteSetting == AV_ALWAYS_RENDER) { @@ -8488,7 +8488,7 @@ bool LLVOAvatar::isTooSlow() const static LLCachedControl compelxity_render_mode(gSavedSettings, "RenderAvatarComplexityMode"); static LLCachedControl friends_only(gSavedSettings, "RenderAvatarFriendsOnly", false); - bool is_friend = LLAvatarTracker::instance().isBuddy(getID()); + bool is_friend = isBuddy(); bool render_friend = is_friend && compelxity_render_mode > AV_RENDER_LIMIT_BY_COMPLEXITY; if (render_friend || mVisuallyMuteSetting == AV_ALWAYS_RENDER) @@ -8545,7 +8545,7 @@ void LLVOAvatar::updateTooSlow() if(!mTooSlowWithoutShadows) // if we were not previously above the full impostor cap { bool always_render_friends = compelxity_render_mode > AV_RENDER_LIMIT_BY_COMPLEXITY; - bool render_friend_or_exception = (always_render_friends && LLAvatarTracker::instance().isBuddy( id ) ) || + bool render_friend_or_exception = (always_render_friends && isBuddy()) || ( getVisualMuteSettings() == LLVOAvatar::AV_ALWAYS_RENDER ); if( (!isSelf() || allowSelfImpostor) && !render_friend_or_exception) { @@ -11489,7 +11489,7 @@ void LLVOAvatar::calcMutedAVColor() new_color = LLColor4::grey4; change_msg = " not rendered: color is grey4"; } - else if (LLMuteList::getInstance()->isMuted(av_id)) // the user blocked them + else if (isInMuteList()) // the user blocked them { // blocked avatars are dark grey new_color = LLColor4::grey4; @@ -11738,6 +11738,20 @@ F32 LLVOAvatar::getAverageGPURenderTime() bool LLVOAvatar::isBuddy() const { - return LLAvatarTracker::instance().isBuddy(getID()); + bool is_friend = false; + F64 now = LLFrameTimer::getTotalSeconds(); + if (now < mCachedBuddyListUpdateTime) + { + is_friend = mCachedInBuddyList; + } + else + { + is_friend = LLAvatarTracker::instance().isBuddy(getID()); + + const F64 SECONDS_BETWEEN_BUDDY_UPDATES = 1; + mCachedBuddyListUpdateTime = now + SECONDS_BETWEEN_BUDDY_UPDATES; + mCachedInBuddyList = is_friend; + } + return is_friend; } diff --git a/indra/newview/llvoavatar.h b/indra/newview/llvoavatar.h index 1ca8b81553..2144be1ba5 100644 --- a/indra/newview/llvoavatar.h +++ b/indra/newview/llvoavatar.h @@ -587,6 +587,8 @@ private: mutable bool mCachedInMuteList; mutable F64 mCachedMuteListUpdateTime; + mutable bool mCachedInBuddyList = false; + mutable F64 mCachedBuddyListUpdateTime = 0.0; VisualMuteSettings mVisuallyMuteSetting; // Always or never visually mute this AV From dfa7d60a72fbf2705d0240dd73ca78ddda5db56d Mon Sep 17 00:00:00 2001 From: Signal Linden Date: Tue, 30 Jul 2024 10:09:49 -0700 Subject: [PATCH 02/12] build.yaml: Fix FROM_FORK value, ReleaseOS PR builds (#2147) --- .github/workflows/build.yaml | 1 + build.sh | 19 ++++++++++++++----- 2 files changed, 15 insertions(+), 5 deletions(-) diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml index b385e3ba12..fd3b1e0e0a 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -22,6 +22,7 @@ jobs: # important to ensure it's the empty string when false. If you omit || '', # its value when false is "false", which is interpreted as true. RELEASE_RUN: ${{ (github.event.inputs.release_run || github.ref_type == 'tag' && startsWith(github.ref_name, 'Second_Life')) && 'Y' || '' }} + FROM_FORK: ${{ github.event.pull_request.head.repo.organization != 'secondlife' }} steps: - name: Set Variables id: setvar diff --git a/build.sh b/build.sh index 74148f455c..2316f5e558 100755 --- a/build.sh +++ b/build.sh @@ -146,12 +146,21 @@ pre_build() && [ -r "$master_message_template_checkout/message_template.msg" ] \ && template_verifier_master_url="-DTEMPLATE_VERIFIER_MASTER_URL=file://$master_message_template_checkout/message_template.msg" - RELEASE_CRASH_REPORTING=ON - HAVOK=ON + RELEASE_CRASH_REPORTING=OFF + HAVOK=OFF SIGNING=() - if [[ "$arch" == "Darwin" && "$variant" == "Release" ]] - then SIGNING=("-DENABLE_SIGNING:BOOL=YES" \ - "-DSIGNING_IDENTITY:STRING=Developer ID Application: Linden Research, Inc.") + if [[ "$variant" != *OS ]] + then + # Proprietary builds + + RELEASE_CRASH_REPORTING=ON + HAVOK=ON + + if [[ "$arch" == "Darwin" ]] + then + SIGNING=("-DENABLE_SIGNING:BOOL=YES" \ + "-DSIGNING_IDENTITY:STRING=Developer ID Application: Linden Research, Inc.") + fi fi if [ "${RELEASE_CRASH_REPORTING:-}" != "OFF" ] From c3b678276dadb7aded8e8aeb3742524766f5ad8a Mon Sep 17 00:00:00 2001 From: Andrey Kleshchev Date: Tue, 30 Jul 2024 18:57:46 +0300 Subject: [PATCH 03/12] viewer#2144 Correct unclear terminilogy in region's debug panel --- indra/newview/skins/default/xui/en/panel_region_debug.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/indra/newview/skins/default/xui/en/panel_region_debug.xml b/indra/newview/skins/default/xui/en/panel_region_debug.xml index 04a510d4e8..be8468a15c 100644 --- a/indra/newview/skins/default/xui/en/panel_region_debug.xml +++ b/indra/newview/skins/default/xui/en/panel_region_debug.xml @@ -140,7 +140,7 @@ layout="topleft" left_delta="0" name="return_other_land" - tool_tip="Return only objects which are on land belonging to someone else" + tool_tip="Return only objects which are on land that isn't owned by selected user" top_delta="20" width="80" /> Date: Wed, 31 Jul 2024 17:26:27 +0300 Subject: [PATCH 04/12] viewer#2153 Crash at LLViewerTextureList::updateImageDecodePriority Crash at getTextureEntry which calls getTE(mTEOffset) --- indra/newview/llviewertexturelist.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/indra/newview/llviewertexturelist.cpp b/indra/newview/llviewertexturelist.cpp index d31c53d000..115934282f 100644 --- a/indra/newview/llviewertexturelist.cpp +++ b/indra/newview/llviewertexturelist.cpp @@ -948,7 +948,9 @@ void LLViewerTextureList::updateImageDecodePriority(LLViewerFetchedTexture* imag // shows one letter at a time // // Maximum usage examples: huge chunk of terrain repeats texture - const LLTextureEntry* te = face->getTextureEntry(); + S32 te_offset = face->getTEOffset(); // offset is -1 if not inited + LLViewerObject* objp = face->getViewerObject(); + const LLTextureEntry* te = (te_offset < 0 || te_offset >= objp->getNumTEs()) ? nullptr : objp->getTE(te_offset); F32 min_scale = te ? llmin(fabsf(te->getScaleS()), fabsf(te->getScaleT())) : 1.f; min_scale = llclamp(min_scale * min_scale, texture_scale_min(), texture_scale_max()); vsize /= min_scale; From 06ce9ac80217623beae8498bb93bd73def7008aa Mon Sep 17 00:00:00 2001 From: Andrey Kleshchev Date: Wed, 31 Jul 2024 20:14:24 +0300 Subject: [PATCH 05/12] viewer#2157 Toolbar's drop position indicator does not appear --- indra/llui/lltoolbar.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/indra/llui/lltoolbar.cpp b/indra/llui/lltoolbar.cpp index aa48ae048f..5955a28fa3 100644 --- a/indra/llui/lltoolbar.cpp +++ b/indra/llui/lltoolbar.cpp @@ -1073,7 +1073,7 @@ bool LLToolBar::handleDragAndDrop(S32 x, S32 y, MASK mask, bool drop, int orig_rank = getRankFromPosition(dragged_command); mDragRank = getRankFromPosition(x, y); // Don't DaD if we're dragging a command on itself - mDragAndDropTarget = ((orig_rank != RANK_NONE) && ((mDragRank == orig_rank) || ((mDragRank - 1) == orig_rank))); + mDragAndDropTarget = (orig_rank == RANK_NONE) || ((mDragRank != orig_rank) && ((mDragRank - 1) != orig_rank)); //LL_INFOS() << "Merov debug : DaD, rank = " << mDragRank << ", dragged uui = " << inv_item->getUUID() << LL_ENDL; /* Do the following if you want to animate the button itself LLCommandId dragged_command(inv_item->getUUID()); From 8f6e623a5fa7df3195da5ecd0ee32867185120c8 Mon Sep 17 00:00:00 2001 From: Andrey Kleshchev Date: Thu, 1 Aug 2024 12:40:10 +0300 Subject: [PATCH 06/12] viewer#2163 Crash at getReflectionProbeIsDynamic --- indra/newview/llreflectionmap.cpp | 4 ++-- indra/newview/llviewerobject.h | 4 ++++ indra/newview/llvovolume.h | 8 ++++---- 3 files changed, 10 insertions(+), 6 deletions(-) diff --git a/indra/newview/llreflectionmap.cpp b/indra/newview/llreflectionmap.cpp index 31fd6f3f07..8d164b6883 100644 --- a/indra/newview/llreflectionmap.cpp +++ b/indra/newview/llreflectionmap.cpp @@ -220,7 +220,7 @@ F32 LLReflectionMap::getNearClip() if (mViewerObject && mViewerObject->getVolume()) { - ret = ((LLVOVolume*)mViewerObject)->getReflectionProbeNearClip(); + ret = mViewerObject->getReflectionProbeNearClip(); } else if (mGroup) { @@ -240,7 +240,7 @@ bool LLReflectionMap::getIsDynamic() mViewerObject && mViewerObject->getVolume()) { - return ((LLVOVolume*)mViewerObject)->getReflectionProbeIsDynamic(); + return mViewerObject->getReflectionProbeIsDynamic(); } return false; diff --git a/indra/newview/llviewerobject.h b/indra/newview/llviewerobject.h index 09584d22a8..b6846c6716 100644 --- a/indra/newview/llviewerobject.h +++ b/indra/newview/llviewerobject.h @@ -266,7 +266,11 @@ public: virtual bool isRiggedMesh() const { return false; } virtual bool hasLightTexture() const { return false; } virtual bool isReflectionProbe() const { return false; } + virtual F32 getReflectionProbeAmbiance() const { return 0.f; } + virtual F32 getReflectionProbeNearClip() const { return 0.f; } virtual bool getReflectionProbeIsBox() const { return false; } + virtual bool getReflectionProbeIsDynamic() const { return false; }; + virtual bool getReflectionProbeIsMirror() const { return false; }; // This method returns true if the object is over land owned by // the agent, one of its groups, or it encroaches and diff --git a/indra/newview/llvovolume.h b/indra/newview/llvovolume.h index 07e02e042c..6241bf42d6 100644 --- a/indra/newview/llvovolume.h +++ b/indra/newview/llvovolume.h @@ -304,11 +304,11 @@ public: bool setReflectionProbeIsMirror(bool is_mirror); bool isReflectionProbe() const override; - F32 getReflectionProbeAmbiance() const; - F32 getReflectionProbeNearClip() const; + F32 getReflectionProbeAmbiance() const override; + F32 getReflectionProbeNearClip() const override; bool getReflectionProbeIsBox() const override; - bool getReflectionProbeIsDynamic() const; - bool getReflectionProbeIsMirror() const; + bool getReflectionProbeIsDynamic() const override; + bool getReflectionProbeIsMirror() const override; // Flexible Objects U32 getVolumeInterfaceID() const; From 86668633c30c711b44dd5a16f98b9ac056f706b5 Mon Sep 17 00:00:00 2001 From: Rye Mutt Date: Sun, 21 Jul 2024 19:18:13 -0400 Subject: [PATCH 07/12] Fix failure to join or detach threads causing rare shutdown termination --- indra/llcommon/llthread.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/indra/llcommon/llthread.cpp b/indra/llcommon/llthread.cpp index 9eb92ca6a1..e5d25b52f0 100644 --- a/indra/llcommon/llthread.cpp +++ b/indra/llcommon/llthread.cpp @@ -269,6 +269,7 @@ void LLThread::shutdown() mStatus = STOPPED; return; } + delete mThreadp; mThreadp = NULL; } @@ -299,6 +300,7 @@ void LLThread::start() { mThreadp = new std::thread(std::bind(&LLThread::threadRun, this)); mNativeHandle = mThreadp->native_handle(); + mThreadp->detach(); } catch (std::system_error& ex) { From 0723308c9c041533953b45fe62686e9f483ce360 Mon Sep 17 00:00:00 2001 From: Rye Mutt Date: Wed, 31 Jul 2024 23:54:45 -0400 Subject: [PATCH 08/12] Fix emojipicker floater group buttons leaking and xui warning --- indra/newview/llfloateremojipicker.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/indra/newview/llfloateremojipicker.cpp b/indra/newview/llfloateremojipicker.cpp index 30f58aaeec..0830860633 100644 --- a/indra/newview/llfloateremojipicker.cpp +++ b/indra/newview/llfloateremojipicker.cpp @@ -429,6 +429,7 @@ void LLFloaterEmojiPicker::fillGroups() for (LLButton* button : mGroupButtons) { mGroups->removeChild(button); + button->die(); } mFilteredEmojiGroups.clear(); mFilteredEmojis.clear(); @@ -442,6 +443,7 @@ void LLFloaterEmojiPicker::fillGroups() rect.mBottom = mBadge->getRect().getHeight(); // Create button for "All categories" + params.name = "all_categories"; createGroupButton(params, rect, ALL_EMOJIS_IMAGE_INDEX); // Create group and button for "Recently used" and/or "Frequently used" @@ -455,6 +457,7 @@ void LLFloaterEmojiPicker::fillGroups() { mFilteredEmojiGroups.push_back(USED_EMOJIS_GROUP_INDEX); mFilteredEmojis.emplace_back(cats); + params.name = "used_categories"; createGroupButton(params, rect, USED_EMOJIS_IMAGE_INDEX); } } @@ -472,6 +475,7 @@ void LLFloaterEmojiPicker::fillGroups() { mFilteredEmojiGroups.push_back(i); mFilteredEmojis.emplace_back(cats); + params.name = "group_" + std::to_string(i); createGroupButton(params, rect, groups[i].Character); } } From 4217a778d68722735975f360c9be25655cf0e696 Mon Sep 17 00:00:00 2001 From: Rye Mutt Date: Thu, 1 Aug 2024 00:38:58 -0400 Subject: [PATCH 09/12] Fix excessive wstring conversions during emojipicker draw --- indra/newview/llfloateremojipicker.cpp | 28 +++++++++++++------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/indra/newview/llfloateremojipicker.cpp b/indra/newview/llfloateremojipicker.cpp index 0830860633..50f71c9c0b 100644 --- a/indra/newview/llfloateremojipicker.cpp +++ b/indra/newview/llfloateremojipicker.cpp @@ -186,7 +186,7 @@ public: { mWStr = LLWString(1, emoji); mEmoji = emoji; - mTitle = title; + mTitle = utf8str_to_wstring(title); mBegin = begin; mEnd = end; } @@ -204,9 +204,9 @@ public: drawIcon(centerX, centerY - 1, iconWidth); static LLColor4 defaultColor(0.75f, 0.75f, 0.75f, 1.0f); - LLColor4 textColor = LLUIColorTable::instance().getColor("MenuItemEnabledColor", defaultColor); + static LLUIColor textColor = LLUIColorTable::instance().getColor("MenuItemEnabledColor", defaultColor); S32 max_pixels = clientWidth - iconWidth; - drawName((F32)iconWidth, centerY, max_pixels, textColor); + drawName((F32)iconWidth, centerY, max_pixels, textColor.get()); } protected: @@ -226,16 +226,16 @@ protected: max_pixels); // max_pixels } - void drawName(F32 x, F32 y, S32 max_pixels, LLColor4& color) + void drawName(F32 x, F32 y, S32 max_pixels, const LLColor4& color) { F32 x0 = x; F32 x1 = (F32)max_pixels; LLFontGL* font = LLFontGL::getFontEmojiLarge(); if (mBegin) { - std::string text = mTitle.substr(0, mBegin); - font->renderUTF8( - text, // text + LLWString text = mTitle.substr(0, mBegin); + font->render( + text.c_str(), // text 0, // begin_offset x0, // x y, // y @@ -246,14 +246,14 @@ protected: LLFontGL::DROP_SHADOW_SOFT, // shadow static_cast(text.size()), // max_chars (S32)x1); // max_pixels - F32 dx = font->getWidthF32(text); + F32 dx = font->getWidthF32(text.c_str()); x0 += dx; x1 -= dx; } if (x1 > 0 && mEnd > mBegin) { - std::string text = mTitle.substr(mBegin, mEnd - mBegin); - font->renderUTF8( + LLWString text = mTitle.substr(mBegin, mEnd - mBegin); + font->render( text, // text 0, // begin_offset x0, // x @@ -265,14 +265,14 @@ protected: LLFontGL::DROP_SHADOW_SOFT, // shadow static_cast(text.size()), // max_chars (S32)x1); // max_pixels - F32 dx = font->getWidthF32(text); + F32 dx = font->getWidthF32(text.c_str()); x0 += dx; x1 -= dx; } if (x1 > 0 && mEnd < mTitle.size()) { - std::string text = mEnd ? mTitle.substr(mEnd) : mTitle; - font->renderUTF8( + LLWString text = mEnd ? mTitle.substr(mEnd) : mTitle; + font->render( text, // text 0, // begin_offset x0, // x @@ -290,7 +290,7 @@ protected: private: llwchar mEmoji; LLWString mWStr; - std::string mTitle; + LLWString mTitle; size_t mBegin; size_t mEnd; }; From 212b1edd2d4d8ce570331ec6e8e4f87e4f162e34 Mon Sep 17 00:00:00 2001 From: Rye Mutt Date: Thu, 1 Aug 2024 15:50:23 -0400 Subject: [PATCH 10/12] Fix trying to bind to non-existent texunit sampler during water draw (#2128) --- indra/newview/lldrawpoolwater.cpp | 5 ----- 1 file changed, 5 deletions(-) diff --git a/indra/newview/lldrawpoolwater.cpp b/indra/newview/lldrawpoolwater.cpp index 0d4eaab488..53d6e528b6 100644 --- a/indra/newview/lldrawpoolwater.cpp +++ b/indra/newview/lldrawpoolwater.cpp @@ -241,8 +241,6 @@ void LLDrawPoolWater::renderPostDeferred(S32 pass) F32 screenRes[] = { 1.f / gGLViewport[2], 1.f / gGLViewport[3] }; - S32 diffTex = shader->enableTexture(LLShaderMgr::DIFFUSE_MAP); - shader->uniform2fv(LLShaderMgr::DEFERRED_SCREEN_RES, 1, screenRes); shader->uniform1f(LLShaderMgr::BLEND_FACTOR, blend_factor); @@ -316,8 +314,6 @@ void LLDrawPoolWater::renderPostDeferred(S32 pass) water = static_cast(face->getViewerObject()); if (!water) continue; - gGL.getTexUnit(diffTex)->bind(face->getTexture()); - if ((bool)edge == (bool)water->getIsEdgePatch()) { face->renderIndexed(); @@ -334,7 +330,6 @@ void LLDrawPoolWater::renderPostDeferred(S32 pass) shader->disableTexture(LLShaderMgr::ENVIRONMENT_MAP, LLTexUnit::TT_CUBE_MAP); shader->disableTexture(LLShaderMgr::WATER_SCREENTEX); shader->disableTexture(LLShaderMgr::BUMP_MAP); - shader->disableTexture(LLShaderMgr::DIFFUSE_MAP); shader->disableTexture(LLShaderMgr::WATER_REFTEX); // clean up From 793f5ac3411882a53a49916f031090d1b6c72335 Mon Sep 17 00:00:00 2001 From: Andrey Kleshchev Date: Thu, 1 Aug 2024 19:55:16 +0300 Subject: [PATCH 11/12] Crash at LLViewerTexture::updateClass() --- indra/newview/llviewertexture.cpp | 4 ++-- indra/newview/llviewertexturelist.cpp | 4 ++-- indra/newview/llviewertexturelist.h | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/indra/newview/llviewertexture.cpp b/indra/newview/llviewertexture.cpp index 9648a9af18..8faa86876f 100644 --- a/indra/newview/llviewertexture.cpp +++ b/indra/newview/llviewertexture.cpp @@ -539,9 +539,9 @@ void LLViewerTexture::updateClass() LL_WARNS() << "Low system memory detected, emergency downrezzing off screen textures" << LL_ENDL; sDesiredDiscardBias = llmax(sDesiredDiscardBias, 1.5f); - for (auto image : gTextureList) + for (auto& image : gTextureList) { - gTextureList.updateImageDecodePriority(image); + gTextureList.updateImageDecodePriority(image, false /*will modify gTextureList otherwise!*/); } } diff --git a/indra/newview/llviewertexturelist.cpp b/indra/newview/llviewertexturelist.cpp index 115934282f..865805f9bf 100644 --- a/indra/newview/llviewertexturelist.cpp +++ b/indra/newview/llviewertexturelist.cpp @@ -904,7 +904,7 @@ void LLViewerTextureList::clearFetchingRequests() extern bool gCubeSnapshot; -void LLViewerTextureList::updateImageDecodePriority(LLViewerFetchedTexture* imagep) +void LLViewerTextureList::updateImageDecodePriority(LLViewerFetchedTexture* imagep, bool flush_images) { if (imagep->isInDebug() || imagep->isUnremovable()) { @@ -993,7 +993,7 @@ void LLViewerTextureList::updateImageDecodePriority(LLViewerFetchedTexture* imag // Flush formatted images using a lazy flush // S32 num_refs = imagep->getNumRefs(); - if (num_refs == min_refs) + if (num_refs == min_refs && flush_images) { if (imagep->getLastReferencedTimer()->getElapsedTimeF32() > lazy_flush_timeout) { diff --git a/indra/newview/llviewertexturelist.h b/indra/newview/llviewertexturelist.h index 075f6ae915..b614753b4f 100644 --- a/indra/newview/llviewertexturelist.h +++ b/indra/newview/llviewertexturelist.h @@ -148,7 +148,7 @@ public: // - updates decode priority // - updates desired discard level // - cleans up textures that haven't been referenced in awhile - void updateImageDecodePriority(LLViewerFetchedTexture* imagep); + void updateImageDecodePriority(LLViewerFetchedTexture* imagep, bool flush_images = true); private: F32 updateImagesCreateTextures(F32 max_time); From daa240164d8a639abf5a2a227b5e3a7723bacb5b Mon Sep 17 00:00:00 2001 From: Andrey Kleshchev Date: Thu, 1 Aug 2024 18:16:50 +0300 Subject: [PATCH 12/12] Post pull request contribution doc update (#2077) --- doc/contributions.txt | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/doc/contributions.txt b/doc/contributions.txt index 5a4d276a20..54817ca52d 100755 --- a/doc/contributions.txt +++ b/doc/contributions.txt @@ -1436,6 +1436,30 @@ Sovereign Engineer SL-18534 SL-19690 SL-19336 + secondlife/viewer/pull/1283 + secondlife/viewer/pull/1287 + secondlife/viewer/pull/1906 + secondlife/viewer/pull/1930 + secondlife/viewer/pull/1941 + secondlife/viewer/pull/1946 + secondlife/viewer/pull/1948 + secondlife/viewer/pull/1950 + secondlife/viewer/pull/1951 + secondlife/viewer/pull/2066 + secondlife/viewer/pull/2077 + secondlife/viewer/pull/2078 + secondlife/viewer/pull/2080 + secondlife/viewer/pull/2085 + secondlife/viewer/pull/2098 + secondlife/viewer/pull/2099 + secondlife/viewer/pull/2105 + secondlife/viewer/pull/2115 + secondlife/viewer/pull/2116 + secondlife/viewer/pull/2124 + secondlife/viewer/pull/2125 + secondlife/viewer/pull/2135 + secondlife/viewer/pull/2136 + secondlife/viewer/pull/2149 SpacedOut Frye VWR-34 VWR-45