summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2024-07-17Merge remote-tracking branch 'origin/release/webrtc-voice' into ↵Brad Linden
release/2024.06-atlasaurus # Conflicts: # autobuild.xml # indra/newview/llvoicechannel.cpp
2024-07-17Lua api for adding new menu items to the Top menuMaxim Nikolenko
2024-07-16viewer#1975 Fixed "Allow Land Resell" option not switchingAndrey Kleshchev
2024-07-12Merge pull request #2009 from secondlife/lua-llsd-debug-settingnat-goodspeed
Show description and actual value of LLSD type setting
2024-07-12fix for 'Run' buttonMnikolenko Productengine
2024-07-12Show description and actual value of LLSD type settingMnikolenko Productengine
2024-07-11Merge pull request #1984 from secondlife/lua-no-reusenat-goodspeed
Remove ability to reuse a `LuaState` between `LLLUAmanager` functions.
2024-07-10Merge branch 'lua-atexit-run' into lua-no-reuse.Nat Goodspeed
We couldn't discard the "p.s." fiber.run() call from LuaState::expr() until we could count on fiber.lua's LL.atexit(fiber.run) call being executed after each Lua script or chunk, and we couldn't count on that until we made LLLUAmanager::runScriptFile() instantiate and destroy its LuaState on the C++ Lua-specific coroutine. Now that we've done that, use LL.atexit(fiber.run) instead of the whole special-case "p.s." in LuaState::expr().
2024-07-10Remove ability to reuse a LuaState between LLLUAmanager functions.Nat Goodspeed
Remove LLLUAmanager::mumbleScriptLine() LuaState& parameters. Make startScriptLine(), waitScriptLine() and runScriptLine() exactly parallel to startScriptFile(), waitScriptFile() and runScriptFile(). That means that runScriptLine()'s C++ coroutine instantiates and destroys its own LuaState, which means that LL.atexit() functions will run on the Lua-specific C++ coroutine rather than (say) the viewer's main coroutine. Introduce LLLUAmanager::script_result typedef for std::pair<int, LLSD> and use in method returns. Remove LuaState::initLuaState(); move its logic back into the constructor. Remove initLuaState() calls in the expr() error cases: they're moot now that we won't get subsequent expr() calls on the same LuaState instance. Remove LLFloaterLUADebug "Use clean lua_State" checkbox and the cleanLuaState() method. Remove mState member. Remove explicit LuaState declarations from LLLUAmanager tests. Adapt one test for implicit LuaState: it was directly calling LuaState::obtainListener() to discover the LuaListener's reply-pump name. But since that test also captures two leap.request() calls from the Lua script, it can just look at the "reply" key in either of those requests.
2024-07-10Merge pull request #1939 from secondlife/lua-snapshotMaxim Nikolenko
Lua api for Snapshot and demo script
2024-07-10Simplify passing keys to leap.requestMnikolenko Productengine
2024-07-09Merge pull request #1967 from secondlife/1826-llerror-hangs-viewerBrad Linden
#1826 Fix for LL_ERRS crashing in mutex lock
2024-07-09Review feedback changeRunitaiLinden
2024-07-09#1826 Fix for LL_ERRS crashing in mutex lockRunitaiLinden
2024-07-09Merge branch 'release/luau-scripting' into lua-snapshotNat Goodspeed
2024-07-09Merge pull request #1958 from secondlife/lua-appearance-listener-combinenat-goodspeed
Break out common `LLAppearanceMgr::wearOutfit(LLInventoryCategory*)` method
2024-07-09Merge branch 'release/luau-scripting' into lua-snapshotNat Goodspeed
2024-07-09Merge branch 'release/luau-scripting' into lua-appearance-listener-combineNat Goodspeed
2024-07-09Introduce LLSDParam<vector<T>> and LLSDParam<map<string, T>>.Nat Goodspeed
Use LLSDParam<uuid_vec_t> in LLAppearanceListener::wearItems() and detachItems() to build the vector of LLUUIDs from the passed LLSD array.
2024-07-09Merge pull request #1892 from secondlife/lua-appearance-listenernat-goodspeed
Lua appearance listener
2024-07-08The I/O manipulator std::quoted() must be passed to an ostream.Nat Goodspeed
2024-07-08Slightly simplify LLAppearanceListener::wearItems(), detachItems().Nat Goodspeed
2024-07-08Combine LLAppearanceMgr::wearOutfit() and wearOutfitByName()Nat Goodspeed
into new private wearOutfit(LLInventoryCategory*) method.
2024-07-08Quote "LLAppearance" op="wearOutfit" folder_id and folder_name argsNat Goodspeed
2024-07-08Lua api for Snapshot and demo scriptMnikolenko Productengine
2024-07-05clean up and rename demo scriptMnikolenko Productengine
2024-07-04Use llsd::toMap() to return LLSD maps from "LLAppearance" listener. Maxim Nikolenko
Use llsd::toMap() to return LLSD maps from "LLAppearance" listener.
2024-07-03Merge pull request #1925 from secondlife/roxie/webrtc-voice-cleanupRoxanne Skelly
Sync autobuild.xml up with release autobuild.
2024-07-03Sync autobuild.xml up with release autobuild.Roxie Linden
2024-07-03Use llsd::toMap() to return LLSD maps from "LLAppearance" listener.Nat Goodspeed
2024-07-03Merge branch 'release/luau-scripting' into lua-appearance-listener-tomapNat Goodspeed
2024-07-03Add llsd::toArray() and llsd::toMap() utility functions.Nat Goodspeed
These encapsulate looping over a C++ iterable (be it a sequence container or an associative container) and returning an LLSD array or map, respectively, derived from the C++ container. By default, each C++ container item is directly converted to LLSD. Also make LLSDParam<LLSD> slightly more efficient by using std::vector::emplace_back() instead of push_back(), which supports std::vector<std::unique_ptr>, so we need not use std::shared_ptr.
2024-07-03Merge pull request #1915 from secondlife/roxie/webrtc-voice-disable-morphingRoxanne Skelly
EnableVoiceMorphing should default to true
2024-07-02don't set voice font for vivoxRoxie Linden
2024-07-02EnableVoiceMorphing should default to trueRoxie Linden
2024-07-02Merge branch 'release/luau-scripting' into lua-appearance-listenerNat Goodspeed
2024-07-02Merge pull request #1878 from secondlife/lua-pathsnat-goodspeed
Add LuaAutorunPath, LuaCommandPath and LuaRequirePath settings.
2024-07-02Merge branch 'release/luau-scripting' into lua-appearance-listenerNat Goodspeed
2024-07-02Eliminate c_str() calls from LLControlGroup::loadFromFile() calls.Nat Goodspeed
Passing std::string::c_str() to a (const std::string&) function parameter is worse than clutter, it's pointless overhead: it forces the compiler to construct a new std::string instance, instead of passing a const reference to the one you already have in hand.
2024-07-02Merge branch 'release/luau-scripting' into lua-pathsNat Goodspeed
2024-07-02Make require() implementation honor LuaRequirePath setting.Nat Goodspeed
Remove LL_TEST special case from require() code (to search in the viewer's source tree). Instead, make llluamanager_test.cpp append to LuaRequirePath to get the same effect.
2024-07-02Promote LuaRemover from llluamanager.cpp to lua_function.h.Nat Goodspeed
2024-07-01Merge pull request #1871 from secondlife/lua_emplace_betternat-goodspeed
Streamline and robustify lua_emplace<T>() object cleanup.
2024-07-01build fixMaxim Nikolenko
2024-07-01Move error strings to strings.xml; pass wearable type and is_worn flag for ↵Mnikolenko Productengine
outfit items
2024-06-28Add LuaAutorunPath, LuaCommandPath and LuaRequirePath settings.Nat Goodspeed
Remove AutorunLuaScriptFile and the LLLUAmanager::runScriptOnLogin() method that checked it. Instead, iterate over LuaAutorunPath directories at viewer startup, iterate over *.lua files in each and implicitly run those. LuaCommandPath and LuaRequirePath are not yet implemented.
2024-06-28Work around MSVC limitation: explicitly call fsyspath::string().Nat Goodspeed
2024-06-28Give our fsyspath an operator std::string() conversion method.Nat Goodspeed
This is redundant (but harmless) on a Posix system, but it fills a missing puzzle piece on Windows. The point of fsyspath is to be able to interchange freely between fsyspath and std::string. Existing fsyspath could be constructed and assigned from std::string, and we could explicitly call its string() method to get a std::string, but an implicit fsyspath-to-string conversion that worked on Posix would trip us up on Windows. Fix that.
2024-06-27Work around VS refusal to initialize a stringNat Goodspeed
2024-06-27Introduce TypeTag<T> template whose int value differs for each T.Nat Goodspeed
This replaces type_tag<T>(), which searched and possibly extended the type_tags unordered_map at runtime. If we called lua_emplace<T>() from different threads, that would require locking type_tags. In contrast, the compiler must instantiate a distinct TypeTag<T> for every distinct T passed to lua_emplace<T>(), so each gets a distinct value at static initialization time. No locking is required; no lookup; no allocations. Add a test to llluamanager_test.cpp to verify that each distinct T passed to lua_emplace<T>() gets its own TypeTag<T>::value, and that each gets its own destructor -- but that different lua_emplace<T>() calls with the same T share the same TypeTag<T>::value and the same destructor.