summaryrefslogtreecommitdiff
path: root/indra/llcommon
AgeCommit message (Collapse)Author
2021-10-07SL-16024: Adapt llinstancetracker_test.cpp to getInstance() change.Nat Goodspeed
2021-10-07SL-16024: Return shared_ptr from LLInstanceTracker::getInstance().Nat Goodspeed
It feels wrong to return a dumb LLInstanceTracker subclass* from getInstance() when we use std::shared_ptr and std::weak_ptr internally. But tweak consumers to use 'auto' or LLInstanceTracker::ptr_t in case we later revisit this decision. We did add a couple get() calls where it's important to obtain a dumb pointer.
2021-10-06SL-16024: Work around VS bug regarding base-class enum.Nat Goodspeed
2021-10-06SL-16024: Fix ThreadSafeSchedule::tryPopFor(), tryPopUntil().Nat Goodspeed
ThreadSafeSchedule::tryPopUntil() (and therefore tryPopFor()) was simply delegating to LLThreadSafeQueue::tryPopUntil(), with an adjusted timeout since we want to wake up as soon as the head item, if any, becomes ready. But then we have to loop back to retry the pop to actually deal with that head item. In addition, ThreadSafeSchedule::popWithTime() was spinning rather than properly blocking on a timed condition variable. Fixed.
2021-10-05SL-16024: Add ThreadSafeSchedule, a timestamped LLThreadSafeQueue.Nat Goodspeed
ThreadSafeSchedule orders its items by timestamp, which can be passed either implicitly or explicitly. The timestamp specifies earliest delivery time: an item cannot be popped until that time. Add initial tests. Tweak the LLThreadSafeQueue base class to support ThreadSafeSchedule: introduce virtual canPop() method to report whether the current head item is available to pop. The base class unconditionally says yes, ThreadSafeSchedule says it depends on whether its timestamp is still in the future. This replaces the protected pop_() overload accepting a predicate. Rather than explicitly passing a predicate through a couple levels of function call, use canPop() at the level it matters. Runtime behavior that varies depending on an object's leaf class is what virtual functions were invented for. Give pop_() a three-state enum return so pop() can distinguish between "closed and empty" (throws exception) versus "closed, not yet drained because we're not yet ready to pop the head item" (waits). Also break out protected tryPopUntil_() method, the body logic of tryPopUntil(). The public method locks the data structure, the protected method requires that its caller has already done so. Add chrono.h with a more full-featured LL::time_point_cast() function than the one found in <chrono>, which only converts between time_point durations, not between time_points based on different clocks.
2021-10-04SL-16024: Don't use a lambda as default arg for universal reference.Nat Goodspeed
Instead, break out a separate pop_() method that explicitly provides the lambda to the real pop_() implementation.
2021-10-04SL-16024: LLThreadSafeQueue enhancementsNat Goodspeed
Add LL::PriorityQueueAdapter, a wrapper for std::priority_queue to make its API more closely resemble std::queue for drop-in use as LLThreadSafeQueue's underlying QueueT container. Support move-only element types. Factor out some implementation redundancy: wrap actual push semantics as push_(), actual pop semantics as pop_(). push(), tryPush() and tryPushUntil() now call push_(); pop(), tryPop() and tryPopUntil() now call pop_(). Break out tryLock() and tryLockUntil() methods that, if they can lock, run the passed callable. Then tryPush(), tryPushUntil(), tryPop() and tryPopUntil() pass lambdas containing the meat of the original method body to tryLock() or tryLockUntil(), as appropriate.
2021-10-04Merged in DRTVWR-541 (pull request #717)Euclid Linden
Push autobuild updates made in DRTVWR-541 into -546
2021-10-04SL-16024: Introduce tuple.h with tuple_cons(), tuple_cdr().Nat Goodspeed
These functions allow prepending or removing an item at the left end of an arbitrary tuple -- for instance, to add a sequence key to a caller's data, then remove it again when delivering the original tuple.
2021-10-01SL-16024: Enhance LLThreadSafeQueue for use with WorkQueue.Nat Goodspeed
First, parameterize LLThreadSafeQueue's queue type. This allows us to substitute (e.g.) a std::priority_queue for a particular instance. Use std::queue for the default queue type, changing the operations invoked on the queue type from std::deque methods to std::queue methods. Rename published methods from (e.g.) pushFront() and popBack() to simple push() and pop(), retaining legacy names as aliases. Not only are the overt Front and Back unnecessary; they're the opposite of how std::queue uses std::deque or std::list, so they only confuse the reader. Break out tryPushUntil() method. We already use that logic internally to tryPushFor(), so it's just as easy to publish it as its own entry point. Add tryPopFor() and tryPopUntil() to allow limiting the time we'll wait for a queue item to become available.
2021-09-29Merge branch 'DRTVWR-546' of ssh://bitbucket.org/lindenlab/viewer into ↵Brad Payne (Vir Linden)
DRTVWR-546
2021-09-28SL-16040: _aligned_malloc() and _aligned_free() are Microsoft only.Nat Goodspeed
Fortunately we already have platform-independent wrappers in llmemory.h.
2021-09-28SL-16040: operator new() must never return nullptr.Nat Goodspeed
2021-09-28Revert "Merge branch 'c++17' into DRTVWR-522-maint"Andrey Lihatskiy
This reverts commit 203ea3a70a775a09cbbffb1740ab7c58f1780baa, reversing changes made to 8e3f0778863a5aa337d1148a243ea91d238a8ac5. # Conflicts: # indra/newview/llmachineid.cpp
2021-09-27SL-16093 Don't force the console window to be open on developer builds ↵Dave Parks
because it causes frame stalls while logging.
2021-09-22Merge remote-tracking branch 'remotes/origin/DRTVWR-541' into DRTVWR-546Runitai Linden
2021-09-22SL-16014: Fix typoPtolemy
2021-09-22Merge remote-tracking branch 'remotes/origin/DRTVWR-541' into DRTVWR-546Runitai Linden
# Conflicts: # indra/llcommon/linden_common.h
2021-09-22SL-16014: Add Tracy markup for LLEventFilterPtolemy
2021-09-22SL-16014: Add Tracy markup for LLSDPtolemy
2021-09-22SL-16014: Add macros for better markup in TracyPtolemy
2021-09-21SL-16027: Add Tracy OpenGL supportPtolemy
2021-09-16SL-16004 Fix bugsplat displaying wrong top functionAndrey Kleshchev
bugsplat shows KERNELBASE!RaiseException and flush() insread of forceErrorLLError, function crashes too early.
2021-09-15SL-15962 Add hooks for tracy memory profilingDave Houlton
2021-09-15SL-15961 Convert LLMeshRepository::mSkinMap into unordered_map and reduce ↵Runitai Linden
number of per-frame lookups to said map.
2021-09-15SL-15975 Add Tracy-only profile macros that are no-ops when Tracy is disabled.Runitai Linden
2021-09-15SL-15709: Windows: Include Tracy source directly; don't use a libraryPtolemy
2021-09-15SL-15742 - python 3 support for integration test scriptBrad Payne (Vir Linden)
2021-09-15SL-15975 Add Tracy-only profile macros that are no-ops when Tracy is disabled.Runitai Linden
2021-09-15SL-15962 Add hooks for tracy memory profilingDave Houlton
2021-09-14SL-15997 Windows 11 version detectionAndrey Kleshchev
2021-09-03SL-15709: Fix LLCommon not setting Tracy include directory and not linking ↵Ptolemy
to tracy.lib
2021-09-03SL-15709: Add Darwin supportPtolemy
2021-09-03SL-15709: CleanupPtolemy
2021-09-03SL-15709: Default to old fast timersPtolemy
2021-09-03SL-15709: Add Tracy support to viewerPtolemy
2021-09-03SL-15595 update viewer autobuild to import tracy libDave Houlton
2021-09-03SL-15709: Windows: Include Tracy source directly; don't use a libraryPtolemy
2021-09-03Merge branch 'DRTVWR-522-maint' into DRTVWR-545-maint-mixAndrey Lihatskiy
# Conflicts: # indra/newview/llappviewer.cpp # indra/newview/llappviewerwin32.cpp # indra/newview/llmachineid.cpp
2021-08-31SL-15709: Fix LLCommon not setting Tracy include directory and not linking ↵Ptolemy
to tracy.lib
2021-08-27Merge branch 'c++17' into DRTVWR-522-maintAndrey Lihatskiy
2021-08-26SL-15709: Add Darwin supportPtolemy
2021-08-26SL-15709: CleanupPtolemy
2021-08-12Merge branch 'master' into DRTVWR-520-apple-notarizationAndrey Lihatskiy
# Conflicts: # autobuild.xml # build.sh # indra/CMakeLists.txt # indra/newview/CMakeLists.txt # indra/newview/llappviewermacosx.cpp # indra/newview/llappviewerwin32.h # indra/newview/viewer_manifest.py # indra/win_crash_logger/llcrashloggerwindows.cpp
2021-07-30SL-15709: Default to old fast timersPtolemy
2021-07-28SL-15709: Add Tracy support to viewerPtolemy
2021-07-27SL-15595 update viewer autobuild to import tracy libDave Houlton
2021-07-20Merge branch 'master' into DRTVWR-521-maintAndrey Lihatskiy
# Conflicts: # autobuild.xml # indra/llcommon/llerror.cpp # indra/llui/llnotifications.h # indra/newview/llappviewer.cpp # indra/newview/llappviewermacosx.cpp
2021-07-19Merge with tip of Master after a Viewer releaseCallum Prentice
2021-07-19SL-15292 Voice's singleton shutdown before voice's coroutineAndrey Kleshchev