Commit Graph

36201 Commits (23d50f53cb7beed12a1ff15f32b5c85e2b9e6b4d)

Author SHA1 Message Date
Nat Goodspeed 23d50f53cb MAINT-5232: Ensure custom operator<<() overload is visible to TUT. 2016-10-13 07:11:18 -04:00
Nat Goodspeed 763509589d MAINT-5232: Add LLHeteroMap to contain objects of unrelated classes. 2016-10-12 23:01:48 -04:00
Nat Goodspeed 704c53b3c5 MAINT-5232: Merge up to VLC viewer from viewer-release 2016-10-11 10:59:17 -04:00
Oz Linden 086c134215 increment viewer version to 4.1.2 2016-10-10 15:33:44 -04:00
Oz Linden 662cae23f6 Added tag 4.1.1-release for changeset b280a1c797a3 2016-10-10 15:33:44 -04:00
Callum Prentice 56953b146a Fix MAINT-6730 Media audio does not play when Media volume slider is set to max 2016-10-05 13:15:25 -07:00
Callum Prentice 1be15b3d3a Log volume control values for debugging 2016-09-30 15:20:37 -07:00
Nat Goodspeed eb8961235f MAINT-5232: LLWinDebug has empty constructor.
This didn't become apparent until we got past the other Windows build issues
and attempted to link the viewer itself.
2016-09-27 12:38:49 -04:00
nat@linux-build-phx8.lindenlab.com d80145bf0f MAINT-5232: Ensure BOOST_SYSTEM_LIBRARY follows BOOST_THREAD_LIBRARY.
In recent versions of Boost, BOOST_THREAD_LIBRARY depends on
BOOST_SYSTEM_LIBRARY. In llcorehttp/CMakeLists.txt, these were
incorrectly ordered for Linux. Somewhat oddly, that appears to have
caused Linux link errors even in llmath. Fix at least this problem.
2016-09-27 16:28:16 +00:00
Nat Goodspeed f4ecfd9cb9 MAINT-5232: Disable unrealistic failing checks on GetMemTotal(). 2016-09-27 10:41:24 -04:00
Nat Goodspeed acbee7ffab MAINT-5232: Give up on running mem test twice: doesn't work 2016-09-27 10:36:14 -04:00
Nat Goodspeed 1a34afb1cc MAINT-5232: Try workaround for dubious llcorehttp mem usage test. 2016-09-23 06:16:46 -07:00
Nat Goodspeed d0249fb7c0 MAINT-5232: Eliminate pointless string search for "class " prefix.
The Visual C++ runtime produces typeid(MyClass).name() as "class MyClass".
It's prudent to check for the presence of that prefix before stripping off the
first six characters, but if the first comparison should ever fail, find()
would continue searching the rest of the string for "class " -- a search
guaranteed to fail. Use compare() instead.
2016-09-17 20:54:50 -04:00
Rider Linden 100aa4b79e Merge 2016-09-16 14:59:52 -07:00
Rider Linden 884b03e877 Merge 2016-09-16 14:43:35 -07:00
Rider Linden 68b8d2658a MAINT-6570: Fix bad merge. 2016-09-16 14:38:35 -07:00
Nat Goodspeed 0f0920135a MAINT-5232: Fix a couple new LLGlobalEconomy::Singleton references. 2016-09-16 11:45:15 -04:00
Nat Goodspeed 099e3b4166 Automated merge with ssh://bitbucket.org/lindenlab/viewer-release 2016-09-16 11:04:12 -04:00
Nat Goodspeed d2c3c2f9fe MAINT-5232: Normalize LLSingleton subclasses.
A shocking number of LLSingleton subclasses had public constructors -- and in
several instances, were being explicitly instantiated independently of the
LLSingleton machinery. This breaks the new LLSingleton dependency-tracking
machinery. It seems only fair that if you say you want an LLSingleton, there
should only be ONE INSTANCE!

Introduce LLSINGLETON() and LLSINGLETON_EMPTY_CTOR() macros. These handle the
friend class LLSingleton<whatevah>;
and explicitly declare a private nullary constructor.

To try to enforce the LLSINGLETON() convention, introduce a new pure virtual
LLSingleton method you_must_use_LLSINGLETON_macro() which is, as you might
suspect, defined by the macro. If you declare an LLSingleton subclass without
using LLSINGLETON() or LLSINGLETON_EMPTY_CTOR() in the class body, you can't
instantiate the subclass for lack of a you_must_use_LLSINGLETON_macro()
implementation -- which will hopefully remind the coder.

Trawl through ALL LLSingleton subclass definitions, sprinkling in
LLSINGLETON() or LLSINGLETON_EMPTY_CTOR() as appropriate. Remove all explicit
constructor declarations, public or private, along with relevant 'friend class
LLSingleton<myself>' declarations. Where destructors are declared, move them
into private section as well. Where the constructor was inline but nontrivial,
move out of class body.

