Commit Graph

294 Commits (bd008a170898e69beeb8bc0481b4bfd94de86c55)

Author SHA1 Message Date
Nat Goodspeed 218c0a1d4f Automated merge with ssh://bitbucket.org/nat_linden/viewer-llsingleton 2019-12-13 13:20:21 -05:00
AndreyL ProductEngine 84f3b2865f Merged in lindenlab/viewer-release 2019-11-12 00:39:07 +02:00
Nat Goodspeed 7ed993913c Automated merge with ssh://bitbucket.org/lindenlab/viewer-release 2019-11-11 16:45:37 -05:00
andreykproductengine 37eb735ba7 Merged in lindenlab/viewer-release 2019-09-10 20:30:25 +03:00
Nat Goodspeed 24c7d14199 Automated merge with ssh://bitbucket.org/lindenlab/viewer-release 2019-09-10 11:54:43 -04:00
Nat Goodspeed 98be6e141c DRTVWR-493: Streamline LLParamSingleton, LLLockedSingleton.
Simplify LLSingleton::SingletonLifetimeManager to SingletonInitializer: that
struct has not been responsible for deletion ever since LLSingletonBase
acquired dependency-ordered deleteAll().

Move SingletonData::mInitState changes from SingletonLifetimeManager to
constructSingleton() method. Similarly, constructSingleton() now sets
SingletonData::mInstance instead of making its caller store the pointer.

Add variadic arguments to LLSingleton::constructSingleton() so we can reuse it
for LLParamSingleton.

Add finishInitializing() method to encapsulate logic reused for
getInstance()'s INITIALIZING and DELETED cases.

Make LLParamSingleton a subclass of LLSingleton, just as LLLockedSingleton is
a subclass of LLParamSingleton. Make LLParamSingleton a friend of LLSingleton,
so it can access private members of LLSingleton without also granting access
to any DERIVED_CLASS subclass. This eliminates the need for protected
getInitState().

LLParamSingleton::initParamSingleton() reuses LLSingleton::constructSingleton()
and finishInitializing(). Its getInstance() method completely replaces
LLSingleton::getInstance(): in most EInitStates, LLParamSingleton::getInstance()
is an error.

Use a std::mutex to serialize calls to LLParamSingleton::initParamSingleton()
and getInstance(). While LLSingleton::getInstance() relies on the "initialized
exactly once" guarantee for block-scope static declarations, LLParamSingleton
cannot rely on the same mechanism.

LLLockedSingleton is now a very succinct subclass of LLParamSingleton -- they
have very similar functionality.

