summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2020-03-25DRTVWR-494: Defend LLInstanceTracker against multi-thread usage.Nat Goodspeed
The previous implementation went to some effort to crash if anyone attempted to create or destroy an LLInstanceTracker subclass instance during traversal. That restriction is manageable within a single thread, but becomes unworkable if it's possible that a given subclass might be used on more than one thread. Remove LLInstanceTracker::instance_iter, beginInstances(), endInstances(), also key_iter, beginKeys() and endKeys(). Instead, introduce key_snapshot() and instance_snapshot(), the only means of iterating over LLInstanceTracker instances. (These are intended to resemble functions, but in fact the current implementation simply presents the classes.) Iterating over a captured snapshot defends against container modifications during traversal. The term 'snapshot' reminds the coder that a new instance created during traversal will not be considered. To defend against instance deletion during traversal, a snapshot stores std::weak_ptrs which it lazily dereferences, skipping on the fly any that have expired. Dereferencing instance_snapshot::iterator gets you a reference rather than a pointer. Because some use cases want to delete all existing instances, add an instance_snapshot::deleteAll() method that extracts the pointer. Those cases used to require explicitly copying instance pointers into a separate container; instance_snapshot() now takes care of that. It remains the caller's responsibility to ensure that all instances of that LLInstanceTracker subclass were allocated on the heap. Replace unkeyed static LLInstanceTracker::getInstance(T*) -- which returned nullptr if that instance had been destroyed -- with new getWeak() method returning std::weak_ptr<T>. Caller must detect expiration of that weak_ptr. Adjust tests accordingly. Use of std::weak_ptr to detect expired instances requires engaging std::shared_ptr in the constructor. We now store shared_ptrs in the static containers (std::map for keyed, std::set for unkeyed). Make LLInstanceTrackerBase a template parameterized on the type of the static data it manages. For that reason, hoist static data class declarations out of the class definitions to an LLInstanceTrackerStuff namespace. Remove the static atomic sIterationNestDepth and its methods incrementDepth(), decrementDepth() and getDepth(), since they were used only to forbid creation and destruction during traversal. Add a std::mutex to static data. Introduce an internal LockStatic class that locks the mutex while providing a pointer to static data, making that the only way to access the static data. The LLINSTANCETRACKER_DTOR_NOEXCEPT macro goes away because we no longer expect ~LLInstanceTracker() to throw an exception in test programs. That affects LLTrace::StatBase as well as LLInstanceTracker itself. Adapt consumers to the new LLInstanceTracker API.
2020-03-25DRTVWR-494: Show copy-paste-friendly env vars and test command.Nat Goodspeed
Moderately often I want to copy the (long) integration test program path from build output and rerun the test program by hand. But typically we need environment variables set as well so it can find its dynamic libraries. This has resulted in my copying parts of several lines of build output, then pasting to a command prompt, then hand-tweaking the pasted text so it makes sense as a command. Streamline run_build_test.py output so less hand-tweaking is needed.
2020-03-24Merged in davep/DRTVWR-440 (pull request #45)Dave Parks
Davep/DRTVWR-440
2020-03-24Merge cleanupRunitai Linden
2020-03-24Merge branch 'DRTVWR-440' of bitbucket.org:lindenlab/viewer into ↵Runitai Linden
davep/DRTVWR-440
2020-03-24Fix for bad fullbright shiny shininess values and inconsistency between ↵Runitai Linden
materialF and fullbrightShinyF
2020-03-20WIP - Make EEP match production.Runitai Linden
2020-03-19SL-12607 FMOD LogoAndrey Kleshchev
2020-03-19Merged in SL-11589 (pull request #44)Michael Pohoreski
SL-11589 Approved-by: Dave Houlton <euclid@lindenlab.com>
2020-03-19Merged in SL-12574_tweak_brightness (pull request #43)Michael Pohoreski
SL-12574 tweak brightness Approved-by: Dave Houlton <euclid@lindenlab.com>
2020-03-19SL-11445 Fix crash caused by wind cleanupAndrey Kleshchev
2020-03-19Merged master into sl-11445_fmodstudioAndrey Kleshchev
2020-03-19SL-11589 Remove redundant setting vary_texcoord0, cleanup groupingPtolemy
2020-03-19SL-11589 Fix clouds drooping below horizonPtolemy
2020-03-18SL-12574 Cleanup unused final_attenPtolemy
2020-03-18SL-12574 Fix environmentMap being too dark on EEPPtolemy
2020-03-18SL-12574 Add note about duplicated procedurally generated sky texturePtolemy
2020-03-19Merged in euclid_SL-12865 (pull request #42)Dave Houlton
SL-12865, add bias to alpha mask values to avoid 8-bit acne Approved-by: Andrey Kleshchev Approved-by: Michael Pohoreski
2020-03-18SL-12865, add bias to alpha mask values to avoid 8-bit acneDave Houlton
2020-03-18Merged in DRTVTW-440_rel-merge_6.3.9 (pull request #41)Dave Houlton
Merge master (release 6.3.9) into DRTVWR-440
2020-03-18Merge master (v 6.3.9) into DRTVWR-440Dave Houlton
2020-03-18Merge branch 'master' into DRTVWR-460Andrey Lihatskiy
2020-03-18Merge branch 'master' into DRTVWR-500Andrey Lihatskiy
2020-03-18Increment viewer version to 6.3.9Nat Goodspeed
following promotion of DRTVWR-481
2020-03-17Merged in euclid_SL-10449 (pull request #40)Dave Houlton
SL-10449 remove soft gamma adjustment that breaks Mac GLSL compiler
2020-03-17SL-10449 remove soft gamma adjustment that breaks Mac GLSL compilerDave Houlton
2020-03-17Merged in SL-12574_tweak_brightness (pull request #39)Michael Pohoreski
SL-12574: Tweak sky cubemap to not be as dark to better match Windlight Approved-by: Dave Houlton <euclid@lindenlab.com>
2020-03-17SL-12858 Fixed bad mergeAndrey Kleshchev
2020-03-16SL-12574: Tweak sky cubemap to not be as dark to better match WindlightPtolemy
2020-03-16Merged in davep/DRTVWR-440 (pull request #38)Dave Parks
Add missing fullbrightAtmosTransportFrag stub.
2020-03-16Add missing fullbrightAtmosTransportFrag stub.Runitai Linden
2020-03-16SL-4495 Add setting to ignore Hover height when setting Camera positionmaxim_productengine
2020-03-13Merged in davep/DRTVWR-440 (pull request #36)Dave Parks
SL-12005 Fix for projectors getting brighter when switching to single light shader.
2020-03-13SL-12005 Fix for projectors getting brighter when switching to single light ↵Runitai Linden
shader.
2020-03-13Merged in SL-12781 (pull request #32)Michael Pohoreski
SL-12781 Approved-by: Dave Houlton <euclid@lindenlab.com>
2020-03-13Merged in euclid_SL-12784 (pull request #35)Dave Houlton
SL-12784 disambiguate vertex_color.a of 0
2020-03-13SL-12784 disambiguate vertex_color.a of 0Dave Houlton
2020-03-13Merged in SL-12850 (pull request #34)Michael Pohoreski
SL-12850 Approved-by: Dave Houlton <euclid@lindenlab.com>
2020-03-13SL-12850 Adhere to coding standardPtolemy
2020-03-13SL-12850 remove debugPtolemy
2020-03-13SL-12850Ptolemy
2020-03-13Merged in davep/DRTVWR-440 (pull request #33)Dave Parks
SL-12233 Fix for disagreement between fullbright implementations with ALM on and off.
2020-03-13SL-12233 Fix for disagreement between fullbright implementations with ALM on ↵Runitai Linden
and off.
2020-03-12SL-12781 Remove expensive and redundant z clear; instead enable/disable z ↵Ptolemy
test for background and model preview
2020-03-12SL-12781 Cleanup: Remove HACK / MAGIC NUMBER effective constant of ↵Ptolemy
mCameraDistance as it is set in setPreviewTarget() via initModelPreview()
2020-03-12SL-12781 Cleanup: Rename non-descript generic var namePtolemy
2020-03-12SL-12781 Cleanup: Update out-of-date color commentPtolemy
2020-03-12SL-12781 Fix Upload 3D Preview not using z-bufferPtolemy
2020-03-12Merged in euclid_SL-12784 (pull request #31)Dave Houlton
SL-12784 restore vertex color alpha contribution
2020-03-12SL-12784 restore vertex color alpha contributionDave Houlton