Fix several LLSingleton abuses revealed by making ctors/dtors private:

LLGlobalEconomy was both an LLSingleton and the base class for
LLRegionEconomy, a non-LLSingleton. (Therefore every LLRegionEconomy instance
contained another instance of the LLGlobalEconomy "singleton.") Extract
LLBaseEconomy; LLGlobalEconomy is now a trivial subclass of that.
LLRegionEconomy, as you might suspect, now derives from LLBaseEconomy.

LLToolGrab, an LLSingleton, was also explicitly instantiated by
LLToolCompGun's constructor. Extract LLToolGrabBase, explicitly instantiated,
with trivial subclass LLToolGrab, the LLSingleton instance.

(WARNING: LLToolGrabBase methods have an unnerving tendency to go after
LLToolGrab::getInstance(). I DO NOT KNOW what should be the relationship
between the instance in LLToolCompGun and the LLToolGrab singleton instance.)

LLGridManager declared a variant constructor accepting (const std::string&),
with the comment:
// initialize with an explicity grid file for testing.
As there is no evidence of this being called from anywhere, delete it.

LLChicletBar's constructor accepted an optional (const LLSD&). As the LLSD
parameter wasn't used, and as there is no evidence of it being passed from
anywhere, delete the parameter.

LLViewerWindow::shutdownViews() was checking LLNavigationBar::
instanceExists(), then deleting its getInstance() pointer -- leaving a
dangling LLSingleton instance pointer, a land mine if any subsequent code
should attempt to reference it. Use deleteSingleton() instead.

~LLAppViewer() was calling LLViewerEventRecorder::instance() and then
explicitly calling ~LLViewerEventRecorder() on that instance -- leaving the
LLSingleton instance pointer pointing to an allocated-but-destroyed instance.
Use deleteSingleton() instead.
2016-09-15 20:18:12 -04:00
Oz Linden 51bb369a39 increment viewer version to 4.0.9 2016-09-15 15:31:31 -04:00
Oz Linden 7d20fbdb66 Added tag 4.0.8-release for changeset 45eaee56883d 2016-09-15 15:31:31 -04:00
Rider Linden 51236b7c9c Merge 2016-09-14 09:55:18 -07:00
callum@lindenlab.com 921cfa355c MAINT-6462 Built-in browser plays video vertically flipped 2016-09-09 11:46:50 -07:00
Callum Prentice 4a95c4b36c Restore version of CEF that has the correct Y flipping enabled - (2526/chrome47 version - soon to be replaced with 2704/chrome 51) 2016-09-07 16:13:09 -07:00
Nat Goodspeed c7cb6636c4 MAINT-6584, MAINT-5011: Change new 'throw' to LLTHROW()
to be consistent with new exception conventions.
2016-09-07 10:57:07 -04:00
Nat Goodspeed dd1a0218b1 Automated merge with ssh://bitbucket.org/lindenlab/viewer-vlc 2016-09-07 10:46:28 -04:00
Mnikolenko Productengine 1de6e0830c MAINT-6699 FIXED [VOB] Crash in LLSnapshotLivePreview::getBigThumbnailImage() 2016-09-07 17:26:07 +03:00
AndreyL ProductEngine 464d70c546 Dummy commit to fix the teamcity builds 2016-09-07 08:08:19 +03:00
Nat Goodspeed 1cadeb40df MAINT-5232: Prevent runaway LLSingletonBase::MasterList growth.
Until we reimplement LLCoros on Boost.Fiber, we must hand-implement
coroutine-local data. That presently takes the form of a map keyed on
llcoro::id, whose values are the stacks of currently-initializing LLSingleton
instances.

But since the viewer launches an open-ended number of coroutines, we could end
up with an open-ended number of map entries unless we intentionally prune the
map. So every time we pop the stack to empty, remove that map entry.

This could result in thrashing, a given coroutine's 'initializing' stack being
created and deleted for almost every LLSingleton instantiated by that
coroutine -- but the number of different LLSingletons is necessarily static,
and the lifespan of each is the entire rest of the process. Even a couple
dozen LLSingletons won't thrash that badly.
2016-09-06 21:25:57 -04:00
Nat Goodspeed 90f424980a MAINT-5232: Make LLSingleton's 'initializing' stack coro-specific.
The stack we maintain of which LLSingletons are currently initializing only
makes sense when associated with a particular C++ call stack. But each
coroutine introduces another C++ call stack!

Move the initializing stack from function-static storage to
LLSingletonBase::MasterList. Make it a map keyed by llcoro::id. Each coro then
has a stack of its own.