Giving the LLSINGLETON() macro variadic arguments eliminates the need for a
separate LLPARAMSINGLETON() macro, while continuing to support existing usage.
2019-08-12 09:44:56 -04:00
andreykproductengine 55983b9abd SL-10908 One more safeguard 2019-08-05 20:52:18 +03:00
andreykproductengine 17fae30f72 DRTVWR-493 LLImage to LLParamSingleton 2019-07-25 15:17:11 +03:00
Anchor 2c2bdcf348 [DRTVWR-476] - fix compiler errors 32 bit windows build 2019-06-10 15:56:44 -07:00
andreykproductengine ce380a4e4f SL-11138 Bitmaps format support bug 2019-05-15 19:28:17 +03:00
andreykproductengine 26fae750ba SL-10291 Replace apr_mutex with standard C++11 functionality 2019-01-14 22:04:44 +02:00
andreykproductengine d406a086ba MAINT-8923 Better allocation failure handling 2018-07-27 19:42:08 +03:00
andreykproductengine e24d4c9f4d MAINT-8923 Better allocation failure handling, createGLTexture crashes 2018-07-26 20:06:26 +03:00
Andrey Kleshchev 6e445e82e2 MAINT-8091 Removed deprecated and unused private memory pooling 2018-01-30 14:03:26 +00:00
AndreyL ProductEngine 57a99273ed Merged in lindenlab/viewer-release 2018-01-17 03:20:12 +02:00
andreykproductengine 6ac2b2bb4f MAINT-8167 Fixed uploading JPEG image from Unicode directory fails 2018-01-10 18:51:20 +02:00
andreykproductengine 34d3b49d1f MAINT-2124 Texture allocation issues 2017-12-05 17:54:17 +02:00
Nat Goodspeed e3a2c5e321 DRTVWR-418: Merge from latest viewer-release 2017-11-29 14:47:09 -05:00
andreykproductengine e5ef898728 MAINT-8028 Fixed memory leak in allocateDataSize() 2017-11-27 15:02:33 +02:00
andreykproductengine d7732280a9 Merged from viewer-lynx 2017-10-27 21:00:18 +03:00
Nat Goodspeed 0c7bc67814 Automated merge with ssh://bitbucket.org/lindenlab/viewer-release 2017-10-11 14:35:49 -04:00
Oz Linden 01e0b78c59 merge changes for DRTVWR-439 2017-08-16 15:43:58 -04:00
andreykproductengine 3d8dc8cd6d Fixed line endings for llpngwrapper.cpp 2017-06-12 15:26:10 +03:00
ruslantproductengine 6dcde6469d [SL-711] - Eliminate some overheads in texturecache.
- Eliminate memory overhead when need duplicated scaled image.
- Small improvement in LLImageBase::getCodecFromExtension()
2017-06-06 15:30:03 +03:00
pavelkproductengine 5205be0c65 STORM-2148 Crash on trying to save texture file(s) to computer from inventory 2017-05-31 19:28:46 +03:00
Nat Goodspeed ae0b3149ba DRTVWR-418: Fix a round of compile errors surfaced by -std=c++11.
These are mostly things that were in fact erroneous, but accepted by older
compilers.

This changeset has not yet been built with Visual Studio 2013 or Linux gcc,
even with -std=c++11.

This changeset has not been built *without* -std=c++11. It should be used in
conjunction with a corresponding change to LL_BUILD_DARWIN_BASE_SWITCHES in
viewer-build-variables/variables.

This is a work in progress. We do not assert that this changeset completes the
work needed to turn on -std=c++11, even on the Mac.
2017-02-23 16:49:49 -05:00
Nat Goodspeed 434f0e161a Automated merge with ssh://bitbucket.org/lindenlab/viewer-release 2017-02-03 09:54:52 -05:00
AndreyL ProductEngine a65b586b18 MAINT-6729 Additional fix for crash in LLImageGL::analyzeAlpha() 2016-12-08 17:21:05 +02:00
AndreyL ProductEngine f75ea457c8 MAINT-6818 Fix for LLImageBase::allocateData crash 2016-10-19 01:12:52 +03:00
Rider Linden 100aa4b79e Merge 2016-09-16 14:59:52 -07: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 53f9fbcfb7 add run time error checking to LLImageRaw::scale 2016-09-06 09:11:10 -04:00
AndreyL ProductEngine 7d77b82f37 Merged in andreyl_productengine/viewer-427 2016-08-29 05:22:45 +03:00
pavelkproductengine b22fc7f470 MAINT-6476 VOB - User can add any size image to an Outfit Gallery outfit folders 2016-08-25 17:48:27 +03:00
Nat Goodspeed 83eb960063 MAINT-5011: Derive image-load exceptions from LLContinueError.
Failure to load an image shouldn't crash the whole viewer.
2016-08-17 15:47:08 -04:00
Nat Goodspeed e72bdc9bc5 Automated merge with ssh://bitbucket.org/lindenlab/viewer-release 2016-08-17 11:41:12 -04:00
Nat Goodspeed 5e9d2f57c8 MAINT-5011: Use LLTHROW() instead of plain BOOST_THROW_EXCEPTION().
A level of preprocessor indirection lets us later change the implementation if
desired.
2016-08-17 11:36:24 -04:00
AndreyL ProductEngine 5e02d304f0 MAINT-6618 More checks 2016-08-09 19:26:30 +03:00
AndreyL ProductEngine d4b1db277c MAINT-6618 Fixed the crash in LLImageRaw::scale() + some additional checks 2016-08-09 05:07:39 +03:00
AndreyL ProductEngine f459c67fae Buildfix: brought back LINDEN_J2C_COMMENT_PREFIX 2016-08-05 00:58:09 +03:00
AndreyL ProductEngine 2339e759fc MAINT-4327/MAINT-6584 Supress the crash on memory allocation error when decoding J2C images 2016-07-27 05:49:07 +03:00
Nat Goodspeed acdb050ce5 MAINT-6584: Convert LLImage class hierarchy to standard 'bool'
instead of legacy BOOL.
2016-07-22 11:35:23 -04:00
Nat Goodspeed 71b593e88b MAINT-6584: Streamline static LLImageJ2C implementation API.
Specifically, remove unused function pointer types CreateLLImageJ2CFunction,
DestroyLLImageJ2CFunction and EngineInfoLLImageJ2CFunction.

