summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2023-09-28DRTVWR-589: Call lua_pushstdstring() correctly.Nat Goodspeed
2023-09-28DRTVWR-589: Merge remote branch 'DRTVWR-589' into DRTVWR-589Nat Goodspeed
2023-09-28DRTVWR-589: Rename post_on_pump() to post_on()Nat Goodspeed
Sprinkle lua_checkstack() calls into functions that push to the Lua stack -- particularly important when traversing nested data structures of unknown depth! Tweak lua_pushllsd() handling of LLSD arrays.
2023-09-28DRTVWR-589: Add Lua-callable await_event() function.Nat Goodspeed
This suspends the calling Lua coroutine (and C++ coroutine on which the Lua state is running) until an event is received on the named LLEventPump. Returns the event. Pass optional timeout in seconds as a second argument. With no timeout, waits indefinitely. Pass optional timeout discriminator return value as a third argument (default nil).
2023-09-28DRTVWR-589: Try to override Lua's built-in print() with print_info()Nat Goodspeed
so Lua print() output will go to the viewer log, instead of getting discarded and possibly causing failures when the buffer fills and there's no open stdout file handle. Also name each Lua C++ coroutine with the description we give the LuaState instance.
2023-09-28DRTVWR-589 - support for rezing primsMnikolenko Productengine
2023-09-27DRTVWR-589: Always check regtype to avoid unref errorNat Goodspeed
2023-09-27DRTVWR-589: Use std::placeholders::_1, etc., for std::bind()Nat Goodspeed
2023-09-27DRTVWR-589: Fix compile errors in 354585d.Nat Goodspeed
2023-09-27DRTVWR-589: Add Lua-callable listen_events() function.Nat Goodspeed
Add LuaListener, based on LLLeap. LuaListener has an int key so the second and subsequent calls to listen_events() can find a previously-created one. LuaListener listens on its LLEventPump and arranges to call the specified Lua callback with any incoming event. It also instantiates an LLLeapListener. listen_events() locates the main thread for its state: we only want to call callbacks on the Lua chunk's main thread, not on a (possibly suspended) coroutine. It finds or creates a LuaListener and stashes it in the main thread's registry, along with the passed Lua callback function. Finally it returns the names of the LuaListener's reply pump and the LLLeapListener's command pump. Add LuaState RAII class to manage the lifespan of each lua_State we create. This encapsulates much of the boilerplate common to runScriptFile() and runScriptLine(). In addition, LuaState's destructor checks for a LuaListener key and, if found, destroys the referenced LuaListener. LuaState's constructor requires a description to clarify log messages. Move the checkLua() free function to a member of LuaState. This allows capturing an error message to pass to the C++ completion callback, if any. Use LuaState in runScriptFile() and runScriptLine(), synthesizing a suitable description in each case. Add print_debug() and print_info() logging calls, analogous to print_warning(). Add luaL_where() prefix to every such message. Add lua_pushstdstring(), like lua_tostdstring(): convenience for working with the pointer and length used by lua_pushlstring() and lua_tolstring(). Clean up return values of lua_functions. A lua_CFunction returns the number of return values it has pushed, so any 'void' lua_CFunction should pop its arguments and return 0.
2023-09-26DRTVWR-589: Extend timeouts for timing-sensitive pump & pipe fitness.Nat Goodspeed
2023-09-26DRTVWR-589: Fix typo due to old documentation.Nat Goodspeed
The function formerly known as luaL_typerror() is now luaL_typeerror().
2023-09-26DRTVWR-589: Collect int table keys in vector<int>, not set<int>.Nat Goodspeed
Given that we at least have a possibility of determining the length of a Lua table in advance, we might be able to populate a vector of keys with a single initial allocation. Even if Lua reports the length incorrectly, vector::push_back() is one of the bread-and-butter operations of the library, optimized to the extent possible. Inserting elements into a set seems more likely to incur allocations. Of course, we must then sort() the vector to determine its largest key value. Also document the requirement that we use a Lua runtime compiled for C++, that is, compiled to raise errors by C++ exceptions rather than by longjmp(). We rely on temporary stack objects being properly destroyed even if errors are raised. Conventionally, with lua_tomumble(L, index), 'index' refers to the stack index of the Lua object being converted to C++. For a Lua table, talk about table keys rather than table indexes to avoid confusing the maintainer.
2023-09-25DRTVWR-589: Fix Lua table to LLSD array conversion.Nat Goodspeed
The previous implementation assumed that the Lua length function would correctly report the number of entries in a table, and that traversing a table with integer keys would produce them in numeric order. Neither assumption is true. Instead, make a preliminary pass to validate and collect indexes, and to discover the highest integer index. Armed with that, we can construct a contiguous LLSD array of correct size, and populate it with a second pass. Also add Lua-callable post_on_pump(pumpname, datablob) function.
2023-09-23DRTVWR-589: Further timing-proof pipe and pump fitness test.Nat Goodspeed
2023-09-23DRTVWR-589: Merge remote branch 'DRTVWR-589' into DRTVWR-589Nat Goodspeed
2023-09-22DRTVWR-589: Introduce LuaFunction: simplified function registration.Nat Goodspeed
2023-09-22Merge branch 'DRTVWR-589' of github.com:/secondlife/viewer-private into ↵Brad Payne (Vir Linden)
DRTVWR-589
2023-09-22DRTVWR-589 - more demo.lua tweaksBrad Payne (Vir Linden)
2023-09-22DRTVWR-589: Make pump&pipe fitness tests less timing sensitive.Nat Goodspeed
2023-09-22SL-18837: Bump the granularity of WorkQueue timing tests.Nat Goodspeed
On a low-powered GitHub Mac runner, the system doesn't wake up as soon as it should, and we get spurious "too late" errors. Try a bigger time increment. (cherry picked from commit 045342ba29aae186e13c711bd4dd84377d4a7e43)
2023-09-22DRTVWR-589: Bump the time deltas for ThreadSafeSchedule.Nat Goodspeed
Use whole seconds rather than tenths of seconds, since apparently the TeamCity agent machine is having trouble waking up within tenths of seconds.
2023-09-22Merge branch 'DRTVWR-589' of github.com:/secondlife/viewer-private into ↵Brad Payne (Vir Linden)
DRTVWR-589
2023-09-22DRTVWR-589 - updates to demo.lua, take avs from libraryBrad Payne (Vir Linden)
2023-09-22DRTVWR-589: Existing lua_pushmumble() functions usually return void.Nat Goodspeed
2023-09-22DRTVWR-589: lua_objlen() removed, use lua_rawlen() insteadNat Goodspeed
2023-09-21DRTVWR-589: lua_objlen() only defined in luaconf.hNat Goodspeed
2023-09-21DRTVWR-589: Merge branch 'DRTVWR-589-llsd' into DRTVWR-589Nat Goodspeed
It seems TC only builds specific v-p branches, e.g. DRTVWR-589 but not DRTVWR-589-llsd.
2023-09-21DRTVWR-589: Add lua_tollsd() and lua_pushllsd() functions.Nat Goodspeed
2023-09-21DRTVWR-589 - allow adding branch to the menuMnikolenko Productengine
2023-09-21DRTVWR-589 - adding menu items to the top menuMnikolenko Productengine
2023-09-20DRTVWR-589 - added play animation and started to collect demo scriptsBrad Payne (Vir Linden)
2023-09-19Merge branch 'DRTVWR-589' of github.com:/secondlife/viewer-private into ↵Brad Payne (Vir Linden)
DRTVWR-589
2023-09-19DRTVWR-589 - click_child, limited support for pushing buttons in a floaterBrad Payne (Vir Linden)
2023-09-19lua support for notificationsMnikolenko Productengine
2023-09-18DRTVWR-589 - close_floater by nameBrad Payne (Vir Linden)
2023-09-15DRTVWR-589 - lua file browser added run button to allow re-running same scriptBrad Payne (Vir Linden)
2023-09-14DRTVWR-589 - lua support parameter to UI commandsBrad Payne (Vir Linden)
2023-09-14Merge branch 'DRTVWR-589' of github.com:/secondlife/viewer-private into ↵Brad Payne (Vir Linden)
DRTVWR-589
2023-09-14DRTVWR-589 - LUA support for UI commands, only if no parametersBrad Payne (Vir Linden)
2023-09-13autorun selected script after loginMnikolenko Productengine
2023-09-08allow to take snapshot; bind more funcs to call from luaMnikolenko Productengine
2023-09-06addcallback to display error msgMnikolenko Productengine
2023-09-05Initial prototype of embedded LUAMnikolenko Productengine
2023-08-23Increment viewer version to 6.6.15Vir Linden
following promotion of DRTVWR-582
2023-07-20SL-19948 Update estate manager and ban list limits to match new values from ↵Andrey Lihatskiy
simulator
2023-07-18Fixes for compatibility with new xcode 15 beta for any viewer branch after ↵Brad Linden
DRTVWR-577 (#232)
2023-07-18SL-19891 Make sure focusable elements clear focus on destructionAndrey Kleshchev
2023-07-17Merge pull request #285 from secondlife/marchcat/SL-19669marchcat-pe
INTL-490 Japanese Translation Update
2023-07-17Merge branch 'DRTVWR-580-maint-T' into DRTVWR-582-maint-UAndrey Lihatskiy