Commit Graph

38629 Commits (8a13530ce4eeb481ee467fd3ec54f1ed7e9f632a)

Author SHA1 Message Date
Glenn Glazer 1dcc9e3e11 upgrade to VMP package 505153 2017-05-10 15:35:49 -07:00
Nat Goodspeed 4d87ded886 Add size limit to LLEventBatchThrottle like LLEventBatch.
The new behavior is that it will flush when either the pending batch has grown
to the specified size, or the time interval has expired.
2017-05-10 17:37:06 -04:00
Nat Goodspeed 51b0592093 Automated merge with ssh://bitbucket.org/lindenlab/viewer-neko 2017-05-10 15:37:11 -04:00
Nat Goodspeed 9c66072cac Add LLEventThrottle tests; actually *all* lleventfilter.cpp tests.
For some reason there wasn't an entry in indra/llcommon/CMakeLists.txt to run
the tests in indra/llcommon/tests/lleventfilter_test.cpp. It seems likely that
at some point it existed, since all previous tests built and ran successfully.
In any case, (re-)add lleventfilter_test.cpp to the set of llcommon tests.
Also alphabetize them to make it easier to find a particular test invocation.

Also add new tests for LLEventThrottle.

To support this, refactor the concrete LLEventThrottle class into
LLEventThrottleBase containing all the tricky logic, with pure virtual
methods for access to LLTimer and LLEventTimeout, and an LLEventThrottle
subclass containing the LLTimer and LLEventTimeout instances and corresponding
implementations of the new pure virtual methods.

That permits us to introduce TestEventThrottle, an alternate subclass with
dummy implementations of the methods related to LLTimer and LLEventTimeout. In
particular, we can explicitly advance simulated realtime to simulate
particular LLTimer and LLEventTimeout behaviors.

Finally, introduce Concat, a test LLEventPump listener class whose function is
to concatenate received string event data into a composite string so we can
readily test for particular sequences of events.
2017-05-10 15:04:18 -04:00
Nat Goodspeed 9fa131b088 DRTVWR-418, MAINT-6996: Update Mac mem queries (per Drake Arconis)
Drake points out that the OS X 64-bit-capable memory-query APIs recommended in
comments by some long-ago maintainer are by now themselves obsolete. He
offered this patch to update us to current macOS memory APIs.
2017-05-10 14:19:44 -04:00
Nat Goodspeed 54180e6e6b Automated merge with ssh://bitbucket.org/lindenlab/viewer64 2017-05-10 14:12:52 -04:00
Glenn Glazer 6f215d1608 dummy commit 2017-05-10 07:18:55 -07:00
Mnikolenko Productengine bb3380b220 MAINT-7359 improve new Avatar Render Settings window 2017-05-10 15:41:16 +03:00
Glenn Glazer b6f0cbdb39 upgrade to VMP package 505113 2017-05-09 16:36:24 -07:00
Nat Goodspeed 22eb4cf772 DRTVWR-418: Set -std=c++14 for Mac even before viewer-build-variables. 2017-05-09 14:21:35 -04:00
Nat Goodspeed d2e720a651 DRTVWR-418: Harmless commit to force a TeamCity rebuild. 2017-05-09 13:04:03 -04:00
Brad Payne (Vir Linden) 8528a9ae13 MAINT-7343 - improved error case handling and checking for unlikely corners 2017-05-09 10:58:43 -04:00
Nat Goodspeed 8502b7dc47 DRTVWR-418: Work around VS2013's lack of __has_feature(). 2017-05-08 12:33:33 -04:00
andreykproductengine fb7be87beb MAINT-7354 correction to misbehaving 'purge' and notification spam. 2017-05-08 18:05:10 +03:00
Nat Goodspeed ccc42830ee DRTVWR-418: Fix vector assignment for C++03.
For the time being we're still compiling for production with C++03. Although
assigning an initializer list to a vector is valid C++11, in C++03 mode clang
rejects it.
2017-05-08 10:05:15 -04:00
Nat Goodspeed 93029a5a66 Automated merge with ssh://bitbucket.org/lindenlab/viewer64 2017-05-08 09:10:22 -04:00
Nat Goodspeed 322c4c6bec DRTVWR-418: Fix -std=c++11 llinstancetracker_test crash.
LLInstanceTracker<T> performs validation in ~LLInstanceTracker(). Normally
validation failure logs an error and terminates the program, which is fine. In
the test executable, though, we want validation failure to throw an exception
instead so we can catch it and continue testing other failure conditions. But
since destructors in C++11 are implicitly noexcept(true), that exception never
made it out of ~LLInstanceTracker(): it crashed the test program instead.
Declaring ~LLInstanceTracker() noexcept(false) solves that, allowing the test
program to catch the exception and continue.

