Age | Commit message (Collapse) | Author |
|
|
|
|
|
Initial implementation of LLLuaFloater
|
|
|
|
This fixes a hang if the Lua script explicitly calls fiber.run() before
LuaState::expr()'s implicit fiber.run() call.
Make fiber.run() remove the calling fiber from the ready list to avoid an
infinite loop when all other fibers have terminated: "You're ready!" "Okay,
yield()." "You're ready again!" ... But don't claim it's waiting, either,
because then when all other fibers have terminated, we'd call idle() in the
vain hope that something would make that one last fiber ready.
WaitQueue:_wake_waiters() needs to wake waiting fibers if the queue's not
empty OR it's been closed.
Introduce leap.WaitFor:close() to close the queue gracefully so that a looping
waiter can terminate, instead of using WaitFor:exception(), which stops the
whole script once it propagates. Make leap's cleanup() function call close().
Streamline fiber.get_name() by using 'or' instead of if ... then.
Streamline fiber.status() and fiber.set_waiting() by using table.find()
instead of a loop.
|
|
|
|
secondlife/viewer#1027: Fix noise on transparent PBR materials on minimap
|
|
|
|
|
|
fiber.lua goes beyond coro.lua in that it distinguishes ready suspended
coroutines from waiting suspended coroutines, and presents a rudimentary
scheduler in fiber.yield(). yield() can determine that when all coroutines are
waiting, it's time to retrieve the next incoming event from the viewer.
Moreover, it can detect when all coroutines have completed and exit without
being explicitly told.
fiber.launch() associates a name with each fiber for debugging purposes.
fiber.get_name() retrieves the name of the specified fiber, or the running fiber.
fiber.status() is like coroutine.status(), but can return 'ready' or 'waiting'
instead of 'suspended'.
fiber.yield() leaves the calling fiber ready, but lets other ready fibers run.
fiber.wait() suspends the calling fiber and lets other ready fibers run.
fiber.wake(), called from some other coroutine, returns the passed fiber to
ready status for a future call to fiber.yield().
fiber.run() drives the scheduler to run all fibers to completion.
If, on completion of the subject Lua script, LuaState::expr() detects that the
script loaded fiber.lua, it calls fiber.run() to finish running any dangling
fibers. This lets a script make calls to fiber.launch() and then just fall off
the end, leaving the implicit fiber.run() call to run them all.
fiber.lua is designed to allow the main thread, as well as explicitly launched
coroutines, to make leap.request() calls. This part still needs debugging.
The leap.lua module now configures a fiber.set_idle() function that honors
leap.done(), but calls get_event_next() and dispatches the next incoming event.
leap.request() and generate() now leave the reqid stamp in the response. This
lets a caller handle subsequent events with the same reqid, e.g. for
LLLuaFloater.
Remove leap.process(): it has been superseded by fiber.run().
Remove leap.WaitFor:iterate(): unfortunately that would run afoul of the Luau
bug that prevents suspending the calling coroutine within a generic 'for'
iterator function.
Make leap.lua use weak tables to track WaitFor objects.
Make WaitQueue:Dequeue() call fiber.wait() to suspend its caller when the queue
is empty, and Enqueue() call fiber.wake() to set it ready again when a new
item is pushed.
Make llluamanager_test.cpp's leap test script use the fiber module to launch
coroutines, instead of the coro module. Fix a bug in which its drain()
function was inadvertently setting and testing the global 'item' variable
instead of one local to the function. Since some other modules had the same
bug, it was getting confused.
Also add printf.lua, providing a printf() function. printf() is short for
print(string.format()), but it can also print tables: anything not a number or
string is formatted using the inspect() function.
Clean up some LL_DEBUGS() output left over from debugging lua_tollsd().
|
|
|
|
|
|
|
|
secondlife/viewer-issues#83: Disallow alpha blend/double sided from PBR terrain
|
|
candidate future extensions on PBR terrain
|
|
save error notifications
|
|
texture/material terrain save notifications as unique, to prevent duplicates
|
|
|
|
secondlife/viewer-issues#82: Don't allow transparent texture terrain
|
|
|
|
|
|
secondlife/viewer#1006: Review feedback: Move blank material constant to indra_constants.h
|
|
|
|
|
|
secondlife/viewer#1006: Prevent setting PBR terrain material swatches to null
|
|
|
|
|
|
disallowed character
|
|
|
|
Fix github actions dependency deprecations
|
|
null. Default to blank material for now.
|
|
|
|
|
|
secondlife/viewer#760: Update test plan for terrain texture max resolution validation
|
|
validation
|
|
In the recent emojis implementation, the text color alpha is ignored
(emojis are always rendered with an opaque white color), causing them
to fail and fade properly with the rest of the text they are printed
with.
This trivial patch fixes this issue.
|
|
secondlife/viewer#760: Fix terrain texture validator not respecting 2k texture feature flag
|
|
|
|
Add leap.lua module to mediate LEAP request/response viewer interactions.
|
|
2f452d06e6964b0edf26b0b3f6eaa156e3fa2d48
It is necessary to revert commit 326055ba82c22fedde186c6a56bafd4fe87e613a
for 2f452d06e6964b0edf26b0b3f6eaa156e3fa2d48 to work its magic and repair
script dialogs so that they render as they used to before the emojis fonts
introduction.
Note that this revert won't prevent to use the new emojis should scripters
want them in their new scripted dialogs: it just ensures existing scripted
dialogs using special UTF-8 characters (which are not genuine emojis) will
render as they used to, using the monochrome fallback fonts.
|
|
RenderMaxTextureResolution
|
|
Closing window correctly caused a significant amount of logout freezes
with no known reproes. Temporarily returning to old behavior were thread
was killes without closing window and will reenable in later maints to
hopefully get a scenario or at least more data of what is causing the
freeze.
|
|
|
|
|
|
We weren't passing the WaitForReqid instance to WaitForReqid:wait().
Also remove 'reqid' from responses returned by leap.request() and generate().
|
|
secondlife/viewer#988: Fix terrain composition label getting cut off
|
|
getChangedIDs is only accurate in scope of observer's callback, don't
use it onIdle.
getObject call made no sense, item was warrantied to be
LLViewerInventoryItem and would only be AT_CATEGORY if it is a link,
making the following cast to a category dangerous
|
|
|
|
secondlife/viewer#76: Change wording of terrain blending documentation when using materials
|
|
|