summaryrefslogtreecommitdiff
path: root/indra
AgeCommit message (Collapse)Author
2024-03-21WIP: Add fiber.lua module and use in leap.lua and WaitQueue.lua.Nat Goodspeed
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().
2024-03-20secondlife/viewer#1027: Fix noise on transparent PBR materials on minimapCosmic Linden
2024-03-20LLLuaFloater code clean upMnikolenko Productengine
2024-03-20Merge pull request #1024 from secondlife/vi-83cosmic-linden
secondlife/viewer-issues#83: Disallow alpha blend/double sided from PBR terrain
2024-03-20secondlife/viewer-issues#83: Add TODO/assert for deciding when to allow ↵Cosmic Linden
candidate future extensions on PBR terrain
2024-03-20secondlife/viewer-issues#83, secondlife/viewer-issues#82: Combine terrain ↵Cosmic Linden
save error notifications
2024-03-20secondlife/viewer-issues#83, secondlife/viewer-issues#82: Mark ↵Cosmic Linden
texture/material terrain save notifications as unique, to prevent duplicates
2024-03-20secondlife/viewer-issues#83: Disallow alpha blend/double sided from PBR terrainCosmic Linden
2024-03-20Merge pull request #1019 from secondlife/vi-82cosmic-linden
secondlife/viewer-issues#82: Don't allow transparent texture terrain
2024-03-19secondlife/viewer-issues#82: Don't allow transparent texture terrainCosmic Linden
2024-03-19search xml file in the lib, if path is not full; add test lua floater scriptsMnikolenko Productengine
2024-03-18secondlife/viewer#1006: Move blank material constant to indra_constants.hCosmic Linden
2024-03-18viewer#961 Add a notification appearing when user tries to insert a ↵Alexander Gavriliuk
disallowed character
2024-03-18update to use new lua leap; initial support for scroll listMnikolenko Productengine
2024-03-15secondlife/viewer#1006: Prevent PBR terrain material swatches from being ↵Cosmic Linden
null. Default to blank material for now.
2024-03-15secondlife/viewer#1006: Don't send terrain update if validation failsCosmic Linden
2024-03-15Allow fading emojis characters in fading text.Henri Beauchamp
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.
2024-03-15Merge branch 'release/luau-scripting' into lua-floaterMnikolenko Productengine
2024-03-15Revert 326055ba82c22fedde186c6a56bafd4fe87e613a after ↵Henri Beauchamp
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.
2024-03-15secondlife/viewer#760: Fix terrain texture validator not respecting ↵Cosmic Linden
RenderMaxTextureResolution
2024-03-15SL-18721 Restore release behaviorAndrey Kleshchev
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.
2024-03-15set commit callback for all buttons including minimize, maximizeMnikolenko Productengine
2024-03-14Add preliminary Lua viewer API modules, with test scripts.Nat Goodspeed
2024-03-14Fix a bug in leap.generate().Nat Goodspeed
We weren't passing the WaitForReqid instance to WaitForReqid:wait(). Also remove 'reqid' from responses returned by leap.request() and generate().
2024-03-14Merge pull request #993 from secondlife/v-988cosmic-linden
secondlife/viewer#988: Fix terrain composition label getting cut off
2024-03-14SL-20288 Fix renamingAndrey Kleshchev
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
2024-03-14Send additional events to the script when specifiedMnikolenko Productengine
2024-03-13Merge pull request #992 from secondlife/vi-76cosmic-linden
secondlife/viewer#76: Change wording of terrain blending documentation when using materials
2024-03-13secondlife/viewer#988: Fix terrain composition label getting cut offCosmic Linden
2024-03-14Proposal #2 to restore how UI/dialogs used to render by prioritizing ↵Henri Beauchamp
fallback fonts. With the emojis support, a new font was added, which not only provides emojis but also fancy colorful replacements for UTF-8 characters that used to be supported by our fallback (monochrome) fonts: this causes discrepancies and unwanted/undesired changes in scripted objects menus (e.g. an empty circle or square may render as a black, full one, a heart may render red instead of white), not to mention the larger font size used by the emoji characters... This patch restores the aspect of such menus/dialogs/UI elements with UTF-8 characters that *are* supported by the usual fallback fonts (fonts which may also vary from one viewer to another, and from one OS to another), so that everything keeps working/rendering as it always did so far, while not impairing the use of new colorful emojis. This second proposal ensures that: - "genuine" emojis (in the 0x1f000-0x1ffff range), will *always* be rendered using the new emojis font (this solves, for example, the monochrome "yellow faces" issue seen with some characters in my first proposal). - Special UTF-8 characters (in the 0x2000-0x32FF range) which have been used by scripters so far, will render as they used to, using the monochrome fallback fonts (this repairs scripted dialogs menus). - Remaining special characters, that do not have a corresponding glyph in the monochrome font, but do have one in the emojis font, will use the latter font to render. It also got the nice side-effect of removing the dependency on the ICU4C library. Note however that the recent commit: https://github.com/secondlife/viewer/commit/326055ba82c22fedde186c6a56bafd4fe87e613a will need to be reverted to allow this patch to actually fix scripted dialogs. Also, some cleanup might be needed in skins/default/xui/*/emoji_characters.xml to remove from it the special UTF-8 characters that will no longer be rendered with fanciful colors, but instead with the monochrome font glyphs.
2024-03-13secondlife/viewer#76: Change wording of terrain blending documentation when ↵Cosmic Linden
using materials
2024-03-13Merge pull request #978 from secondlife/brad/926-hdri-local-openexr-static-linkBrad Linden
secondlife/viewer#926 chage openexr lib to use static link on mac
2024-03-13Add tests for leap.request(). Use new coro.lua module.Nat Goodspeed
request() test ensures that the response for a given reqid is routed to the correct coroutine even when responses arrive out of order.
2024-03-13util.join() is unnecessary: luau provides table.concat().Nat Goodspeed
2024-03-13Fix minor bugs. Sprinkle in commented-out diagnostic output.Nat Goodspeed
2024-03-13Introduce a resume() wrapper to surface coroutine errors.Nat Goodspeed
2024-03-13Make a coro.resume() wrapper and use in coro.launch(), coro.yield().Nat Goodspeed
coro.resume() checks the ok boolean returned by coroutine.resume() and, if not ok, propagates the error. This avoids coroutine errors getting swallowed.
2024-03-13#975 Add RenderHDRISplitScreen debug setting (#976)RunitaiLinden
* #975 Add RenderHDRISplitScreen debug setting * Create hdri_local_preview.md
2024-03-13983 add debug setting to control the maximum download resolution (#986)RunitaiLinden
* Create RenderMaxTextureResolution.md * #983 Add RenderMaxTextureResolution setting. Incidental crash fix.
2024-03-13Merge pull request #985 from secondlife/v-906cosmic-linden
secondlife/viewer#906: Bump PBR terrain scale, decreasing texel density by 1/2
2024-03-13secondlife/viewer#906: Bump PBR terrain scale, decreasing texel density by 1/2Cosmic Linden
2024-03-12secondlife/viewer#926 switching cmake config for mac openexr to use new ↵Brad Linden
static libs
2024-03-12SL-20735 Fix blury profile pictures #2 (#963)Andrey Kleshchev
Scaling was added to thumbnail images as a measure of memory preservation and said scaling doesn't work well when larger images are needed so had to remake profile images to no longer use thumbnails.
2024-03-12#965 Fix for EEP skies being too brightRunitaiLinden
2024-03-12Initial implementation of LLLuaFloaterMnikolenko Productengine
2024-03-11Add coro.lua to aggregate created coroutines.Nat Goodspeed
2024-03-11Lua already has a conventional cheap test for empty table.Nat Goodspeed
2024-03-11Add llluamanager_test test exercising leap.WaitFor.Nat Goodspeed
2024-03-11Polish up leap.lua to make it pass tests.Nat Goodspeed
Add usage comments at the top. Add leap.done() function. Make leap.process() honor leap.done(), also recognize an incoming nil from the viewer to mean it's all done. Support leap.WaitFor with nil priority to mean "don't self-enable." This obviates leap.WaitForReqid:enable() and disable() overrides that do nothing. Add diagnostic logging.
2024-03-11Make WaitQueue:_wait_waiters() skip dead coroutines.Nat Goodspeed
That is, skip coroutines that have gone dead since they decided to wait on Dequeue().