summaryrefslogtreecommitdiff
path: root/indra/newview/llviewerwindow.cpp
AgeCommit message (Collapse)Author
2020-04-20Merged master into DRTVWR-508Andrey Kleshchev
2020-04-13SL-12607 Added more icons and draw methods to draw themAndrey Kleshchev
2020-03-27SL-12902 Better fix for light color values in color swatch not matching ↵Runitai Linden
light color values inworld.
2020-03-25SL-11216: Convert LLVersionInfo to an LLSingleton.Nat Goodspeed
This changeset is meant to exemplify how to convert a "namespace" class whose methods are static -- and whose data are module-static -- to an LLSingleton. LLVersionInfo has no initClass() or cleanupClass() methods, but the general idea is the same. * Derive the class from LLSingleton<T>: class LLSomeSingleton: public LLSingleton<LLSomeSingleton> { ... }; * Add LLSINGLETON(LLSomeSingleton); in the private section of the class. This usage implies a separate LLSomeSingleton::LLSomeSingleton() definition, as described in indra/llcommon/llsingleton.h. * Move module-scope data in the .cpp file to non-static class members. Change any sVariableName to mVariableName to avoid being outright misleading. * Make static class methods non-static. Remove '//static' comments from method definitions as needed. * For LLVersionInfo specifically, the 'const std::string&' return type was replaced with 'std::string'. Returning a reference to a static or a member, const or otherwise, is an anti-pattern: the interface constrains the implementation, prohibiting possibly later returning a temporary (an expression). * For LLVersionInfo specifically, 'const S32' return type was replaced with simple 'S32'. 'const' is just noise in that usage. * Simple member initialization (e.g. the original initializer expressions for static variables) can be done with member{ value } initializers (no examples here though). * Delete initClass() method. * LLSingleton's forté is of course lazy initialization. It might work to simply delete any calls to initClass(). But if there are side effects that must happen at that moment, replace LLSomeSingleton::initClass() with (void)LLSomeSingleton::instance(); * Most initClass() initialization can be done in the constructor, as would normally be the case. * Initialization that might cause a circular LLSingleton reference should be moved to initSingleton(). Override 'void initSingleton();' should be private. * For LLVersionInfo specifically, certain initialization that used to be lazily performed was made unconditional, due to its low cost. * For LLVersionInfo specifically, certain initialization involved calling methods that have become non-static. This was moved to initSingleton() because, in a constructor body, 'this' does not yet point to the enclosing class. * Delete cleanupClass() method. * There is already a generic LLSingletonBase::deleteAll() call in LLAppViewer::cleanup(). It might work to let this new LLSingleton be cleaned up with all the rest. But if there are side effects that must happen at that moment, replace LLSomeSingleton::cleanupClass() with LLSomeSingleton::deleteSingleton(). That said, much of the benefit of converting to LLSingleton is deleteAll()'s guarantee that cross-LLSingleton dependencies will be properly honored: we're trying to migrate the code base away from the present fragile manual cleanup sequence. * Most cleanupClass() cleanup can be done in the destructor, as would normally be the case. * Cleanup that might throw an exception should be moved to cleanupSingleton(). Override 'void cleanupSingleton();' should be private. * Within LLSomeSingleton methods, remove any existing LLSomeSingleton::methodName() qualification: simple methodName() is better. * In the rest of the code base, convert most LLSomeSingleton::methodName() references to LLSomeSingleton::instance().methodName(). (Prefer instance() to getInstance() because a reference does not admit the possibility of NULL.) * Of course, LLSomeSingleton::ENUM_VALUE can remain unchanged. In general, for many successive references to an LLSingleton instance, it can be useful to capture the instance() as in: auto& versionInfo{LLVersionInfo::instance()}; // ... versionInfo.getVersion() ... We did not do that here only to simplify the code review. The STRINGIZE(expression) macro encapsulates: std::ostringstream out; out << expression; return out.str(); We used that in a couple places. For LLVersionInfo specifically, lllogininstance_test.cpp used to dummy out a couple specific static methods. It's harder to dummy out LLSingleton::instance() references, so we add the real class to that test.
2020-03-19SL-12607 FMOD LogoAndrey Kleshchev
2020-02-21Merge master (v 6.3.8) into DRTVWR-440Dave Houlton
2020-02-03Merge branch 'DRTVWR-501' into trunkAndrey Lihatskiy
2020-01-28DRTVWR-440, merge in latest from 6.3.7 releaseDave Houlton
2019-12-16Merge viewer-release 6.3.6 into viewwer-eep repoDave Houlton
2019-12-06SL-12198 Log source of quit commandandreykproductengine
2019-11-28BuildfixAndreyL ProductEngine
2019-11-27Upstream merge from viewer-nekoAndreyL ProductEngine
2019-11-27Downstream merge from lindenlab/viewer-lynxAndreyL ProductEngine
2019-11-15SL-11898 Hi-res snapshots do not support UI and HUDs and should not show themandreykproductengine
2019-11-13Merge in from viewer-release 6.3.5Dave Houlton
2019-11-12Downstream merge from lindenlab/viewer-servalAndreyL ProductEngine
2019-11-12Post-merge fixesAndreyL ProductEngine
2019-11-12Downstream merge from 494-maint-wassailAndreyL ProductEngine
2019-11-12Merged in lindenlab/viewer-releaseAndreyL ProductEngine
2019-10-28SL-6109 Fixed conflict resolution issue caused by menu acceleratorsandreykproductengine
2019-10-24SL-12185 [mac] crash when typing letters while viewer is loadingMnikolenko Productengine
2019-10-22SL-12173 Crash on setShapeandreykproductengine
2019-10-16mergeBrad Payne (Vir Linden)
2019-10-15Merge from viewer-releaseandreykproductengine
2019-09-27SL-6109 Cleanup, run commands, and preparation for tooltip supportandreykproductengine
2019-09-27SL-6109 Small reorganisationandreykproductengine
2019-09-26SL-6109 Conflict resolutionandreykproductengine
2019-09-25SL-6109 Mouse support readyandreykproductengine
2019-09-10Merge viewer-release 6.3.2Graham Linden
2019-09-10Merged in lindenlab/viewer-releaseandreykproductengine
2019-09-10SL-11910 [Win] Horizontal scrollandreykproductengine
2019-09-04SL-12104 Fixed: Oversized snapshots being broken.NiranV
2019-09-19SL-6109 Implement keybindingsandreykproductengine
2019-08-14Merged in lindenlab/viewer-releaseandreykproductengine
2019-08-13Merge viewer-release 6.2.5Graham Linden
2019-08-13Merged in lindenlab/viewer-bearAndreyL ProductEngine
2019-08-13Merged in lindenlab/viewer-lynxAndreyL ProductEngine
2019-08-13Merged in lindenlab/viewer-releaseAndreyL ProductEngine
2019-08-13DRTVWR-493 Reworked a number of initsandreykproductengine
2019-08-10DRTVWR-493 LLUI to LLParamSingletonandreykproductengine
2019-07-26SL-8380 Ability to disable 2D UI tooltipsandreykproductengine
2019-07-11SL-11435 When ALM is enabled, Depth mode shots are broken when snapshot size ↵ruslantproductengine
is set to anything above current window size - fixed bug described in the ticket - fixed bug with UI (when user change the layer type (color/depth))
2019-07-18SL-11592 [Mac] Ability to bind extra mouse buttons for push to talkandreykproductengine
2019-07-18SL-11592 [Win] Ability to bind extra mouse buttons for push to talkandreykproductengine
2019-06-12SL-11402 Last session image should be saved as pngandreykproductengine
2019-06-05assorted cleanupOz Linden
2019-04-17Merge 6.2.1Graham Linden
2019-04-17Merged in lindenlab/viewer-releaseAndreyL ProductEngine
2019-04-11SL-10891 Reset UI scale factor on first run if OS's display scaling is not 100%AndreyL ProductEngine
2019-04-08SL-10907 getWidthF32 crash in fontsandreykproductengine