Age | Commit message (Collapse) | Author |
|
|
|
following promotion of DRTVWR-500
|
|
|
|
|
|
|
|
# Conflicts:
# indra/newview/pipeline.cpp
|
|
following promotion of DRTVWR-440
|
|
|
|
|
|
|
|
water Fresnel
|
|
|
|
|
|
Apparently, in previous Boost versions, boost::noncopyable was sneaking into
the namespace via other headers. Now the compiler complains about its absence
without an explicit #include.
|
|
|
|
|
|
|
|
to compile/link
|
|
compile/link
|
|
|
|
|
|
|
|
|
|
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.
|
|
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.
|
|
|
|
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.
|
|
|
|
Fix light falloff being corrupted when editing value via build floater spinner
Approved-by: Dave Houlton
|
|
Fix editing light color corrupting intensity and color values
Approved-by: Dave Houlton
|
|
|
|
|
|
|
|
|
|
SL-12902 Better fix for light color values in color swatch not matching light color values inworld.
|
|
light color values inworld.
|
|
|
|
|
|
|
|
SL-12902 Fix for doing the technically correct but compatibility wrong thing WRT light color values.
|
|
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.)
|
|
WRT light color values.
|
|
|
|
|
|
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.
|
|
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.
|
|
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.
|
|
For the main coroutine on each thread, show the 'main0' (or whatever) name
instead of the empty-string name.
|
|
|
|
|