diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml index 31bf2ecfb6..08fd7d60b2 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -264,7 +264,7 @@ jobs: - name: Upload executable if: steps.build.outputs.viewer_app - uses: actions/upload-artifact@v4 + uses: actions/upload-artifact@v5 with: name: "${{ steps.build.outputs.artifact }}-app" path: | @@ -274,13 +274,13 @@ jobs: # artifact for that too. - name: Upload symbol file if: steps.build.outputs.symbolfile - uses: actions/upload-artifact@v4 + uses: actions/upload-artifact@v5 with: name: "${{ steps.build.outputs.artifact }}-symbols" path: ${{ steps.build.outputs.symbolfile }} - name: Upload metadata - uses: actions/upload-artifact@v4 + uses: actions/upload-artifact@v5 with: name: "${{ steps.build.outputs.artifact }}-metadata" # emitted by build.sh, possibly multiple lines @@ -288,7 +288,7 @@ jobs: ${{ steps.build.outputs.metadata }} - name: Upload physics package - uses: actions/upload-artifact@v4 + uses: actions/upload-artifact@v5 # should only be set for viewer-private if: matrix.configuration == 'Release' && steps.build.outputs.physicstpv with: @@ -368,13 +368,13 @@ jobs: runs-on: ubuntu-latest steps: - name: Download viewer exe - uses: actions/download-artifact@v5 + uses: actions/download-artifact@v6 with: name: Windows-app path: _artifacts - name: Download Windows Symbols if: env.BUGSPLAT_USER && env.BUGSPLAT_PASS - uses: actions/download-artifact@v5 + uses: actions/download-artifact@v6 with: name: Windows-symbols - name: Extract viewer pdb @@ -404,7 +404,7 @@ jobs: steps: - name: Download Mac Symbols if: env.BUGSPLAT_USER && env.BUGSPLAT_PASS - uses: actions/download-artifact@v5 + uses: actions/download-artifact@v6 with: name: macOS-symbols - name: Post Mac symbols @@ -424,11 +424,11 @@ jobs: runs-on: ubuntu-latest if: needs.setup.outputs.release_run steps: - - uses: actions/download-artifact@v5 + - uses: actions/download-artifact@v6 with: pattern: "*-installer" - - uses: actions/download-artifact@v5 + - uses: actions/download-artifact@v6 with: pattern: "*-metadata" diff --git a/.github/workflows/build_viewer.yml b/.github/workflows/build_viewer.yml index 4d74d5ba3d..1f86943641 100644 --- a/.github/workflows/build_viewer.yml +++ b/.github/workflows/build_viewer.yml @@ -482,7 +482,7 @@ jobs: dumpSyms: false - name: Publish artifacts if: runner.os == 'Windows' - uses: actions/upload-artifact@v4 + uses: actions/upload-artifact@v5 with: name: ${{ env.FS_RELEASE_TYPE }}-${{ matrix.os }}-${{ matrix.variant }}-${{ matrix.grid }}-artifacts.zip path: | @@ -491,7 +491,7 @@ jobs: - name: publish Linux artifacts if: runner.os == 'Linux' - uses: actions/upload-artifact@v4 + uses: actions/upload-artifact@v5 with: name: ${{ env.FS_RELEASE_TYPE }}-${{ matrix.os }}-${{ matrix.variant }}-${{matrix.grid}}-artifacts.zip path: | @@ -500,7 +500,7 @@ jobs: - name: publish MacOS artifacts if: runner.os == 'macOS' - uses: actions/upload-artifact@v4 + uses: actions/upload-artifact@v5 with: name: ${{ env.FS_RELEASE_TYPE }}-${{ matrix.os }}-${{ matrix.variant }}-${{matrix.grid}}-artifacts.zip path: | @@ -529,7 +529,7 @@ jobs: run: pip install discord-webhook - name: Download artifacts - uses: actions/download-artifact@v5 + uses: actions/download-artifact@v6 id: download with: path: to_deploy @@ -581,7 +581,7 @@ jobs: # Upload Build Info Artifact (note that this file is expected to be identical for each matrix run, so items like OS and VARIANT cannot be in this file.) - name: Upload Tag Info - uses: actions/upload-artifact@v4 + uses: actions/upload-artifact@v5 with: name: build_info path: build_info.json diff --git a/.github/workflows/sign.yml b/.github/workflows/sign.yml index 828f8fd6ad..d49d51980f 100644 --- a/.github/workflows/sign.yml +++ b/.github/workflows/sign.yml @@ -62,7 +62,7 @@ jobs: files_json=$(ls setup_exe_files | jq -R . | jq -s -c .) echo "setup_files=$files_json" >> $GITHUB_OUTPUT - name: Upload Setup.exe Files - uses: actions/upload-artifact@v4 + uses: actions/upload-artifact@v5 with: name: setup-exe-files path: setup_exe_files/ @@ -86,7 +86,7 @@ jobs: shell: bash - name: Download Setup.exe Files Artifact - uses: actions/download-artifact@v5 + uses: actions/download-artifact@v6 with: name: setup-exe-files path: setup_exe_files @@ -97,7 +97,7 @@ jobs: shell: bash # - name: Upload unsigned artifact # id: upload-unsigned-artifact - # uses: actions/upload-artifact@v4 + # uses: actions/upload-artifact@v5 # with: # name: unsigned-artifact-${{ matrix.file }} # path: to_sign/${{ matrix.file }} @@ -115,7 +115,7 @@ jobs: # wait-for-completion: true # output-artifact-directory: 'application-signed' - name: Azure Trusted Signing - uses: azure/trusted-signing-action@v0.5.9 + uses: azure/trusted-signing-action@v0.5.10 with: azure-tenant-id: ${{ secrets.AZURE_TENANT_ID }} azure-client-id: ${{ secrets.AZURE_CLIENT_ID }} @@ -129,14 +129,14 @@ jobs: files-folder-filter: exe # - name: Upload signed artifact - # uses: actions/upload-artifact@v4 + # uses: actions/upload-artifact@v5 # with: # name: signed-artifact-${{ matrix.file }} # path: ./application-signed # - name: Upload unsigned artifact - name: Upload signed artifact id: upload-unsigned-artifact - uses: actions/upload-artifact@v4 + uses: actions/upload-artifact@v5 with: name: unsigned-artifact-${{ matrix.file }} path: to_sign\${{ matrix.file }} diff --git a/indra/cmake/Copy3rdPartyLibs.cmake b/indra/cmake/Copy3rdPartyLibs.cmake index 9f93fbc039..73e8d7184a 100644 --- a/indra/cmake/Copy3rdPartyLibs.cmake +++ b/indra/cmake/Copy3rdPartyLibs.cmake @@ -113,6 +113,9 @@ if(WINDOWS) elseif (MSVC_VERSION GREATER_EQUAL 1930 AND MSVC_VERSION LESS 1950) # Visual Studio 2022 set(MSVC_VER 140) set(MSVC_TOOLSET_VER 143) + elseif (MSVC_VERSION GREATER_EQUAL 1950 AND MSVC_VERSION LESS 1970) # Visual Studio 2026 + set(MSVC_VER 140) + set(MSVC_TOOLSET_VER 145) else (MSVC80) MESSAGE(WARNING "New MSVC_VERSION ${MSVC_VERSION} of MSVC: adapt Copy3rdPartyLibs.cmake") endif (MSVC80) @@ -150,6 +153,7 @@ if(WINDOWS) msvcp${MSVC_VER}_atomic_wait.dll msvcp${MSVC_VER}_codecvt_ids.dll #msvcr${MSVC_VER}.dll # Can't build with older VS versions anyway - no need trying to copy this file + vccorlib${MSVC_VER}.dll vcruntime${MSVC_VER}.dll vcruntime${MSVC_VER}_1.dll vcruntime${MSVC_VER}_threads.dll diff --git a/indra/llui/llaccordionctrl.cpp b/indra/llui/llaccordionctrl.cpp index 1a64c2699d..2cd394476e 100644 --- a/indra/llui/llaccordionctrl.cpp +++ b/indra/llui/llaccordionctrl.cpp @@ -303,11 +303,8 @@ void LLAccordionCtrl::ctrlSetLeftTopAndSize(LLView* panel, S32 left, S32 top, S3 return; LLRect panel_rect = panel->getRect(); panel_rect.setLeftTopAndSize( left, top, width, height); - if (panel->getRect() != panel_rect) - { - panel->reshape( width, height, 1); - panel->setRect(panel_rect); - } + panel->reshape( width, height, 1); + panel->setRect(panel_rect); } void LLAccordionCtrl::ctrlShiftVertical(LLView* panel, S32 delta) diff --git a/indra/llwebrtc/llwebrtc.cpp b/indra/llwebrtc/llwebrtc.cpp index 860f619885..198161d0c2 100644 --- a/indra/llwebrtc/llwebrtc.cpp +++ b/indra/llwebrtc/llwebrtc.cpp @@ -644,14 +644,20 @@ void LLWebRTCImpl::workerDeployDevices() void LLWebRTCImpl::setCaptureDevice(const std::string &id) { - mRecordingDevice = id; - deployDevices(); + if (mRecordingDevice != id) + { + mRecordingDevice = id; + deployDevices(); + } } void LLWebRTCImpl::setRenderDevice(const std::string &id) { - mPlayoutDevice = id; - deployDevices(); + if (mPlayoutDevice != id) + { + mPlayoutDevice = id; + deployDevices(); + } } // updateDevices needs to happen on the worker thread. diff --git a/indra/newview/Info-Firestorm.plist b/indra/newview/Info-Firestorm.plist index 6b2e73a5a2..add3bef56b 100644 --- a/indra/newview/Info-Firestorm.plist +++ b/indra/newview/Info-Firestorm.plist @@ -11,7 +11,7 @@ CFBundleIconFile ${MACOSX_BUNDLE_ICON_FILE} CFBundleIdentifier - ${PRODUCT_BUNDLE_IDENTIFIER} + $(PRODUCT_BUNDLE_IDENTIFIER) CFBundleInfoDictionaryVersion 6.0 CFBundleLongVersionString diff --git a/indra/newview/llface.h b/indra/newview/llface.h index 651a4167e0..febb367d1b 100644 --- a/indra/newview/llface.h +++ b/indra/newview/llface.h @@ -52,7 +52,12 @@ class LLDrawInfo; class LLMeshSkinInfo; const F32 MIN_ALPHA_SIZE = 1024.f; -const F32 MIN_TEX_ANIM_SIZE = 512.f; +// +//const F32 MIN_TEX_ANIM_SIZE = 512.f; +// Reduce the cut off point of the animated textures down to the size when textures get discarded/set to invalid size. +// This should prevent "on screen" animated textures from stopping. +const F32 MIN_TEX_ANIM_SIZE = 16.f; +// const U8 FACE_DO_NOT_BATCH_TEXTURES = 255; class alignas(16) LLFace diff --git a/indra/newview/lloutfitslist.cpp b/indra/newview/lloutfitslist.cpp index 1dc127f8e0..fae02f4e05 100644 --- a/indra/newview/lloutfitslist.cpp +++ b/indra/newview/lloutfitslist.cpp @@ -1780,11 +1780,18 @@ bool LLOutfitAccordionCtrlTab::handleToolTip(S32 x, S32 y, MASK mask) // Make thumbnail tooltip work properly //if (y >= getLocalRect().getHeight() - getHeaderHeight()) static LLCachedControl showInventoryThumbnailTooltips(gSavedSettings, "FSShowInventoryThumbnailTooltips"); - if (showInventoryThumbnailTooltips && y >= getLocalRect().getHeight() - getHeaderHeight() && gInventory.getCategory(mFolderID)->getThumbnailUUID().notNull()) + if (showInventoryThumbnailTooltips && y >= getLocalRect().getHeight() - getHeaderHeight()) { LLSD params; params["inv_type"] = LLInventoryType::IT_CATEGORY; LLViewerInventoryCategory* cat = gInventory.getCategory(mFolderID); + // Make thumbnail tooltip work properly + if (!cat || cat->getThumbnailUUID().isNull()) + { + return LLAccordionCtrlTab::handleToolTip(x, y, mask); + } + // + if (cat) { params["thumbnail_id"] = cat->getThumbnailUUID(); diff --git a/indra/newview/llpreviewtexture.cpp b/indra/newview/llpreviewtexture.cpp index b17b5b5aa5..fbc5ea25d3 100644 --- a/indra/newview/llpreviewtexture.cpp +++ b/indra/newview/llpreviewtexture.cpp @@ -475,7 +475,7 @@ void LLPreviewTexture::saveTextureToFile(const std::vector& filenam void LLPreviewTexture::saveMultipleToFile(const std::string& file_name) { std::string texture_location(gSavedSettings.getString("TextureSaveLocation")); - std::string texture_name = file_name.empty() ? getItem()->getName() : file_name; + std::string texture_name = LLDir::getScrubbedFileName(file_name.empty() ? getItem()->getName() : file_name); std::string filepath; S32 i = 0; diff --git a/indra/newview/llvoicewebrtc.cpp b/indra/newview/llvoicewebrtc.cpp index 1633f7a957..86ed998f33 100644 --- a/indra/newview/llvoicewebrtc.cpp +++ b/indra/newview/llvoicewebrtc.cpp @@ -921,7 +921,9 @@ float LLWebRTCVoiceClient::tuningGetEnergy(void) // [FIRE-36022] - Removing my USB headset crashes entire viewer // This can cause an error if device interface can be NULL. if (!mWebRTCDeviceInterface) - return 1.0f; + { + return 0.0f; + } // [FIRE-36022] float rms = mWebRTCDeviceInterface->getTuningAudioLevel(); return TUNING_LEVEL_START_POINT - TUNING_LEVEL_SCALE * rms; diff --git a/indra/newview/skins/default/xui/fr/floater_inventory_settings.xml b/indra/newview/skins/default/xui/fr/floater_inventory_settings.xml index 4ae4c3db45..dafc61543a 100644 --- a/indra/newview/skins/default/xui/fr/floater_inventory_settings.xml +++ b/indra/newview/skins/default/xui/fr/floater_inventory_settings.xml @@ -22,5 +22,17 @@ -