However, if we unconditionally declare that, then every destructor anywhere in
the inheritance hierarchy for any LLInstanceTracker subclass must also be
noexcept(false)! That's way too pervasive, especially for functionality we
only need (or want) in a specific test executable.

Instead, make the CMake macros LL_ADD_PROJECT_UNIT_TESTS() and
LL_ADD_INTEGRATION_TEST() -- with which we define all viewer build-time tests
-- define two new command-line macros: LL_TEST=testname and LL_TEST_testname.
That way, preprocessor logic in a header file can detect whether it's being
compiled for production code or for a test executable.

(While at it, encapsulate in a new GET_OPT_SOURCE_FILE_PROPERTY() CMake macro
an ugly repetitive pattern. The builtin GET_SOURCE_FILE_PROPERTY() sets the
target variable to "NOTFOUND" -- rather than an empty string -- if the
specified property wasn't set. Every call to GET_SOURCE_FILE_PROPERTY() in
LL_ADD_PROJECT_UNIT_TESTS() was followed by a test for NOTFOUND and an
assignment to "". Wrap all that in a macro whose 'unset' value is "".)

Now llinstancetracker.h can detect when we're building the LLInstanceTracker
unit test executable, and *only then* declare ~LLInstanceTracker() as
noexcept(false). We #define LLINSTANCETRACKER_DTOR_NOEXCEPT to expand either
empty or noexcept(false), also detecting clang in C++11 mode. (It all works
fine without noexcept(false) until we turn on C++11 mode.)