This introduces more dependencies on the MasterList singleton, requiring
additional LLSingleton_manage_master workarounds.
2016-09-06 21:07:38 -04:00
Nat Goodspeed 2d3c5fb060 Automated merge with ssh://bitbucket.org/lindenlab/viewer-vlc 2016-09-06 20:52:57 -04:00
Nat Goodspeed 67c401047a MAINT-5011: Ensure BlockTimer::mStartTime is unconditionally set.
Previous logic could possibly leave mStartTime uninitialized, producing fatal
warnings with gcc 4.7.
2016-09-06 20:48:16 -04:00
Nat Goodspeed fe49126d45 MAINT-5011: Commit backing out BlockTimer warning suppression. 2016-09-06 20:42:27 -04:00
Nat Goodspeed bfb400ccd7 Backed out changeset c30d8774c404: remove warning suppression
for possibly-uninitialized data member in BlockTimer::BlockTimer.

NickyD suggested a real fix.
2016-09-06 20:41:23 -04:00
Oz Linden dc5a805efd undo changes to llvertexbuffer.cpp from c727ae93646e 2016-09-06 16:53:32 -04:00
Nat Goodspeed a601c559e8 MAINT-5232: Ensure that llcoro::get_id() returns distinct values.
Until now, the "main coroutine" (the initial context) of each thread left
LLCoros::Current() NULL. The trouble with that is that llcoro::get_id()
returns that CoroData* as an opaque token, and we want distinct values for
every stack in the process. That would not be true if the "main coroutine" on
thread A returned the same value (NULL) as the "main coroutine" on thread B,
and so forth. Give each thread's "main coroutine" a dummy heap CoroData
instance of its own.
2016-09-06 12:08:38 -04:00
Oz Linden 5edd4cecfc merge changes for exception handling 2016-09-06 11:07:39 -04:00
Oz Linden 8c86c594be paren fix 2016-09-06 11:01:02 -04:00
Oz Linden 72f4c72001 downgrade spammy LLCoros logging to DEBUG 2016-09-06 10:21:28 -04:00
Oz Linden a5adabb4f6 add protections against failed memory allocations in VBO and aligned memory 2016-09-06 10:04:19 -04:00
Oz Linden 53f9fbcfb7 add run time error checking to LLImageRaw::scale 2016-09-06 09:11:10 -04:00
Mnikolenko Productengine ec9b92d274 MAINT-6698 [VOB] "Save" button is always enabled for outfit with non-default image even if there were no changes 2016-09-06 14:07:20 +03:00
Mnikolenko Productengine fc17f62335 MAINT-6685 [VOB] Outfit Image from an Outfit Gallery disappears after editing outfit 2016-09-05 17:32:50 +03:00
Nat Goodspeed 976f4b6252 MAINT-5232: Break out LLCoros::get_id() into its own header file.
We need LLSingleton machinery to be able to reference get_id() without also
depending on all the rest of LLCoros -- since LLCoros isa LLSingleton.
2016-09-03 12:04:36 -04:00
Nat Goodspeed f931f6ef52 MAINT-5232: Add LLCoros::get_id() to identify the running coroutine.
Change the module-static thread_specific_ptr to a function-static
thread_specific_ptr so it will be initialized on demand -- since LLSingleton
will need to rely on get_id(). Note that since LLCoros isa LLSingleton, we
must take great care to avoid circularity.

Introduce a private helper class LLCoros::Current to obtain and bind that
thread_specific_ptr. Change all existing internal references from the static
thread_specific_ptr to the new Current helper class.
2016-09-03 11:39:17 -04:00
Nat Goodspeed c71e622229 MAINT-5232: Add DEBUG logging to LLSingleton dependency tracking.
Specifically, add DEBUG logging to the code that maintains the stack of
LLSingletons currently being initialized. This involves passing
LLSingletonBase's constructor the name of LLSingleton's template parameter
subclass, since during that constructor typeid(*this).name() will only produce
"LLSingletonBase".

Also add logdebugs() and oktolog() helper functions.
2016-09-03 11:30:53 -04:00
Nat Goodspeed 4af7e496b4 MAINT-5232: Make LLError::is_available() depend on both LLSingletons.
LLError machinery depends on two different LLSingletons. Its is_available()
function is primarily for LLSingleton itself to determine whether it is, or is
not, safe to log. Until both of LLError's LLSingletons have been constructed,
attempting to log LLSingleton operations could produce infinite recursion.
2016-09-03 11:22:54 -04:00
Nat Goodspeed a05ee7324d MAINT-5232: Abbreviate __FILE__ path in log_subsystem_cleanup().
LLError::abbreviateFile() is specifically to avoid cluttering log output with
the prefix of an absolute file path on the original build system, pointless
for anyone trying to read the log.
2016-09-02 14:03:28 -04:00
Nat Goodspeed 1804da89ee MAINT-5011: Abbreviate __FILE__ path in log_unhandled_exception_().
LLError::abbreviateFile() is specifically to avoid cluttering log output with
the prefix of an absolute file path on the original build system, pointless
for anyone trying to read the log.
2016-09-02 14:00:18 -04:00
andreykproductengine 74ec1116a2 MAINT-6461 crash due to invalid menu pointer during visibility change 2016-09-02 19:20:31 +03:00