summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2024-05-15Merge branch 'main' into release/luau-scripting for last Maint X fix.Nat Goodspeed
2024-05-15Add trusted flag to UI callbacks, so not everything is accessible from the ↵Mnikolenko Productengine
script
2024-05-15#1457 Fix the tests on macAndrey Lihatskiy
(cherry picked from commit 82d713782529074b03720833038cb0df2b8bcffd)
2024-05-15Merge branch 'main' into release/luau-scripting for Maint X release.Nat Goodspeed
2024-05-15Manual whitespace fixes (fix_whitespace.py).Nat Goodspeed
2024-05-15Merge commit 'e7eced3' into release/luau-scripting: whitespace fix.Nat Goodspeed
2024-05-15Make leap.lua honor an "error" key in viewer response.Nat Goodspeed
2024-05-15Merge branch 'release/maint-x' into marchcat/x-mf-mergeAndrey Lihatskiy
2024-05-15Merge branch 'main' into marchcat/x-mf-mergeAndrey Lihatskiy
# Conflicts: # doc/contributions.txt # indra/newview/llfloaterimagepreview.cpp
2024-05-15Post-merge spaces fixAndrey Lihatskiy
2024-05-15Merge branch 'marchcat/w-whitespace' into marchcat/x-mf-mergeAndrey Lihatskiy
2024-05-14Increment viewer version to 7.1.8Nat Goodspeed
following promotion of secondlife/viewer #705: Maintenance X
2024-05-14Merge DRTVWR-591-maint-X to main on promotion of secondlife/viewer #705: ↵Nat Goodspeed
Maintenance X
2024-05-14Merge remote-tracking branch 'origin/main' into release/materials_featuretteBrad Linden
2024-05-14#1457 Fix the tests on macAndrey Lihatskiy
2024-05-14#1457 Temporarily disable the tests to unblock Maint X buildsAndrey Lihatskiy
This reverts commit 4329e95379173a304e91dd0b7513e936aeded380.
2024-05-13Run ReleaseOS builds, but only when a release page is requested.Nat Goodspeed
2024-05-13viewer-private#236 Don't block removal of marketplace foldersAndrey Kleshchev
Marketplace is not visible outside of own floater and that floater will do an extra warning when deleting listings that have additional data.
2024-05-13Merge branch 'main' into DRTVWR-591-maint-XAndrey Lihatskiy
# Conflicts: # autobuild.xml
2024-05-13Merge pull request #1373 from secondlife/marchcat/x-ws-mergeAndrey Lihatskiy
2024-05-11Fix syntax error in build.yaml to enable Windows ReleaseOSNat Goodspeed
2024-05-11Turn on GH Windows ReleaseOS buildNat Goodspeed
2024-05-10Fix up a few #includesNat Goodspeed
2024-05-10Merge pull request #1444 from secondlife/nat/slvoicenat-goodspeed
Update to S3-published GHA build of slvoice.
2024-05-10Fix latent access violation in ~LLEventPump() if LLEventPumps gone.Nat Goodspeed
Instead of making LLEventPumps an LLHandleProvider, and storing an LLHandle<LLEventPumps> in each LLEventPump instance, just make ~LLEventPump() query LLEventPumps::instanceExists() before calling instance().
2024-05-10Reapply slvoice package URLs with autobuild 3.9.5Nat Goodspeed
2024-05-09Add "Timers" LLEventAPI, actually a LazyEventAPI, for LL::Timers.Nat Goodspeed
Rename LL::Timers::scheduleRepeating() to scheduleEvery().
2024-05-09Bump up coroutine stack size: saw C00000FD test termination.Nat Goodspeed
(cherry picked from commit dc0b3aed4782e4e4835fd6b9d59d1d70b78be4a7)
2024-05-09Remove `creds=github` from slvoice platform entries.Nat Goodspeed
https://github.com/secondlife/autobuild/issues/46 Also remove temporary `continue-on-error` setting.
2024-05-09Merge branch 'release/luau-scripting' into lua-timersNat Goodspeed
2024-05-09Merge pull request #1419 from secondlife/lua-resizable-debugfloaternat-goodspeed
Copy xml files to scripts/lua; make Lua debug floater resizable
2024-05-08Merge remote-tracking branch 'origin/main' into release/materials_featuretteBrad Linden
2024-05-08Tweak a couple thingsNat Goodspeed
2024-05-08Merge branch 'nat/cleanup-timers' into lua-timers.Nat Goodspeed
In its GitHub PR build, the nat/cleanup-timers branch hit a (rare!) mathmisc_test failure. But since the test failure didn't report any of the randomly generated values that led to the failure, all we can do is shrug and rerun. Pull in the changeset from that branch that adds mathmisc_test reporting in case of another such failure.
2024-05-08On mathmisc_test failure with random values, report values.Nat Goodspeed
2024-05-08Fix for mirrors not functioning properly under water. (#1436)Jonathan "Geenz" Goodman
* #1165 Fix for clipping and culling for mirrors under water.
2024-05-08Merge branch 'nat/cleanup-timers' into lua-timers.Nat Goodspeed
2024-05-08Bump up coroutine stack size: saw C00000FD test termination.Nat Goodspeed
2024-05-08Even more mirror fixes. (#1429)Jonathan "Geenz" Goodman
#1271 Add support for mirrors that do not have avatars in them. It does this based on if the probe is set to dynamic or not. #1370 More optimization work to reduce GPU utilization. #1058 - Removed sim feature flag that was overriding mirrors enabled flags secondlife/viewer-private#128 - Locally cache the mirror probe #679 Add additional options to the build floater for mirror probes, including descriptions.
2024-05-08Fix llerror_test.cpp now that LL_ERRS() includes a stacktrace.Nat Goodspeed
2024-05-08Build both platforms on GitHub to help diagnose slvoice URL trouble.Nat Goodspeed
2024-05-07Merge remote-tracking branch 'origin/main' into nat/cleanup-timersNat Goodspeed
2024-05-07Refactor LLLater -> LL::Timers to accommodate nonpositive repeats.Nat Goodspeed
In the previous design, the tick() method ran each task exactly once. doPeriodically() was implemented by posting a functor that would, after calling the specified callable, repost itself at (timestamp + interval). The trouble with that design is that it required (interval > 0). A nonpositive interval would result in looping over any timers with nonpositive repetition intervals without ever returning from the tick() method. To avoid that, doPeriodically() contained an llassert(interval > 0). Unfortunately the viewer failed that constraint immediately at login, leading to the suspicion that eliminating every such usage might require a protracted search. Lifting that restriction required a redesign. Now the priority queue stores a callable returning bool, and the tick() method itself contains the logic to repost a recurring task -- but defers doing so until after it stops looping over ready tasks, ensuring that a task with a nonpositive interval will at least wait until the following tick() call. This simplifies not only doPeriodically(), but also doAtTime(). The previous split of doAtTime() into doAtTime1() and doAtTime2() was only to accommodate the needs of the Periodic functor class. Ditch Periodic. Per feedback from NickyD, rename doAtTime() to scheduleAt(), which wraps its passed nullary callable into a callable that unconditionally returns true (so tick() will run it only once). Rename the doAfterInterval() method to scheduleAfter(), which similarly wraps its nullary callable. However, the legacy doAfterInterval() free function remains. scheduleAfter() also loses its llassert(seconds > 0). Rename the doPeriodically() method to scheduleRepeating(). However, the legacy doPeriodically() free function remains. Add internal scheduleAtRepeating(), whose role is to accept both a specific timestamp and a repetition interval (which might be ignored, depending on the callable). scheduleAtRepeating() now contains the real logic to add a task. Rename getRemaining() to timeUntilCall(), hopefully resolving the question of "remaining what?" Expand the std::pair metadata stored in Timers's auxiliary unordered_map to a Metadata struct containing the repetition interval plus two bools to mediate deferred cancel() processing. Rename HandleMap to MetaMap, mHandles to mMeta. Defend against the case when cancel(handle) is reached during the call to that handle's callable. Meta::mRunning is set for the duration of that call. When cancel() sees mRunning, instead of immediately deleting map entries, it sets mCancel. Upon return from a task's callable, tick() notices mCancel and behaves as if the callable returned true to stop the series of calls. To guarantee that mRunning doesn't inadvertently remain set even in the case of an exception, introduce local RAII class TempSet whose constructor accepts a non-const variable reference and a desired value. The constructor captures the current value and sets the desired value; the destructor restores the previous value. Defend against exception in a task's callable, and stop calling that task. Use LOG_UNHANDLED_EXCEPTION() to report it.
2024-05-07Copy xml files to scripts/lua; make Lua debug floater resizableMnikolenko Productengine
2024-05-06Update to S3-published GHA build of slvoice.Nat Goodspeed
2024-05-03Log a stack trace on LL_ERRS().Nat Goodspeed
2024-05-03Prevent LLLater from thrashing on LLCallbackList.Nat Goodspeed
If there is exactly one doPeriodically() entry on LLLater, the mQueue entry is deleted before Periodic::operator()() is called. If Periodic's callable returns false, it reinstates itself on mQueue for a future time. That's okay, because the test for mQueue.empty(), and the consequent disconnect from LLCallbackList, happens only after that Periodic call returns. But at the moment Periodic reinstates itself on mQueue, mQueue happens to be empty. That alerts doAtTime2() to register itself on LLCallbackList -- even though at that moment it's already registered. Semantically that's okay because assigning to the LLLater's LLCallbackList::temp_handle_t should implicitly disconnect the previous connection. But it's pointless to create a new connection and disconnect the old one every time we call that lone Periodic. Add a test for mLive.connected(); that way if we already have an LLCallbackList connection, we retain it instead of replacing it with a new one.
2024-05-03Not every LLAvatarListUpdater subclass overrides tick().Nat Goodspeed
LLAvatarListUpdater is an LLEventTimer subclass meant to be a base class of still other subclasses. One would presume that every one of them should override tick(), since LLAvatarListUpdater::tick() is a no-op that simply asks to be called again. But making it abstract (=0) produces errors since at least one subclass does not define its own tick() method. This seems less than useful, since the specific tick() method is the whole point of deriving from LLEventTimer, but oh well.
2024-05-03Make LLLater store target time in mHandles; ditch 2nd unordered_map.Nat Goodspeed
Instead of maintaining a whole separate unordered_map to look up target times, make room in the HandleMap entry for the target time. There's still circularity, but the split into doAtTime1() and doAtTime2() resolves it: since doAtTime2() accepts the mHandles iterator created by doAtTime1(), doAtTime2() can simply store the new mQueue handle_type into the appropriate slot. Also sprinkle in a few more override keywords for consistency.
2024-05-02Introduce LLLater::getRemaining(handle).Nat Goodspeed
Some timer use cases need to know not only whether the timer is active, but how much time remains before it (next) fires. Introduce LLLater::mDoneTimes to track, for each handle, the timestamp at which it's expected to fire. We can't just look up the target timestamp in mQueue's func_at entry because there's no documented way to navigate from a handle_type to a node iterator or pointer. Nor can we store it in mHandles because of order dependency: we need the mDoneTimes iterator so we can bind it into the Periodic functor for doPeriodically(), but we need the mQueue handle to store in mHandles. If we could find the mQueue node from the new handle, we could update the func_at entry after emplace() -- but if we could find the mQueue node from a handle, we wouldn't need to store the target timestamp separately anyway. Split LLLater::doAtTime() into internal doAtTime1() and doAtTime2(): the first creates an mDoneTimes entry and returns an iterator, the second finishes creating new mQueue and mHandles entries based on that mDoneTimes entry. This lets doPeriodically()'s Periodic bind the mDoneTimes iterator. Then instead of continually incrementing an internal data member, it increments the mDoneTimes entry to set the next upcoming timestamp. That lets getRemaining() report the next upcoming timestamp rather than only the original one. Add LLEventTimer::isRunning() and getRemaining(), forwarding to its LLLater handle. Fix various LLEventTimer subclass references to mEventTimer.stop(), etc. Fix non-inline LLEventTimer subclass tick() overrides for bool, not BOOL. Remove LLAppViewer::idle() call to LLEventTimer::updateClass(). Since LLApp::stepFrame() already calls LLCallbackList::callFunctions(), assume we've already handled that every tick.