We also use that macro for the StatBase class in lltrace.h. Turns out some of
the infrastructure headers required for tests in general, including the
LLInstanceTracker test, use LLInstanceTracker. Fortunately that appears to be
the only other class we must annotate this way for the LLInstanceTracker tests.
2017-05-08 09:09:22 -04:00
Glenn Glazer 4ca5dec699 upgrade to VMP package 505055 2017-05-05 16:17:24 -07:00
coyot@coyot-sager-PC.hsd1.ca.comcast.net a1194ce6e9 pull from gate 2017-05-05 18:07:00 +01:00
Glenn Glazer c15ffb4045 upgrade to VMP package 505035, include Oz's logging changes 2017-05-05 09:26:56 -07:00
Oz Linden ab3742a2a9 update to clarified log content messages in the VMP logs 2017-05-05 09:21:48 -04:00
nat_linden 322767f98e Merged in lindenlab/viewer64-callum (pull request #15)
Expand the way we set C++ flags in cmake to call out each build type explicitly

Approved-by: nat_linden <nat@lindenlab.com>
2017-05-04 23:14:20 +00:00
Callum Prentice 0288e5e8cf Expand the way we set C++ flags in cmake to call out each build type explicitly 2017-05-04 16:05:59 -07:00
Nat Goodspeed 49cfd6d991 DRTVWR-418, MAINT-6996: On Mac, obtain total mem, not resident mem.
The LLMemory method getCurrentRSS() is defined to return the "resident set
size," but in fact on Windows it returns the WorkingSetSize -- and that's
actually what callers want from it: the total memory consumed by the
application for statistics purposes. It's not really clear what users gain by
knowing how much of that is resident in real memory, versus the total
consumption. So despite the commentation and the method name itself, on Mac
make it return the virtual size consumed.
2017-05-04 18:13:56 -04:00
Nat Goodspeed 16e9e87d92 Automated merge with ssh://bitbucket.org/lindenlab/viewer-release 2017-05-04 17:36:53 -04:00
Nat Goodspeed a4467e9ffe Automated merge with ssh://bitbucket.org/lindenlab/viewer64-c-11 2017-05-04 17:16:12 -04:00
Oz Linden c187f67140 add SL-standard format logging 2017-05-04 16:35:19 -04:00
coyot@coyot-sager-PC.hsd1.ca.comcast.net 50bb2317b2 SL-617: upgrade to VMP package 504984 2017-05-04 19:10:36 +01:00
coyot@coyot-sager-PC.hsd1.ca.comcast.net 6d425401c1 SL-617: use final_exe to create exe name in summary.json 2017-05-04 18:59:01 +01:00
Nat Goodspeed 07ec10781e Automated merge with ssh://bitbucket.org/lindenlab/viewer64 2017-05-04 13:51:16 -04:00
Nat Goodspeed 35cec8fec8 Automated merge with ssh://bitbucket.org/lindenlab/viewer64 2017-05-03 22:56:07 -04:00
Nat Goodspeed b78065ec55 DRTVWR-418: 64-bit Windows viewer requests "win64" updates from VVM.
This is only transitional, until we integrate the Viewer Management Process
(soon now).
2017-05-03 22:55:18 -04:00
Nat Goodspeed d6b870c0ca DRTVWR-418: Add dtor to LLSafeHandle<T>::NullInstanceHolder
to suppress fatal warnings in Visual Studio.
2017-05-03 22:53:34 -04:00
Nat Goodspeed 09e953a3b7 Automated merge with ssh://bitbucket.org/lindenlab/viewer64 2017-05-03 20:45:23 -04:00
Glenn Glazer 54d5658186 MAINT-6928: upgrade VMP package to 504954 2017-05-03 15:33:29 -07:00
Nat Goodspeed 18083bad5c Automated merge with ssh://bitbucket.org/lindenlab/viewer64 2017-05-03 15:58:53 -04:00
Nat Goodspeed 614c75e110 DRTVWR-418: Silence some Mac build warnings.
Whatever we were trying to do with LLSharedLibs.cmake hasn't worked on the Mac
for a long time, and trying to fix it only digs up more problems. Skip it:
we've already worked around it.

Update the media_plugins_example CMakeLists.txt to eliminate some CMake
non-existent dependency warnings.
2017-05-03 15:58:21 -04:00
Glenn Glazer 81c5f03013 MAINT-6928: upgrade VMP package to 504920 and rip out viewer-manifest changes for 2.6 2017-05-03 11:06:12 -07:00
Nat Goodspeed 9002e3cbc7 DRTVWR-418: Add big deprecation notice to llsafehandle.h. 2017-05-03 13:20:56 -04:00
Nat Goodspeed 03c1e5e034 Automated merge with ssh://bitbucket.org/lindenlab/viewer64 2017-05-03 13:00:00 -04:00
callum@lindenlab.com 9930e22ac5 Automated merge with head of lindenlab/viewer64 2017-05-02 13:31:54 -07:00
coyot@coyot-sager-PC.hsd1.ca.comcast.net e1253f1a8c SL-617: use the braces, Luke! 2017-05-02 21:18:57 +01:00
Nat Goodspeed e4996c5d81 DRTVWR-418, MAINT-6996: clarify divide-by-1024 (not shift-right 10) 2017-05-02 14:39:59 -04:00
Oz Linden d47f604e63 VOICE-47: Disconnect from voice during teleport to prevent audio artifacts 2017-05-02 14:32:34 -04:00
Nat Goodspeed 2bb19aec98 DRTVWR-418, MAINT-6996: Update Mac LLMemory::getCurrentRSS().
Evidently the Mac implementation of LLMemory::getCurrentRSS() goes back to
OS X 10.3, because there was a helpful comment of the form:

------
The API used here is not capable of dealing with 64-bit memory sizes, but is
available before 10.4.

Once we start requiring 10.4, we can use the updated API, which looks like
this:

[new current implementation]

Of course, this doesn't gain us anything unless we start building the viewer
as a 64-bit executable, since that's the only way for our memory allocation to
exceed 2^32.
------

Hey, guess what, we're building 64-bit viewers now!

Thank you, whoever thoughtfully noted that, both for calling out the issue and
sparing us the research. (The comment goes back to Subversion days, so hg
blame shows only the merge-to-release changeset.)
2017-05-02 11:05:13 -04:00
Nat Goodspeed 52899ed62a DRTVWR-418, MAINT-6996: Rationalize LLMemory wrt 64-bit support.
There were two distinct LLMemory methods getCurrentRSS() and
getWorkingSetSize(). It was pointless to have both: on Windows they were
completely redundant; on other platforms getWorkingSetSize() always returned
0. (Amusingly, though the Windows implementations both made exactly the same
GetProcessMemoryInfo() call and used exactly the same logic, the code was
different in the two -- as though the second was implemented without awareness
of the first, even though they were adjacent in the source file.)

One of the actual MAINT-6996 problems was due to the fact that
getWorkingSetSize() returned U32, where getCurrentRSS() returns U64. In other
words, getWorkingSetSize() was both useless *and* wrong. Remove it, and change
its one call to getCurrentRSS() instead.

The other culprit was that in several places, the 64-bit WorkingSetSize
returned by the Windows GetProcessMemoryInfo() call (and by getCurrentRSS())
was explicitly cast to a 32-bit data type. That works only when explicitly or
implicitly (using LLUnits type conversion) scaling the value to kilobytes or
megabytes. When the size in bytes is desired, use 64-bit types instead.

In addition to the symptoms, LLMemory was overdue for a bit of cleanup.

There was a 16K block of memory called reserveMem, the comment on which read:
"reserve 16K for out of memory error handling." Yet *nothing* was ever done
with that block! If it were going to be useful, one would think someone would
at some point explicitly free the block. In fact there was a method
freeReserve(), apparently for just that purpose -- which was never called. As
things stood, reserveMem served only to *prevent* the viewer from ever using
that chunk of memory. Remove reserveMem and the unused freeReserve().

The only function of initClass() and cleanupClass() was to allocate and free
reserveMem. Remove initClass(), cleanupClass() and the LLCommon calls to them.

In a similar vein, there was an LLMemoryInfo::getPhysicalMemoryClamped()
method that returned U32Bytes. Its job was simply to return a size in bytes
that could fit into a U32 data type, returning U32_MAX if the 64-bit value
exceeded 4GB. Eliminate that; change all its calls to getPhysicalMemoryKB()
(which getPhysicalMemoryClamped() used internally anyway). We no longer care
about any platform that cannot handle 64-bit data types.
2017-05-02 10:51:18 -04:00
Callum Prentice 49745fe4ed Pull in new version of Dullahan that is built against latest version of CEF (CEF 3.3029.1611.g44e39a8 / Chromium 58.0.3029.81) 2017-05-01 12:43:14 -07:00
Callum Prentice 7005310541 Fix MAINT-7360 Investigate removal of MSVCR100.DLL and MSVCP100.DLL 2017-05-01 12:42:12 -07:00
Brad Payne (Vir Linden) ed9653f711 MAINT-7343 - contributions.txt update 2017-05-01 15:17:28 -04:00
Brad Payne (Vir Linden) 218615320a MAINT-7343 - removed unusued coprocedure parameter, changed one coro argument to pass by value 2017-05-01 15:05:57 -04:00