summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2024-05-02WIP: In llcallbacklist.h, add singleton LLLater for time delays.Nat Goodspeed
The big idea is to reduce the number of per-tick callbacks asking, "Is it time yet? Is it time yet?" We do that for LLEventTimer and LLEventTimeout. LLLater presents doAtTime(LLDate), with doAfterInterval() and doPeriodically() methods implemented using doAtTime(). All return handles. The free functions doAfterInterval() and doPeriodically() now forward to the corresponding LLLater methods. LLLater also presents isRunning(handle) and cancel(handle). LLLater borrows the tactic of LLEventTimer: while there's at least one running timer, it registers an LLCallbackList tick() callback to service ready timers. But instead of looping over all of them asking, "Are you ready?" it keeps them in a priority queue ordered by desired timestamp, and only touches those whose timestamp has been reached. Also, it honors a maximum time slice: once the ready timers have run for longer than the limit, it defers processing other ready timers to the next tick() call. The intent is to consume fewer cycles per tick() call, both by the management machinery and the timers themselves. Revamp LLCallbackList to accept C++ callables in addition to (classic C function pointer, void*) pairs. Make addFunction() return a handle (different than LLLater handles) that can be passed to a new deleteFunction() overload, since std::function instances can't be compared for equality. In fact, implement LLCallbackList using boost::signals2::signal, which provides almost exactly what we want. LLCallbackList continues to accept (function pointer, void*) pairs, but now we store a lambda that calls the function pointer with that void*. It takes less horsing around to create a C++ callable from a (function pointer, void*) pair than the other way around. For containsFunction() and deleteFunction(), such pairs are the keys for a lookup table whose values are handles. Instead of having a static global LLCallbackList gIdleCallbacks, make LLCallbackList an LLSingleton to guarantee initialization. For backwards compatibility, gIdleCallbacks is now a macro for LLCallbackList::instance(). Move doOnIdleOneTime() and doOnIdleRepeating() functions to LLCallbackList methods, but for backwards compatibility continue providing free functions. Reimplement LLEventTimer using LLLater::doPeriodically(). One implication is that LLEventTimer need no longer be derived from LLInstanceTracker, which we used to iterate over all instances every tick. Give it start() and stop() methods, since some subclasses (e.g. LLFlashTimer) used to call its member LLTimer's start() and stop(). Remove updateClass(): LLCallbackList::callFunctions() now takes care of that. Remove LLToastLifeTimer::start() and stop(), since LLEventTimer now provides those. Remove getRemainingTimeF32(), since LLLater does not (yet) provide that feature. While at it, make LLEventTimer::tick() return bool instead of BOOL, and change existing overrides. Make LLApp::stepFrame() call LLCallbackList::callFunctions() instead of LLEventTimer::updateClass(). We could have refactored LLEventTimer to use the mechanism now built into LLLater, but frankly the LLEventTimer API is rather clumsy. You MUST derive a subclass and override tick(), and you must instantiate your subclass on the heap because, when your tick() override returns false, LLEventTimer deletes its subclass instance. The LLLater API is simpler to use, and LLEventTimer is much simplified by using it. Merge lleventfilter.h's LLEventTimeoutBase into LLEventTimeout, and likewise merge LLEventThrottleBase into LLEventThrottle. The separation was for testability, but now that they're no longer based on LLTimer, it becomes harder to use dummy time for testing. Temporarily skip tests based on LLEventTimeoutBase and LLEventThrottleBase. Instead of listening for LLEventPump("mainloop") ticks and using LLTimer, LLEventTimeout now uses LLLater::doAfterInterval(). Instead of LLTimer and LLEventTimeout, LLEventThrottle likewise now uses LLLater::doAfterInterval(). Recast a couple local LLEventTimeout pre-lambda callable classes with lambdas. Dignify F64 with a new typedef LLDate::timestamp. LLDate heavily depends on that as its base time representation, but there are those who question use of floating-point for time. This is a step towards insulating us from any future change.
2024-05-02Merge pull request #1391 from secondlife/with-testsnat-goodspeed
Turn on LL_TESTS for CI builds.
2024-05-02Merge pull request #1389 from secondlife/brad/fix-gltfmaterial-testsnat-goodspeed
brad/fix gltfmaterial tests
2024-05-02Update LLGLTFMaterial tests for changes introduced in SL-20523Brad Linden
also correct member packing to match server side
2024-05-02Merge pull request #1376 from secondlife/project/channel_by_branchVir Linden
Project/channel by branch
2024-05-02Update build.yamlVir Linden
2024-05-02Merge pull request #1352 from secondlife/lua-change-debug-settingMaxim Nikolenko
Allow changing debug settings via Lua script
2024-05-02Update build.yamlVir Linden
2024-05-02Turn on LL_TESTS for CI builds.Nat Goodspeed
2024-05-02Raise Lua error if LLViewerControlListener response contains oneMnikolenko Productengine
2024-05-01Merge pull request #1374 from secondlife/signal/editorconfigSignal Linden
Add editorconfig
2024-05-01#1382 Fix for scrubbing occlusion channel of ORM map (#1383)RunitaiLinden
2024-05-01Use LLViewerControlListener to access debug settingsMnikolenko Productengine
2024-05-01trim trailing whitespaceVir Linden
2024-05-01set viewer channel from branchVir Linden
2024-05-01Merge branch 'main' into project/channel_by_branchVir Linden
2024-05-01Add editorconfigBennett Goble
Provide a basic editorconfig file with this repository's defaults.
2024-05-01Merge branch 'marchcat/w-whitespace' into marchcat/x-ws-mergeAndrey Lihatskiy
2024-05-01#824 Don't fix tabs in files with no tabsAndrey Lihatskiy
2024-05-01#824 Add c,py,glsl to the script's default file typesAndrey Lihatskiy
2024-04-30Fix for SL-20652 shadows on mac breaking alpha blended objects. (#1264)Brad Linden
* Fix for SL-20652 shadows on mac breaking alpha blended objects. fix secondlife/jira-archive-internal#71030 * clean up surrounding indentation * Skip unnecessary casting * Clean up LLGLSLShader::sIndexedTextureChannels usage and improve fix for SL-20652
2024-04-30Fix for black moon. (#1369)RunitaiLinden
2024-04-30Merge pull request #1341 from secondlife/vp-230cosmic-linden
secondlife/viewer-private#230: Amend terrain loading test plan
2024-04-30Update terrain_loading.mdDan Linden
Add more details to Behavior overview.
2024-04-29Use s3 hosted slvoice autobuild dependenciesBennett Goble
Pull SLVoice from s3 so that the OSS build configurations work.
2024-04-29Adapt llimageworker_test for updated virtual method API.Nat Goodspeed
This was a broken test that got all the way to viewer release and the main branch. (cherry picked from commit a33a9d29380e6c1a0a9cc539be309d47adef4acf)
2024-04-29#886 Fix for crash in LLBumpImageList when connecting to a simulator with ↵RunitaiLinden
different feature flags (#1345)
2024-04-29Allow getting the value of debug settings via Lua scriptMnikolenko Productengine
2024-04-29Allow changing debug settings via Lua scriptMnikolenko Productengine
2024-04-29#824 Process source files in bulk: replace tabs with spaces, convert CRLF to ↵Andrey Lihatskiy
LF, and trim trailing whitespaces as needed
2024-04-29#824 Add a script to convert tabs to spaces in the code filesAndrey Lihatskiy
2024-04-29#824 Add indent_with_spaces hook for source filesAndrey Lihatskiy
2024-04-26secondlife/viewer-private#230: Amend terrain loading test planCosmic Linden
2024-04-26#1325 Fix for GLTF overrides sometimes not showing up. (#1340)RunitaiLinden
2024-04-26Merge pull request #1337 from secondlife/v-1184cosmic-linden
Cached minimap textures still using extra memory/loading still not reliable
2024-04-26secondlife/viewer#1184: Remove logspamCosmic Linden
2024-04-26Remove unused newview/llcallbacklist.cpp: real one is in llcommon.Nat Goodspeed
newview/llcallbacklist.cpp has no corresponding .h file, it isn't referenced by newview/CMakeLists.txt, and its removal doesn't affect the build. See llcommon/llcallbacklist.{h,cpp} for the real functionality. (cherry picked from commit 8e53d6ff4c6594f014f456b0ba9ebf86ac91f6bc)
2024-04-25secondlife/viewer#1184: Fix mac buildCosmic Linden
2024-04-25secondlife/viewer#1184: Discourage use of forceToRefetchTextureCosmic Linden
2024-04-25secondlife/viewer#1184: Use more robust/memory-friendly setLoadedCallback ↵Cosmic Linden
for minimap gen. Fix some emissive maps.
2024-04-26viewer#1308 LLFloaterView::restoreAll CrashAndrey Kleshchev
2024-04-25Adapt llimageworker_test for updated virtual method API.Nat Goodspeed
This was a broken test that got all the way to viewer release and the main branch. (cherry picked from commit a33a9d29380e6c1a0a9cc539be309d47adef4acf)
2024-04-25Resolve WorkQueue::waitForResult() merge glitch.Nat Goodspeed
2024-04-25Add missing #include "stringize.h"Nat Goodspeed
Also change from boost::hof::is_invocable() to std::is_invocable().
2024-04-25Adapt llimageworker_test for updated virtual method API.Nat Goodspeed
This was a broken test that got all the way to viewer release and the main branch.
2024-04-25Merge Maint YZ branch 'main' into DRTVWR-588-cleanup-timersNat Goodspeed
2024-04-24Merge 'main' into release/luau-scripting on promotion of Maint YZNat Goodspeed
2024-04-24Merge pull request #1323 from secondlife/mainVir Linden
Update from main
2024-04-24viewer#1309 Handle deprecated avatar properties messagesAndrey Kleshchev
since server still sends those in some cases
2024-04-24Merge remote-tracking branch 'origin/main' into release/materials_featuretteBrad Linden