diff --git a/.github/workflows/build_viewer.yml b/.github/workflows/build_viewer.yml index e4f1c94a07..e0a8567aa2 100644 --- a/.github/workflows/build_viewer.yml +++ b/.github/workflows/build_viewer.yml @@ -21,14 +21,7 @@ jobs: matrix: os: [macos-11,ubuntu-20.04,windows-2022] grid: [sl,os] - addrsize: [64,32] - exclude: - - os: ubuntu-20.04 - addrsize: 32 - - os: macos-11 - addrsize: 32 - # - grid: sl - # addrsize: 32 + addrsize: [64] runs-on: ${{ matrix.os }} steps: - uses: actions/checkout@v3 diff --git a/README_BUILD_FIRESTORM_WINDOWS.txt b/README_BUILD_FIRESTORM_WINDOWS.txt index ecbf01a749..bc7909e9f0 100755 --- a/README_BUILD_FIRESTORM_WINDOWS.txt +++ b/README_BUILD_FIRESTORM_WINDOWS.txt @@ -2,11 +2,11 @@ Before you start configuring your Windows build system, be aware of our tested c Memory: You will need at least 2GB RAM, 4GB strongly recommended. CPU: Multiple CPUs are strongly recommended. A build can take over an hour. - Visual Studio 2017 Community Edition. + Visual Studio 2017/2022 Community Edition. Ensure you can build a stock viewer-development try as described in the SL wiki. Before asking for any help compiling Firestorm, make sure you can build the Second Life viewer first. If you try and skip this step, you may -receive much less help. http://wiki.secondlife.com/wiki/Visual_Studio_2013_Viewer_Builds +receive much less help. https://wiki.secondlife.com/wiki/Build_the_Viewer_on_Windows If you want to use licensed FMOD or KDU build libraries (they are optional) you have to provision these yourself. If you're licensing these with Phoenix/Firestorm, ask for the libraries for fmod and kdu. Put them into: @@ -20,11 +20,11 @@ mailing list. We've created a non-KDU build target to make this easier. Everywhe "ReleaseFS_open" instead. This will perform the same build, using OpenJpeg instead of KDU. -To build Firestorm: +To build Firestorm - a more detailed instruction can be found at https://wiki.firestormviewer.org/fs_compiling_firestorm_windows: Open a CMD shell and navigating to your firestorm code repo: - autobuild build -c ReleaseFS + autobuild build -A 64 -c ReleaseFS Other build targets you may use are: @@ -33,22 +33,18 @@ Other build targets you may use are: RelWithDebInfoFS_open (no KDU, no FMOD) Other examples: - autobuild configure -c ReleaseFS # basic configuration step, don't build, just configure - autobuild configure -c ReleaseFS -- --clean # clean the output area first, then configure - autobuild configure -c ReleaseFS -- --chan Private-Yourname # configure with a custom channel + autobuild configure -A 64 -c ReleaseFS # basic configuration step, don't build, just configure + autobuild configure -A 64 -c ReleaseFS -- --clean # clean the output area first, then configure + autobuild configure -A 64 -c ReleaseFS -- --chan Private-Yourname # configure with a custom channel - autobuild build -c ReleaseFS --no-configure # default quick rebuild + autobuild build -A 64 -c ReleaseFS --no-configure # default quick rebuild If you want to set custom configuration, do this in the configure step separately from build, then run "autobuild -build -c ReleaseFS --no-configure" as a secondary step. - -If you want to build the 64bit version, add the parameter -A 64 to the autobuild commands, e.g.: - autobuild configure -A 64 -c ReleaseFS - autobuild build -A 64 -c ReleaseFS --no-configure +build -A 64 -c ReleaseFS --no-configure" as a secondary step. Logs: - Look for logs in build-vc150-32/logs for 32bit builds and build-vc150-64/logs for 64bit + Look for logs in build-vc1x0-64/logs Output: - Look for output in build-vc150-32/newview/Release for 32bit builds and build-vc150-64/newview/Release for 64bit + Look for output in build-vc1x0-32/newview/Release diff --git a/autobuild.xml b/autobuild.xml index 70f232f47d..b99e09ea27 100644 --- a/autobuild.xml +++ b/autobuild.xml @@ -847,9 +847,9 @@ archive hash - ad7b9fc10184e8145731f45ae400bfd1 + c539c58aee1d010928ae29ad344656a5 url - http://3p.firestormviewer.org/dullahan-1.12.2.202210012157_92.0.27_g274abcf_chromium-92.0.4515.159-linux64-222741156.tar.bz2 + http://3p.firestormviewer.org/dullahan-1.14.0.202311061750_118.6.8_ge44bee1_chromium-118.0.5993.117-linux64-233100650.tar.bz2 name linux64 @@ -948,14 +948,12 @@ archive - creds - github hash - 8ee7c21f3f109cf4e1709e4af0b4bebf + bfcc4acbe6b8dddaf10f0f7a47e4aad8 hash_algorithm md5 url - file:///opt/firestorm/fmodstudio-2.02.17-darwin64-232401806.tar.bz2 + file:///opt/firestorm/fmodstudio-2.02.18-darwin64-232960129.tar.bz2 name darwin64 @@ -964,8 +962,6 @@ archive - creds - github hash 14846f1a55274399362db4b674fcded6 hash_algorithm @@ -980,8 +976,6 @@ archive - creds - github hash 7b38bd83eb63f25df7c5a20070a05732 hash_algorithm @@ -1484,8 +1478,6 @@ archive - creds - github hash 3142fccbcc0e2c5a019e3177ef364290 url @@ -1498,8 +1490,6 @@ archive - creds - github hash e13d6fe708613bb3a5d630c4cdd97a3b url @@ -1512,8 +1502,6 @@ archive - creds - github hash 4aa7df19125708580055b42190d2511e url @@ -2959,11 +2947,11 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors archive hash - ad0c8b41ee4b4de216382bec46ee1c25962a3f12 + 71a9c7c03a2c26cdb21fa476de485d9c hash_algorithm - sha1 + md5 url - https://github.com/secondlife/3p-xmlrpc-epi/releases/download/v0.54.1.8a05acf/xmlrpc_epi-0.54.1.8a05acf-linux64-8a05acf.tar.zst + http://3p.firestormviewer.org/xmlrpc_epi-0.54.2.230940042-linux64-230940042.tar.bz2 name linux64 diff --git a/indra/media_plugins/cef/media_plugin_cef.cpp b/indra/media_plugins/cef/media_plugin_cef.cpp index 46b0de6211..4b3cb61ae2 100644 --- a/indra/media_plugins/cef/media_plugin_cef.cpp +++ b/indra/media_plugins/cef/media_plugin_cef.cpp @@ -1081,8 +1081,7 @@ void MediaPluginCEF::keyEvent(dullahan::EKeyEvent key_event, LLSD native_key_dat keypad = true; } - // yes, we send native_virtual_key_win twice because native_virtual_key breaks it - mCEFLib->nativeKeyboardEventSDL2(key_event, native_virtual_key_win, native_virtual_key_win, native_modifiers, keypad); + mCEFLib->nativeKeyboardEventSDL2(key_event, native_virtual_key_win, native_modifiers, keypad); } #else diff --git a/indra/newview/ao.cpp b/indra/newview/ao.cpp index 4f5a32fece..45502fd1d5 100644 --- a/indra/newview/ao.cpp +++ b/indra/newview/ao.cpp @@ -105,9 +105,9 @@ void FloaterAO::updateAnimationList() return; } - for (U32 index = 0; index < mSelectedSet->mStateNames.size(); ++index) + for (auto index = 0; index < mSelectedSet->mStateNames.size(); ++index) { - std::string stateName = mSelectedSet->mStateNames[index]; + const std::string& stateName = mSelectedSet->mStateNames[index]; AOSet::AOState* state = mSelectedSet->getStateByName(stateName); mStateSelector->add(stateName, state, ADD_BOTTOM, TRUE); } @@ -178,8 +178,8 @@ void FloaterAO::updateList() } } - U32 selected_index = 0; - for (U32 index = 0; index < mSetList.size(); ++index) + size_t selected_index = 0; + for (auto index = 0; index < mSetList.size(); ++index) { std::string setName = mSetList[index]->getName(); mSetSelector->add(setName, &mSetList[index], ADD_BOTTOM, TRUE); @@ -280,7 +280,7 @@ BOOL FloaterAO::postBuild() onChangeAnimationSelection(); mMainInterfacePanel->setVisible(TRUE); mSmallInterfacePanel->setVisible(FALSE); - reloading(TRUE); + reloading(true); updateList(); @@ -464,7 +464,7 @@ void FloaterAO::onSelectState() mSelectedState = (AOSet::AOState*)mStateSelector->getCurrentUserdata(); if (mSelectedState->mAnimations.size()) { - for (U32 index = 0; index < mSelectedState->mAnimations.size(); ++index) + for (auto index = 0; index < mSelectedState->mAnimations.size(); ++index) { LLScrollListItem* item = addAnimation(mSelectedState->mAnimations[index].mName); if (item) @@ -558,7 +558,7 @@ bool FloaterAO::removeSetCallback(const LLSD& notification, const LLSD& response { S32 option = LLNotificationsUtil::getSelectedOption(notification, response); - if (option ==0 ) + if (option ==0) { if (AOEngine::instance().removeSet(mSelectedSet)) { @@ -638,7 +638,7 @@ void FloaterAO::onChangeAnimationSelection() mAnimationList->deselectAllItems(); LL_DEBUGS("AOEngine") << "Selection count now: " << list.size() << LL_ENDL; } - else if (list.size() > 0) + else if (!list.empty()) { if (list.size() == 1) { @@ -715,7 +715,7 @@ void FloaterAO::onClickTrash() return; } - for (S32 index = list.size() - 1; index != -1; --index) + for (auto index = list.size() - 1; index != -1; --index) { AOEngine::instance().removeAnimation(mSelectedSet, mSelectedState, mAnimationList->getItemIndex(list[index])); } @@ -833,11 +833,8 @@ void FloaterAO::onAnimationChanged(const LLUUID& animation) } // why do we have no LLScrollListCtrl::getItemByUserdata() ? -Zi - std::vector item_list = mAnimationList->getAllData(); - std::vector::const_iterator iter; - for (iter = item_list.begin(); iter != item_list.end(); ++iter) + for (auto item : mAnimationList->getAllData()) { - LLScrollListItem* item = *iter; LLUUID* id = (LLUUID*)item->getUserdata(); if (id == &animation) diff --git a/indra/newview/aoengine.cpp b/indra/newview/aoengine.cpp index a726483d6a..4ca498bb58 100644 --- a/indra/newview/aoengine.cpp +++ b/indra/newview/aoengine.cpp @@ -44,7 +44,7 @@ #define ROOT_AO_FOLDER "#AO" #include -const F32 INVENTORY_POLLING_INTERVAL = 5.0f; +constexpr F32 INVENTORY_POLLING_INTERVAL = 5.0f; AOEngine::AOEngine() : LLSingleton(), @@ -128,7 +128,7 @@ void AOEngine::onPauseAO() void AOEngine::clear(bool from_timer) { - mOldSets.insert(mOldSets.end(), mSets.begin(), mSets.end()); + std::move(mSets.begin(), mSets.end(), std::back_inserter(mOldSets)); mSets.clear(); mCurrentSet = nullptr; @@ -213,7 +213,7 @@ bool AOEngine::foreignAnimations() return false; } - LLUUID seat = agentRoot->getID(); + const LLUUID& seat = agentRoot->getID(); if (seat == gAgentID) { LL_DEBUGS("AOEngine") << "Not checking for foreign animation when not sitting." << LL_ENDL; @@ -222,7 +222,7 @@ bool AOEngine::foreignAnimations() LL_DEBUGS("AOEngine") << "Checking for foreign animation on seat " << seat << LL_ENDL; - for (const auto&[source_id, animation_id] : gAgentAvatarp->mAnimationSources) + for (const auto& [source_id, animation_id] : gAgentAvatarp->mAnimationSources) { // skip animations run by the avatar itself if (source_id != gAgentID) @@ -584,7 +584,7 @@ const LLUUID AOEngine::override(const LLUUID& motion, bool start) // case, as it plays at the same time as other motions if (motion != ANIM_AGENT_TYPE) { - const S32 cleanupStates[]= + constexpr S32 cleanupStates[]= { AOSet::Standing, AOSet::Walking, @@ -806,8 +806,7 @@ void AOEngine::checkSitCancel() { if (foreignAnimations()) { - AOSet::AOState* aoState = mCurrentSet->getStateByRemapID(ANIM_AGENT_SIT); - if (aoState) + if (AOSet::AOState* aoState = mCurrentSet->getStateByRemapID(ANIM_AGENT_SIT); aoState) { LLUUID animation = aoState->mCurrentAnimationID; if (animation.notNull()) @@ -1020,7 +1019,7 @@ bool AOEngine::createAnimationLink(const AOSet* set, AOSet::AOState* state, cons if (cats) { - for (auto cat : *cats) + for (const auto& cat : *cats) { if (cat->getName().compare(state->mName) == 0) { @@ -1039,8 +1038,7 @@ bool AOEngine::createAnimationLink(const AOSet* set, AOSet::AOState* state, cons return false; } - LLInventoryObject::const_object_list_t obj_array; - obj_array.push_back(LLConstPointer(item)); + LLInventoryObject::const_object_list_t obj_array{ LLConstPointer(item) }; link_inventory_array(state->mInventoryUUID, obj_array, LLPointer(nullptr)); @@ -1055,7 +1053,7 @@ bool AOEngine::addAnimation(const AOSet* set, AOSet::AOState* state, const LLInv anim.mInventoryUUID = item->getUUID(); anim.mName = item->getName(); anim.mSortOrder = state->mAnimations.size() + 1; - state->mAnimations.push_back(anim); + state->mAnimations.emplace_back(std::move(anim)); BOOL wasProtected = gSavedPerAccountSettings.getBOOL("LockAOFolders"); gSavedPerAccountSettings.setBOOL("LockAOFolders", FALSE); @@ -1175,7 +1173,7 @@ bool AOEngine::removeAnimation(const AOSet* set, AOSet::AOState* state, S32 inde return false; } - S32 numOfAnimations = state->mAnimations.size(); + auto numOfAnimations = state->mAnimations.size(); if (numOfAnimations == 0) { return false; @@ -1220,7 +1218,7 @@ bool AOEngine::removeAnimation(const AOSet* set, AOSet::AOState* state, S32 inde if (cats) { - for (auto cat : *cats) + for (const auto& cat : *cats) { std::vector params; LLStringUtil::getTokens(cat->getName(), params, ":"); @@ -1254,7 +1252,7 @@ bool AOEngine::removeAnimation(const AOSet* set, AOSet::AOState* state, S32 inde bool AOEngine::swapWithPrevious(AOSet::AOState* state, S32 index) { - S32 numOfAnimations = state->mAnimations.size(); + auto numOfAnimations = state->mAnimations.size(); if (numOfAnimations < 2 || index == 0) { return false; @@ -1271,7 +1269,7 @@ bool AOEngine::swapWithPrevious(AOSet::AOState* state, S32 index) bool AOEngine::swapWithNext(AOSet::AOState* state, S32 index) { - S32 numOfAnimations = state->mAnimations.size(); + auto numOfAnimations = state->mAnimations.size(); if (numOfAnimations < 2 || index == (numOfAnimations - 1)) { return false; @@ -1297,7 +1295,7 @@ void AOEngine::reloadStateAnimations(AOSet::AOState* state) if (items) { - for (auto item : *items) + for (const auto& item : *items) { LL_DEBUGS("AOEngine") << "Found animation link " << item->LLInventoryItem::getName() << " desc " << item->LLInventoryItem::getDescription() @@ -1326,12 +1324,12 @@ void AOEngine::reloadStateAnimations(AOSet::AOState* state) if (sortOrder == -1) { LL_WARNS("AOEngine") << "sort order was unknown so append to the end of the list" << LL_ENDL; - state->mAnimations.push_back(anim); + state->mAnimations.emplace_back(std::move(anim)); } else { bool inserted = false; - for (U32 index = 0; index < state->mAnimations.size(); ++index) + for (auto index = 0; index < state->mAnimations.size(); ++index) { if (state->mAnimations[index].mSortOrder > sortOrder) { @@ -1344,7 +1342,7 @@ void AOEngine::reloadStateAnimations(AOSet::AOState* state) if (!inserted) { LL_DEBUGS("AOEngine") << "not inserted yet, appending to the list instead" << LL_ENDL; - state->mAnimations.push_back(anim); + state->mAnimations.emplace_back(std::move(anim)); } } LL_DEBUGS("AOEngine") << "Animation count now: " << state->mAnimations.size() << LL_ENDL; @@ -1377,7 +1375,7 @@ void AOEngine::update() if (categories) { - for (auto currentCategory : *categories) + for (const auto& currentCategory : *categories) { const std::string& setFolderName = currentCategory->getName(); @@ -1401,7 +1399,7 @@ void AOEngine::update() LL_DEBUGS("AOEngine") << "Adding set " << setFolderName << " to AO." << LL_ENDL; newSet = new AOSet(currentCategory->getUUID()); newSet->setName(params[0]); - mSets.push_back(newSet); + mSets.emplace_back(newSet); } else { @@ -1414,7 +1412,7 @@ void AOEngine::update() } allComplete = false; - for (U32 num = 1; num < params.size(); ++num) + for (auto num = 1; num < params.size(); ++num) { if (params[num].size() != 2) { @@ -1451,7 +1449,7 @@ void AOEngine::update() gInventory.getDirectDescendentsOf(currentCategory->getUUID(), stateCategories, items); newSet->setComplete(true); - for (auto stateCategory : *stateCategories) + for (const auto& stateCategory : *stateCategories) { std::vector state_params; LLStringUtil::getTokens(stateCategory->getName(), state_params, ":"); @@ -1471,7 +1469,7 @@ void AOEngine::update() LL_DEBUGS("AOEngine") << "Reading state " << stateName << LL_ENDL; state->mInventoryUUID = stateCategory->getUUID(); - for (U32 num = 1; num < state_params.size(); ++num) + for (auto num = 1; num < state_params.size(); ++num) { if (state_params[num] == "CY") { @@ -1925,7 +1923,7 @@ void AOEngine::tick() gInventory.getDirectDescendentsOf(categoryID, categories, items); LL_DEBUGS("AOEngine") << "cat " << categories->size() << " items " << items->size() << LL_ENDL; - for (auto cat : *categories) + for (const auto& cat : *categories) { const std::string& catName = cat->getName(); if (catName.compare(ROOT_AO_FOLDER) == 0) @@ -1975,8 +1973,8 @@ bool AOEngine::importNotecard(const LLInventoryItem* item) gAssetStorage->getInvItemAsset( sourceSim, - gAgent.getID(), - gAgent.getSessionID(), + gAgentID, + gAgentSessionID, item->getPermissions().getOwner(), LLUUID::null, item->getUUID(), @@ -2013,8 +2011,8 @@ void AOEngine::onNotecardLoadComplete(const LLUUID& assetUUID, LLAssetType::ETyp char* buffer = new char[notecardSize + 1]; buffer[notecardSize] = 0; - S32 ret = file.read((U8*)buffer, notecardSize); - if (ret > 0) + BOOL ret = file.read((U8*)buffer, notecardSize); + if (ret) { AOEngine::instance().parseNotecard(buffer); } @@ -2046,17 +2044,17 @@ void AOEngine::parseNotecard(const char* buffer) std::vector lines; LLStringUtil::getTokens(text, lines, "\n"); - S32 found = -1; - for (U32 index = 0; index < lines.size(); ++index) + bool found{ false }; + for (const auto& line : lines) { - if (lines[index].find("Text length ") == 0) + if (line.find("Text length ") == 0) { - found = index; + found = true; break; } } - if (found == -1) + if (!found) { LLNotificationsUtil::add("AOImportNoText", LLSD()); delete mImportSet; @@ -2080,7 +2078,7 @@ void AOEngine::parseNotecard(const char* buffer) LLInventoryModel::item_array_t* items; gInventory.getDirectDescendentsOf(mImportSet->getInventoryUUID(), dummy, items); - for (U32 index = 0; index < items->size(); ++index) + for (auto index = 0; index < items->size(); ++index) { animationMap[items->at(index)->getName()] = items->at(index)->getUUID(); LL_DEBUGS("AOEngine") << "animation " << items->at(index)->getName() << @@ -2088,7 +2086,7 @@ void AOEngine::parseNotecard(const char* buffer) } // [ State ]Anim1|Anim2|Anim3 - for (U32 index = found + 1; index < lines.size(); ++index) + for (auto index = found + 1; index < lines.size(); ++index) { std::string line = lines[index]; @@ -2125,7 +2123,7 @@ void AOEngine::parseNotecard(const char* buffer) LLNotificationsUtil::add("AOImportNoValidDelimiter", args); continue; } - U32 endTag = line.find("]"); + auto endTag = line.find("]"); std::string stateName = line.substr(1, endTag - 1); LLStringUtil::trim(stateName); @@ -2143,7 +2141,7 @@ void AOEngine::parseNotecard(const char* buffer) std::vector animationList; LLStringUtil::getTokens(animationLine, animationList, "|,"); - for (U32 animIndex = 0; animIndex < animationList.size(); ++animIndex) + for (auto animIndex = 0; animIndex < animationList.size(); ++animIndex) { AOSet::AOAnimation animation; animation.mName = animationList[animIndex]; @@ -2182,46 +2180,46 @@ void AOEngine::processImport(bool from_timer) { bool success = addSet(mImportSet->getName(), [this, from_timer](const LLUUID& new_cat_id) { - mImportCategory = new_cat_id; - mImportSet->setInventoryUUID(mImportCategory); + mImportCategory = new_cat_id; + mImportSet->setInventoryUUID(mImportCategory); - bool allComplete = true; - for (S32 index = 0; index < AOSet::AOSTATES_MAX; ++index) + bool allComplete = true; + for (S32 index = 0; index < AOSet::AOSTATES_MAX; ++index) + { + AOSet::AOState* state = mImportSet->getState(index); + if (!state->mAnimations.empty()) { - AOSet::AOState* state = mImportSet->getState(index); - if (state->mAnimations.size()) - { - allComplete = false; - LL_DEBUGS("AOEngine") << "state " << state->mName << " still has animations to link." << LL_ENDL; + allComplete = false; + LL_DEBUGS("AOEngine") << "state " << state->mName << " still has animations to link." << LL_ENDL; - for (S32 animationIndex = state->mAnimations.size() - 1; animationIndex >= 0; --animationIndex) + for (auto animationIndex = state->mAnimations.size() - 1; animationIndex >= 0; --animationIndex) + { + LL_DEBUGS("AOEngine") << "linking animation " << state->mAnimations[animationIndex].mName << LL_ENDL; + if (createAnimationLink(mImportSet, state, gInventory.getItem(state->mAnimations[animationIndex].mInventoryUUID))) { - LL_DEBUGS("AOEngine") << "linking animation " << state->mAnimations[animationIndex].mName << LL_ENDL; - if (createAnimationLink(mImportSet, state, gInventory.getItem(state->mAnimations[animationIndex].mInventoryUUID))) - { - LL_DEBUGS("AOEngine") << "link success, size " << state->mAnimations.size() << ", removing animation " - << (*(state->mAnimations.begin() + animationIndex)).mName << " from import state" << LL_ENDL; - state->mAnimations.erase(state->mAnimations.begin() + animationIndex); - LL_DEBUGS("AOEngine") << "deleted, size now: " << state->mAnimations.size() << LL_ENDL; - } - else - { - LLSD args; - args["NAME"] = state->mAnimations[animationIndex].mName; - LLNotificationsUtil::add("AOImportLinkFailed", args); - } + LL_DEBUGS("AOEngine") << "link success, size " << state->mAnimations.size() << ", removing animation " + << (*(state->mAnimations.begin() + animationIndex)).mName << " from import state" << LL_ENDL; + state->mAnimations.erase(state->mAnimations.begin() + animationIndex); + LL_DEBUGS("AOEngine") << "deleted, size now: " << state->mAnimations.size() << LL_ENDL; + } + else + { + LLSD args; + args["NAME"] = state->mAnimations[animationIndex].mName; + LLNotificationsUtil::add("AOImportLinkFailed", args); } } } + } - if (allComplete) - { - mTimerCollection.enableImportTimer(false); - mOldImportSets.push_back(mImportSet); // FIRE-3801; Cannot delete here, or LLInstanceTracker gets upset. Just remember and delete mOldImportSets once we can. - mImportSet = nullptr; - mImportCategory.setNull(); - reload(from_timer); - } + if (allComplete) + { + mTimerCollection.enableImportTimer(false); + mOldImportSets.push_back(mImportSet); // FIRE-3801; Cannot delete here, or LLInstanceTracker gets upset. Just remember and delete mOldImportSets once we can. + mImportSet = nullptr; + mImportCategory.setNull(); + reload(from_timer); + } }, false); if (!success) @@ -2293,8 +2291,7 @@ void AOEngine::onRegionChange() } // do nothing if no AO animation is playing (e.g. smart sit cancel) - LLUUID animation = state->mCurrentAnimationID; - if (animation.isNull()) + if (LLUUID animation = state->mCurrentAnimationID; animation.isNull()) { return; } diff --git a/indra/newview/aoset.cpp b/indra/newview/aoset.cpp index 18f5b5621e..e08a8ffe69 100644 --- a/indra/newview/aoset.cpp +++ b/indra/newview/aoset.cpp @@ -117,7 +117,7 @@ AOSet::AOSet(const LLUUID inventoryID) mStates[index].mRandom = false; mStates[index].mCycleTime = 0.0f; mStates[index].mDirty = false; - mStateNames.push_back(stateNameList[0]); + mStateNames.emplace_back(stateNameList[0]); } stopTimer(); } @@ -137,7 +137,7 @@ AOSet::AOState* AOSet::getStateByName(const std::string& name) for (S32 index = 0; index < AOSTATES_MAX; ++index) { AOState* state = &mStates[index]; - for (U32 names = 0; names < state->mAlternateNames.size(); ++names) + for (auto names = 0; names < state->mAlternateNames.size(); ++names) { if (state->mAlternateNames[names].compare(name) == 0) { @@ -170,7 +170,7 @@ const LLUUID& AOSet::getAnimationForState(AOState* state) const { if (state) { - S32 numOfAnimations = state->mAnimations.size(); + auto numOfAnimations = state->mAnimations.size(); if (numOfAnimations) { if (state->mCycle) diff --git a/indra/newview/llstartup.cpp b/indra/newview/llstartup.cpp index e4cc139788..70b2e6d58e 100644 --- a/indra/newview/llstartup.cpp +++ b/indra/newview/llstartup.cpp @@ -3654,6 +3654,7 @@ void register_viewer_callbacks(LLMessageSystem* msg) msg->setHandlerFunc("InitiateDownload", process_initiate_download); msg->setHandlerFunc("LandStatReply", LLFloaterTopObjects::handle_land_reply); msg->setHandlerFunc("GenericMessage", process_generic_message); + msg->setHandlerFunc("GenericStreamingMessage", process_generic_streaming_message); msg->setHandlerFunc("LargeGenericMessage", process_large_generic_message); msg->setHandlerFuncFast(_PREHASH_FeatureDisabled, process_feature_disabled_message); diff --git a/indra/newview/llviewergenericmessage.cpp b/indra/newview/llviewergenericmessage.cpp index d3de9d72bf..7d33fc0d84 100644 --- a/indra/newview/llviewergenericmessage.cpp +++ b/indra/newview/llviewergenericmessage.cpp @@ -92,6 +92,11 @@ void process_generic_message(LLMessageSystem* msg, void**) } } +void process_generic_streaming_message(LLMessageSystem* msg, void**) +{ + // placeholder to suppress packet loss reports and log spam (SL-20473) +} + void process_large_generic_message(LLMessageSystem* msg, void**) { LLUUID agent_id; diff --git a/indra/newview/llviewergenericmessage.h b/indra/newview/llviewergenericmessage.h index 170f38a485..96a73a3d5f 100644 --- a/indra/newview/llviewergenericmessage.h +++ b/indra/newview/llviewergenericmessage.h @@ -38,6 +38,7 @@ void send_generic_message(const std::string& method, const LLUUID& invoice = LLUUID::null); void process_generic_message(LLMessageSystem* msg, void**); +void process_generic_streaming_message(LLMessageSystem* msg, void**); void process_large_generic_message(LLMessageSystem* msg, void**); diff --git a/indra/newview/skins/vintage/xui/en/panel_main_inventory.xml b/indra/newview/skins/vintage/xui/en/panel_main_inventory.xml index b5e5698f59..7c919f4c3a 100644 --- a/indra/newview/skins/vintage/xui/en/panel_main_inventory.xml +++ b/indra/newview/skins/vintage/xui/en/panel_main_inventory.xml @@ -81,6 +81,63 @@ function="Floater.Toggle" parameter="fs_protectedfolders" /> + + + + + + + + + + + + + + + + + + + + + + Pobrano [ITEM_COUNT] elementów [FILTER] + + Szafa + @@ -16,6 +19,7 @@ + @@ -62,6 +66,9 @@ + + + @@ -77,7 +84,17 @@ - + + +