summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2022-06-21SL-17021: Fix triangle mesh overlays being generated twice when avatar ↵Cosmic Linden
animation is frozen
2022-06-21SL-17021: Templatize LLOctreeNode and related classes to allow for option to ↵Cosmic Linden
store elements in octrees as raw pointers. Use for faster allocation in LLVolumeFace::createOctree.
2022-06-21SL-17021: Clean up some unneeded member variables from lloctreeCosmic Linden
No performance difference measured
2022-06-21DRTVWR-564: Fix LLEventDispatcher::addMethod() for LazyEventAPI.Nat Goodspeed
A classic LLEventAPI subclass calls LLEventDispatcher::add() methods in its own constructor. At that point, addMethod() can reliably dynamic_cast its 'this' pointer to the new subclass. But because of the way LazyEventAPI queues up add() calls, they're invoked in the (new) LLEventAPI constructor itself. The subclass constructor body hasn't even started running, and LLEventDispatcher::addMethod()'s dynamic_cast to the LLEventAPI subclass returns nullptr. addMethod() claims the new subclass isn't derived from LLEventDispatcher, which is confusing since it is. It works to change addMethod()'s dynamic_cast to static_cast. Flesh out lazyeventapi_test.cpp. post() maps with "op" keys to actually try to engage the registered operation. Give the operation an observable side effect; use ensure_mumble() to verify. Also verify that LazyEventAPI has captured the subject LLEventAPI's metadata in a way we can retrieve.
2022-06-21DRTVWR-564: We don't need LLEventAPI to befriend LazyEventAPI.Nat Goodspeed
2022-06-21SL-17635 remove unused variablesMaxim Nikolenko
2022-06-20Cleanup dependency on ui libraries.Nicky
2022-06-20SL-17633 Crash at LLFocusableElementAndrey Kleshchev
2022-06-20SL-14181 Classifieds show 'loading' despite all data being ready after ↵Andrey Kleshchev
deleting a classified
2022-06-20SL-17624 In profiles 'Remove Photo' remains inactive after uploading a photoAndrey Kleshchev
2022-06-20SL-17585 Don't bother users with dialogs if we are already quitingAndrey Kleshchev
2022-06-18DRTVWR-564: WIP: Add LazyEventAPI and tests. Tests don't yet pass.Nat Goodspeed
LazyEventAPI is a registrar that implicitly instantiates some particular LLEventAPI subclass on demand: that is, when LLEventPumps::obtain() tries to find an LLEventPump by the registered name. This leverages the new LLEventPumps::registerPumpFactory() machinery. Fix registerPumpFactory() to adapt the passed PumpFactory to accept TypeFactory parameters (two of which it ignores). Supplement it with unregisterPumpFactory() to support LazyEventAPI instances with lifespans shorter than the process -- which may be mostly test programs, but still a hole worth closing. Similarly, add unregisterTypeFactory(). A LazyEventAPI subclass takes over responsibility for specifying the LLEventAPI's name, desc, field, plus whatever add() calls will be needed to register the LLEventAPI's operations. This is so we can (later) enhance LLLeapListener to consult LazyEventAPI instances for not-yet-instantiated LLEventAPI metadata, as well as enumerating existing LLEventAPI instances. The trickiest part of this is capturing calls to the various LLEventDispatcher::add() overloads in such a way that, when the LLEventAPI subclass is eventually instantiated, we can replay them in the new instance. LLEventAPI acquires a new protected constructor specifically for use by a subclass registered by a companion LazyEventAPI. It accepts a const reference to LazyEventAPIParams, intended to be opaque to the LLEventAPI subclass; the subclass must declare a constructor that accepts and forwards the parameter block to the new LLEventAPI constructor. The implementation delegates to the existing LLEventAPI constructor, plus it runs deferred add() calls. LLDispatchListener now derives from LLEventStream instead of containing it as a data member. The reason is that if LLEventPumps::obtain() implicitly instantiates it, LLEventPumps's destructor will try to destroy it by deleting the LLEventPump*. If the LLEventPump returned by the factory function is a data member of an outer class, that won't work so well. But if LLDispatchListener (and by implication, LLEventAPI and any subclass) is derived from LLEventPump, then the virtual destructor will Do The Right Thing. Change LLDispatchListener to *not* allow tweaking the LLEventPump name. Since the overwhelming use case for LLDispatchListener is LLEventAPI, accepting but silently renaming an LLEventAPI subclass would ensure nobody could reach it. Change LLEventDispatcher's use of std::enable_if to control the set of add() overloads available for the intended use cases. Apparently this formulation is just as functional at the method declaration point, while avoiding the need to restate the whole enable_if expression at the method definition point. Add lazyeventapi_test.cpp to exercise.
2022-06-18DRTVWR-564: Add LL::apply(): call function, passing args from tuple.Nat Goodspeed
This anticipates C++17's std::apply(), and in fact once we detect C++17, we'll just use that. But in C++14 we must still provide our own implementation.
2022-06-17SL-17614 Crash at settings_setup_listenersAndrey Kleshchev
Likely a corrupted install, warn user to reinstall viewer
2022-06-17SL-17585 Ensure nothing went wrong with installation during 'File' operationsAndrey Kleshchev
2022-06-17SL-17589 FIXED Camera does not zoom correctly when editing wearablesMnikolenko Productengine
2022-06-17SL-17585 Crash at LLAppViewer::initConfigurationAndrey Kleshchev
2022-06-16SL-17562 FIXED Grid Options changes position upon reopening of Build WindowMnikolenko Productengine
2022-06-16SL-17475 Fix wrong remap buffer sizeAndrey Kleshchev
2022-06-15DRTVWR-564: Merge branch 'pick-eventapi' into lazy-eventpumpNat Goodspeed
to pick up generalized LLEventAPI add() methods and softer error handling.
2022-06-15DRTVWR-558: Generalize LLEventDispatcher::add() constraints.Nat Goodspeed
Instead of checking whether an add() parameter is exactly LLSD or LLSDMap, check whether it's convertible to LLSD -- which handles those cases and more. (cherry picked from commit fa168c11f64771dadc5df86d14ca2f07eba3b8ba)
2022-06-15DRTVWR-558: LLEventAPI allows all LLEventDispatcher add() overloads.Nat Goodspeed
Previously, LLEventAPI intentionally hid all but one of the many add() overloads supported by its LLEventDispatcher base class. The reason was that certain of the add() methods take an optional fourth parameter that's an LLSD::Map describing the expected parameter structure, while others take a fourth templated parameter that's an instance getter callable. This led to ambiguity, especially when passed an LLSDMap instance that's convertible to LLSD but isn't literally LLSD. At the time, it was simpler to constrain the add() methods inherited from LLEventDispatcher. But by adding new std::enable_if constraints to certain LLEventDispatcher add() methods, we've resolved the ambiguities, so LLEventAPI subclasses can now use any add() overload (as claimed on the relevant Confluence page). LLEventDispatcher comments have always loftily claimed that an instance getter callable may return either a pointer or a reference, doesn't matter. But it does when trying to pass the getter's result to boost::fusion::push_back(): a reference must be wrapped with std::ref() while a pointer cannot be. std::ref(pointer) produces errors. Introduce LLEventDispatcher::invoker:: bindable() overloads to Do The Right Thing whether passed a pointer or a reference. (cherry picked from commit 743f487c2e123171c9fc6d5b84d768f1d856d569)
2022-06-15DRTVWR-558: Change LLEventDispatcher error action (also LLEventAPI).Nat Goodspeed
Originally the LLEventAPI mechanism was primarily used for VITA testing. In that case it was okay for the viewer to crash with LL_ERRS if the test script passed a bad request. With puppetry, hopefully new LEAP scripts will be written to engage LLEventAPIs in all sorts of interesting ways. Change error handling from LL_ERRS to LL_WARNS. Furthermore, if the incoming request contains a "reply" key, send back an error response to the requester. Update lleventdispatcher_test.cpp accordingly. (cherry picked from commit de0539fcbe815ceec2041ecc9981e3adf59f2806)
2022-06-15DRTVWR-564: WIP: add LLEventPumps::registerPumpFactory()Nat Goodspeed
and registerTypeFactory(). Untested. This will support registering just-in-time LLEventAPI instances, instantiated on demand.
2022-06-15SL-17584 Frame buffer object is now nessesary to run viewerAndrey Kleshchev
2022-06-15SL-17577 Allow setting Object for sale for L$0 from Object ProfileMnikolenko Productengine
2022-06-15SL-17584 Make setShaders crashes more informativeAndrey Kleshchev
2022-06-14SL-16182: Fix Mac compiler errorsCosmic Linden
2022-06-14SL-17475 Use a shadow indices buffer before simplificationAndrey Kleshchev
2022-06-14SL-16182: LLAudioDecodeMgr: Get general worker thread count directly from ↵Cosmic Linden
ThreadPool
2022-06-14SL-16182: Offload audio decoding from the main thread to the general work queue.Cosmic Linden
The work queue callback binds "this". This is deemed safe due to current dependencies, but see the associated comment in the return callback. There was some trial and error to get a this-binded lambda to compile. Due to LLVorbisDecodeState writing to disk off-thread, limit audio decodes proportional to general worker thread count. Guess the thread count for now.
2022-06-14SL-17483: Make ThreadPool inherit LLInstanceTrackerCosmic Linden
(cherry picked from commit 41d6a0e222241606c317281e2f0b211e16813dd5)
2022-06-14SL-17475 fix remap causing an assertAndrey Kleshchev
2022-06-13Merge branch 'DRTVWR-543-maint_cmake' of bitbucket.org:NickyD/viewer-cmake ↵Nicky
into DRTVWR-543-maint_cmake
2022-06-11SL-17475 Remap models before simplificationAndrey Kleshchev
2022-06-09SL-17532 Ability to pick inventory image as a profile imageAndrey Kleshchev
2022-06-08SL-17546 Fix 'release' configuration build testsAndrey Kleshchev
2022-06-08SL-17532 Cap image size for profile image previewAndrey Kleshchev
2022-06-08SL-17532 Make names selectableAndrey Kleshchev
2022-06-08SL-17552 Clear dirty flag when clicking Save buttonMnikolenko Productengine
2022-06-08SL-17541 show the message on macMnikolenko ProductEngine
2022-06-08SL-17541 Show the message that user is currently at maximum FPSMnikolenko Productengine
2022-06-07SL-17546 Do not launch updater for a non-interactible instanceAndrey Kleshchev
2022-06-07SL-17532 Apply padding after 'partner'Andrey Kleshchev
2022-06-07SL-17532 Cleanup from hasty commit (thanks to Henri for the prodding).Dave Parks
2022-06-07SL-15312 Mac build fixAndrey Kleshchev
2022-06-06SL-17532 Potential fix for some rigged mesh draw order issues.Dave Parks
2022-06-07SL-15312 Fixed group names not having paddingAndrey Kleshchev
Plus some focus and interactibility fixes
2022-06-06SL-15312 Larger image previewAndrey Kleshchev
At the moment without cursor handling
2022-06-06SL-15312 Header fixesAndrey Kleshchev
fixed 'remove_proto' being active even if there is no photo.