Age | Commit message (Collapse) | Author | |
---|---|---|---|
2020-03-25 | SL-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. | |||
2019-11-12 | Downstream merge from 494-maint-wassail | AndreyL ProductEngine | |
2019-10-16 | Brought back the changes from @andreyk for improved mouse scroll wheel ↵ | AndreyL ProductEngine | |
performance (previously 8e228364f324) | |||
2019-10-15 | Downstream merge from lindenlab/viewer-manul | AndreyL ProductEngine | |
2019-09-14 | Backed out changeset: 8e228364f324 | AndreyL ProductEngine | |
2019-09-14 | Backed out changeset: a6398f90389a | AndreyL ProductEngine | |
2019-09-10 | Merged in lindenlab/viewer-release | andreykproductengine | |
2019-09-05 | SL-11315 Viewer asks to play media and retains selected choice | andreykproductengine | |
2019-06-21 | DRTVWR-493 LLViewerParcelMedia to singleton | andreykproductengine | |
2019-06-21 | DRTVWR-493 LLViewerMedia to singleton | andreykproductengine | |
2019-06-20 | Merged in DRTVWR-492 | AndreyL ProductEngine | |
2019-06-11 | Pull in CEF 75.0.1+gb5e74dd+chromium-75.0.3770.80 and Dullahan 1.2.x along ↵ | callum_linden | |
with some minor compatibility changes | |||
2019-06-10 | Changes from @andreyk for improved mouse scroll wheel performance and pull ↵ | callum_linden | |
in new Dullahan with CEF 74.1.19_gb62bacf_chromium-74.0.3729.157 | |||
2019-02-14 | SL-1005 Changed media event is not firing when the URL is amended by a '#' ↵ | andreykproductengine | |
since Alex-Ivy | |||
2018-11-26 | SL-10101 Remade most frequent setting calls to cached variants | andreykproductengine | |
2019-04-24 | SL-10994 Removed Facebook In-world Sharing | AndreyL ProductEngine | |
SL-11024 Fixed Twitter connect failure | |||
2019-04-11 | SL-10924 Fix data escaping to accomodate CEF update | andreykproductengine | |
2019-04-12 | Backed out changeset: ce892720a893 (SL-10924) | andreykproductengine | |
2019-04-10 | SL-10924 CEF update broke many visitor trackers | andreykproductengine | |
2018-06-25 | MAINT-8457 FIXED "Mute" switching cancels the volume settings of Nearby Media | maxim_productengine | |
2018-04-17 | MAINT-8325 Fixed The Save Local dialog disconnects the viewer if you do not ↵ | andreykproductengine | |
choose the save directory files within the first minute | |||
2018-04-12 | Merged in lindenlab/viewer-release | AndreyL ProductEngine | |
2018-03-01 | Automated merge with tip of viewer-release | callum_linden | |
2018-02-14 | Automated merge with tip of viewer-release | callum_linden | |
2018-03-02 | MAINT-8297 path fix #2 | andreykproductengine | |
2018-02-21 | MAINT-8297 Removing old ca bundle | Andrey Kleshchev | |
2018-02-15 | MAINT-8297 Fixed "Missing CA File" message when running under debugger on ↵ | andreykproductengine | |
windows | |||
2018-02-12 | Merged in lindenlab/viewer-release | AndreyL ProductEngine | |
2018-01-26 | Fixes for: MAINT-8244 Text in CEF cannot be selected with the mouse. ↵ | callum_linden | |
MAINT-8245 Expose CEF log file and logging severity to viewer and MAINT-8246 Expose the CEF remote debugging system to the viewer | |||
2018-01-17 | Fixes for 'MAINT-8196 Remove LLPluginCookieStore from the viewer' and ↵ | callum_linden | |
'MAINT-8194 Remove per-frame calls to updateJavascriptObject()' | |||
2018-01-17 | merge 5.1.0-release | Oz Linden | |
2018-01-17 | Merged in lindenlab/viewer-release | AndreyL ProductEngine | |
2018-01-05 | MAINT-8143 viewer doen't respect allow media to autoplay unchecked | Mnikolenko Productengine | |
2017-12-14 | Pull in Dullahan 1.1.929 (multiple file picking support) and update plugin ↵ | callum_linden | |
code accordingly | |||
2017-11-21 | MAINT-8007 Music do not start playing after disabling | Mnikolenko Productengine | |
2017-08-23 | merge changes for 5.0.7-release | Oz Linden | |
2017-08-16 | merge changes for DRTVWR-439 | Oz Linden | |
2017-06-06 | MAINT-7462 check pointer to avoid allocation crash in llpluginclassmedia | andreykproductengine | |
2017-04-19 | Hopeful fix for MAINT-7220 Windows Error Message 'SLPlugin.exe has stopped ↵ | Callum Prentice | |
working ' appears. | |||
2017-02-02 | merge changes for 5.0.1-release | Oz Linden | |
2017-01-20 | MAINT-7069 Media controls show Play icon even though media is autoplaying | andreykproductengine | |
2016-12-19 | MAINT-7017 Stop All was preventing media from playing | andreykproductengine | |
2016-12-19 | MAINT-6761 Video that is not playing or paused should be stopped | andreykproductengine | |
2016-12-09 | MAINT-6840 start and pause doesn't wotk reliably and can get stuck | andreykproductengine | |
2016-12-01 | Ignore plugin warnings on linux | Mnikolenko Productengine | |
2016-11-16 | merge changes for 4.1.2-release | Oz Linden | |
2016-10-27 | MAINT-6810 win10, 4k monitor and UI scale of 2.0 makes most web content too ↵ | pavelkproductengine | |
small to read | |||
2016-10-27 | Merged in lindenlab/viewer-bear | AndreyL ProductEngine | |
2016-10-05 | MAINT-6761 Play button in the top right corner was not functioning when pressed | andreykproductengine | |
2016-07-21 | SL-429: Use a new certificate authority bundle based on data from Mozilla | Oz Linden | |