Also eliminate static fallbackDestroyLLImageJ2CImpl() and
fallbackEngineInfoLLImageJ2CImpl(), leaving only static
fallbackCreateLLImageJ2CImpl().

We do need a factory function to instantiate the appropriate LLImageJ2CImpl
subclass, so leave the fallbackCreateLLImageJ2CImpl() link seam in place.

However, given that every known LLImageJ2CImpl subclass is cheap to
instantiate, make getEngineInfo() a pure virtual method on that subclass: the
static LLImageJ2C::getEngineInfo() method can temporarily construct an
instance to query. While we're at it, make getEngineInfo() return std::string
like LLImageJ2C::getEngineInfo(). It's ridiculous that
fallbackEngineInfoLLImageJ2CImpl() implementations constructed a static
std::string and returned its c_str(), only to have LLImageJ2C::getEngineInfo()
construct ANOTHER std::string from the returned const char*.

fallbackDestroyLLImageJ2CImpl() never did anything useful: it merely deleted
the passed LLImageJ2CImpl subclass pointer as the specific subclass type. But
since LLImageJ2CImpl's destructor is virtual, LLImageJ2C's destructor could
simply delete the stored LLImageJ2CImpl*. In fact, make mImpl a
boost::scoped_ptr<LLImageJ2CImpl> so we don't even have to delete it manually.
2016-07-21 16:49:02 -04:00
Nat Goodspeed 9c49a6c91d MAINT-5011: Introduce LLException base class for viewer exceptions.
This also introduces LLContinueError for exceptions which should interrupt
some part of viewer processing (e.g. the current coroutine) but should attempt
to let the viewer session proceed.

Derive all existing viewer exception classes from LLException rather than from
std::runtime_error or std::logic_error.

Use BOOST_THROW_EXCEPTION() rather than plain 'throw' to enrich the thrown
exception with source file, line number and containing function.
2016-07-19 16:25:25 -04:00
Nat Goodspeed 636ce117bb MAINT-5011: Per NickyD, put PngError in anonymous namespace. 2016-07-14 10:35:56 -04:00
Nat Goodspeed 75149be061 MAINT-5011: Wrap thrown png_const_charp in new PngError class
derived from std::runtime_error.
2016-07-13 14:19:26 -04:00
Nicky e8aa2dd71f x64: Do not use a union of LLColor4U. Especially having the two pointer in there will blow up the struct to at least 8 byte, which will break VBO packing as this class needs to be 4 byte in size.
(transplanted from 847df86d6b5daa69dcfc428df18876a9c1e8bef6)
2016-04-22 14:58:25 +02:00
Oz Linden c8726aba30 remove execute permission from many files that should not have it 2015-11-10 09:48:56 -05:00
ruslantproductengine ff3e1ae7d6 MAINT-5343 (Viewer sometimes crashes when updating a local tga texture when RLE or BMP compression is disabled - LLImageTGA::decodeTruecolorNonRle) 2015-08-04 17:51:58 +03:00