summaryrefslogtreecommitdiff
path: root/indra
AgeCommit message (Collapse)Author
2020-04-07SL-10449 Fix off-by-one line numbers when dumping shader that failed to ↵Ptolemy
compile/link
2020-04-07SL-10449 Fix ALM on OSXPtolemy
2020-04-07SL-12991 [Camera Presets] Sort all Camera preset lists in the same wayMnikolenko Productengine
2020-04-07SL-12991 [Camera Presets] Sort all Camera preset lists in the same wayMnikolenko Productengine
2020-04-06SL-10993 Fixed Korean font on OSX CatalinaAndrey Lihatskiy
2020-04-06SL-12904 FIXED Camera Preset does not restore correctly when sittingMnikolenko Productengine
2020-04-03SL-11368, fix missing water uniforms for low shader settingsDave Houlton
2020-04-03SL-12852 Cleanup for readabilityPtolemy
2020-04-03DRTVWR-476: Use a longer default timeout for Sync class.Nat Goodspeed
The timeout is meant to prevent a deadlocked test program from hanging a build. It's not intended to ensure some sort of SLA for the operations under test. Empirically, using a longer timeout helps some test programs. The only downside of increasing the timeout is that if some test does hang, it takes longer to notice. But changes on the order of a few seconds are negligible.
2020-04-03DRTVWR-476: Make LoginListener::waitFor() take arbitrary predicate.Nat Goodspeed
This allows one of the tests to specifically waitFor() the completion status update from LLLogin, rather than the next status update to come along: the coroutine potentially emits a whole sequence of status updates before completion. Then the waitFor() overload that merely waits for the next status update is implemented by passing that specific predicate to the other overload.
2020-04-03DRTVWR-476: chained_callback.h depends on lltut.h. #include it.Nat Goodspeed
2020-04-03DRTVWR-476: Facilitate debugging test programs with logging.Nat Goodspeed
On Mac, even if you run a test program with --debug or set LOGTEST=DEBUG, it won't log to stderr if you're filtering build output or running the build in an emacs compile buffer. This is because, on Mac, a viewer launched by mouse rather than from the command line is passed a stderr stream that ultimately gets logged to the system Console. The shouldLogToStderr() function is intended to avoid spamming the Console with the (voluminous) viewer log output. It tests whether stderr isatty() and, if not, suppresses calling LLError::logToStderr(). This makes debugging test programs using log output trickier than necessary. Change shouldLogToStderr() to permit logging when either stderr isatty() or is a pipe. The original intention is preserved in that empirically, a viewer launched by mouse is passed a stderr stream identified as a character device rather than as a pipe. Also introduce SetEnv, a class that facilitates setting (e.g.) LOGTEST=DEBUG for specific test programs without setting it for all test programs in the build. Using the constructor for a static object means you can set environment variables before main() is entered, which is important because it's the main() function in test.cpp that acts on the LOGTEST and LOGFAIL environment variables. These changes make it unnecessary to retain the temporary change in test.cpp to force LOGTEST to DEBUG.
2020-04-03DRTVWR-476: Cherry-pick debug aids from commit 77b0c53 (fiber-mutex)Nat Goodspeed
2020-04-02SL-12927 FIXED [Camera Presets] when sitting pressing ESC key causes rotationMnikolenko Productengine
2020-04-01Merged in eep-fix-falloff-edit (pull request #54)Rye Mutt
Fix light falloff being corrupted when editing value via build floater spinner Approved-by: Dave Houlton
2020-04-01Merged in eep-fix-light-color (pull request #53)Rye Mutt
Fix editing light color corrupting intensity and color values Approved-by: Dave Houlton
2020-03-30Update falloff fix with changes requested in review.Rye Mutt
2020-03-30SL-12888 Fix space alpha megaprim not using z-testPtolemy
2020-03-30Fix light falloff being corrupted when editing value via build floater spinnerRye Mutt
2020-03-30Fix editing light color corrupting intensity and color valuesRye Mutt
2020-03-28Merge branch 'master' into DRTVWR-501-maintAndrey Lihatskiy
2020-03-27Merged in davep/DRTVWR-440 (pull request #52)Dave Parks
SL-12902 Better fix for light color values in color swatch not matching light color values inworld.
2020-03-27SL-12902 Better fix for light color values in color swatch not matching ↵Runitai Linden
light color values inworld.
2020-03-27SL-12904 FIXED Camera Preset does not restore correctly when sittingMnikolenko Productengine
2020-03-27DRTVWR-440, quick fix, add return value - needed for Mac buildDave Houlton
2020-03-27SL-12911 Add Debug setting EnvironmentPersistAcrossLoginAndrey Kleshchev
2020-03-27Removed obsolete and misleading variableAndrey Kleshchev
2020-03-26Merged in davep/DRTVWR-440 (pull request #48)Dave Parks
SL-12902 Fix for doing the technically correct but compatibility wrong thing WRT light color values.
2020-03-26DRTVWR-476: Apparently it can take more than 2s for threads to chat.Nat Goodspeed
llmainthreadtask_test builds in a Sync timeout to keep build-time tests from hanging. That timeout was set to 2000ms, which seems as though it ought to be plenty enough time for a process with only 2 threads to exchange data between them. But on TeamCity EC2 Windows build hosts, sometimes we hit that timeout and fail. Extend it to try to improve the robustness of builds, even though the possibility of a production viewer blocking for that long for anything seems worrisome. (Fortunately the production viewer does not use Sync.)
2020-03-26SL-12902 Fix for doing the technically correct but compatibility wrong thing ↵Runitai Linden
WRT light color values.
2020-03-26DRTVWR-440, make enabling GLdebug flag slightly less infinite-loopyDave Houlton
2020-03-26DRTVWR-476: Fix glitches from lindenlab/viewer master branch merge.Nat Goodspeed
2020-03-25DRTVWR-476: Eliminate LLWearableType LLSingleton circularity.Nat Goodspeed
LLWearableType::initSingleton() calls LLWearableDictionary::initParamSingleton(). LLWearableDictionary's constructor constructs specific WearableEntry instances, each of which wants to translate its name string to a user-facing label using LLWearableType::mTrans. WearableEntry's constructor was calling LLWearableType::getInstance(). Under circumstances we don't fully understand (recursive mutex misbehavior?), that could hang. Instead, pass the canonical LLWearableType instance to LLWearableDictionary's constructor, and from there into WearableEntry's constructor.
2020-03-25DRTVWR-476: Use LLThreadSafeQueue::close() to shut down coprocs.Nat Goodspeed
The tactic of pushing an empty QueuedCoproc::ptr_t to signal coprocedure close only works for LLCoprocedurePools with a single coprocedure (e.g. "Upload" and "AIS"). Only one coprocedureInvokerCoro() coroutine will pop that empty pointer and shut down properly -- the rest will continue waiting indefinitely. Rather than pushing some number of empty pointers, hopefully enough to notify all consumer coroutines, close() the queue. That will notify as many consumers as there may be. That means catching LLThreadSafeQueueInterrupt from popBack(), instead of detecting empty pointer. Also, if a queued coprocedure throws an exception, coprocedureInvokerCoro() logs it as before -- but instead of rethrowing it, the coroutine now loops back to wait for more work. Otherwise, the number of coroutines servicing the queue dwindles.
2020-03-25DRTVWR-476: Introduce LLThreadSafeQueue::close().Nat Goodspeed
Also isClosed() and explicit operator bool() to detect closed state. close() causes every subsequent pushFront() to throw LLThreadSafeQueueInterrupt. Once the queue is drained, it causes popBack() to throw likewise.
2020-03-25DRTVWR-476: make printActiveCoroutines() output slightly clearer.Nat Goodspeed
For the main coroutine on each thread, show the 'main0' (or whatever) name instead of the empty-string name.
2020-03-25DRTVWR-476: LLChannelManager depends on LLUI. Tell LLSingleton.Nat Goodspeed
2020-03-25DRTVWR-476: Re-enable LLInstanceTracker tests disabled months ago.Nat Goodspeed
2020-03-25DRTVWR-476: Log calls to LLParamSingleton::initParamSingleton().Nat Goodspeed
2020-03-25DRTVWR-476: Update LLMainThreadTask tests for simpler API.Nat Goodspeed
2020-03-25DRTVWR-476: Fix merge glitch.Nat Goodspeed
2020-03-25DRTVWR-476: On Windows, use prebuilt Boost.Stacktrace.Nat Goodspeed
2020-03-25DRTVWR-476: Adapt LLInstanceTracker::snapshot for VS limitations.Nat Goodspeed
2020-03-25DRTVWR-476: Add unit tests for LLMainThreadTask.Nat Goodspeed
Now that we have the Sync class to help construct unit tests that move forward in a deterministic stepwise order, we can build suitable unit tests for LLMainThreadTask.
2020-03-25DRTVWR-476: LLTHROW() requires LLException or subclass.Nat Goodspeed
2020-03-25DRTVWR-476: Make llcoro::logname() distinguish different threads.Nat Goodspeed
Actually, introduce static LLCoros::logname() and make the namespaced free function an alias for that. Because CoroData is a subclass of LLInstanceTracker with a key, every instance requires a distinct key. That conflicts with our "getName() returns empty string for default coroutine on thread" convention. Introduce a new CoroData constructor, specifically for the default coroutine on each thread, that initializes the getName() name to empty string while providing a distinct "mainN" key. Make get_CoroData() use that new constructor for its thread_local instance, passing an atomic<int> incremented each time we initialize one for a new thread. Then LLCoros::logname() returns either the getName() name or the key.
2020-03-25DRTVWR-476: Make Sync::bump() atomic, add set() method.Nat Goodspeed
Using Sync with multiple threads is trickier than with coroutines. In particular, Sync::bump() was racy (get() and set() as two different operations), and threads were proceeding when they should have waited. Fortunately LLCond, on which Sync is based, already supports atomic update operations. Use that for bump(). But to nail things down even more specifically, add set(n) to complement yield_until(n). Using those methods, there should be no ambiguity about which call in one thread synchronizes with which call in the other thread.
2020-03-25DRTVWR-476: Adjust LLCoros to new LLInstanceTracker API.Nat Goodspeed
2020-03-25DRTVWR-476, SL-12197: Don't throw Stopping from main coroutine.Nat Goodspeed
The new LLCoros::Stop exception is intended to terminate long-lived coroutines -- not interrupt mainstream shutdown processing. Only throw it on an explicitly-launched coroutine. Make LLCoros::getName() (used by the above test) static. As with other LLCoros methods, it might be called after the LLCoros LLSingleton instance has been deleted. Requiring the caller to call instance() implies a possible need to also call wasDeleted(). Encapsulate that nuance into a static method instead.
2020-03-25DRTVWR-476: Enrich LLExceptions thrown by LLTHROW() with stack trace.Nat Goodspeed
The LLTHROW() abstraction allows us to enrich the subject exception with a boost::stacktrace -- without having to propagate the boost/stacktrace.hpp header throughout the code base. To my delight, our existing use of boost::current_exception_diagnostic_information() already reports the newly added boost::stacktrace information -- we don't have to query it specifically!