Commit Graph

56 Commits (b6ba43bed5dafd0f19862d2ff637909829fdc96f)

Author SHA1 Message Date
Ansariel 9a2b83b294 Merge branch 'develop' of https://github.com/secondlife/viewer
# Conflicts:
#	indra/llcommon/llmemory.cpp
#	indra/llmessage/CMakeLists.txt
#	indra/llmessage/llfiltersd2xmlrpc.cpp
#	indra/newview/lldebugview.cpp
#	indra/newview/lldrawpoolbump.cpp
#	indra/newview/llheroprobemanager.cpp
#	indra/newview/llnetmap.cpp
#	indra/newview/llslurl.cpp
#	indra/newview/llsurface.cpp
#	indra/newview/lltextureview.cpp
#	indra/newview/llversioninfo.cpp
#	indra/newview/llviewertexture.cpp
#	indra/newview/llviewertexturelist.h
#	indra/newview/llviewerwindow.cpp
#	indra/newview/llvlcomposition.cpp
#	indra/newview/llvoiceclient.cpp
#	indra/newview/llworld.cpp
#	indra/newview/llxmlrpctransaction.cpp
#	indra/newview/skins/default/xui/da/floater_about.xml
#	indra/newview/skins/default/xui/de/floater_about.xml
#	indra/newview/skins/default/xui/de/menu_viewer.xml
#	indra/newview/skins/default/xui/en/floater_about.xml
#	indra/newview/skins/default/xui/es/floater_about.xml
#	indra/newview/skins/default/xui/es/menu_viewer.xml
#	indra/newview/skins/default/xui/fr/floater_about.xml
#	indra/newview/skins/default/xui/it/floater_about.xml
#	indra/newview/skins/default/xui/it/menu_viewer.xml
#	indra/newview/skins/default/xui/ja/menu_viewer.xml
#	indra/newview/skins/default/xui/pl/menu_viewer.xml
#	indra/newview/skins/default/xui/pt/floater_about.xml
#	indra/newview/skins/default/xui/pt/menu_viewer.xml
#	indra/newview/skins/default/xui/ru/floater_about.xml
#	indra/newview/skins/default/xui/ru/menu_viewer.xml
#	indra/newview/skins/default/xui/tr/floater_about.xml
#	indra/newview/skins/default/xui/tr/menu_viewer.xml
#	indra/newview/skins/default/xui/zh/floater_about.xml
#	indra/newview/skins/default/xui/zh/menu_viewer.xml
#	scripts/messages/message_template.msg.sha1
2024-07-02 18:08:57 +02:00
Alexander Gavriliuk 2ea5ac0c43 #1111 Remove xmlrpc-epi 2024-07-01 20:20:04 +02:00
Ansariel e2e37cced8 Fix line endlings 2024-05-22 22:40:26 +03:00
Ansariel 1b67dd855c Merge remote-tracking branch 'origin/main' into DRTVWR-600-maint-A
# Conflicts:
#	autobuild.xml
#	indra/cmake/CMakeLists.txt
#	indra/cmake/GoogleMock.cmake
#	indra/llaudio/llaudioengine_fmodstudio.cpp
#	indra/llaudio/llaudioengine_fmodstudio.h
#	indra/llaudio/lllistener_fmodstudio.cpp
#	indra/llaudio/lllistener_fmodstudio.h
#	indra/llaudio/llstreamingaudio_fmodstudio.cpp
#	indra/llaudio/llstreamingaudio_fmodstudio.h
#	indra/llcharacter/llmultigesture.cpp
#	indra/llcharacter/llmultigesture.h
#	indra/llimage/llimage.cpp
#	indra/llimage/llimagepng.cpp
#	indra/llimage/llimageworker.cpp
#	indra/llimage/tests/llimageworker_test.cpp
#	indra/llmessage/tests/llmockhttpclient.h
#	indra/llprimitive/llgltfmaterial.h
#	indra/llrender/llfontfreetype.cpp
#	indra/llui/llcombobox.cpp
#	indra/llui/llfolderview.cpp
#	indra/llui/llfolderviewmodel.h
#	indra/llui/lllineeditor.cpp
#	indra/llui/lllineeditor.h
#	indra/llui/lltextbase.cpp
#	indra/llui/lltextbase.h
#	indra/llui/lltexteditor.cpp
#	indra/llui/lltextvalidate.cpp
#	indra/llui/lltextvalidate.h
#	indra/llui/lluictrl.h
#	indra/llui/llview.cpp
#	indra/llwindow/llwindowmacosx.cpp
#	indra/newview/app_settings/settings.xml
#	indra/newview/llappearancemgr.cpp
#	indra/newview/llappearancemgr.h
#	indra/newview/llavatarpropertiesprocessor.cpp
#	indra/newview/llavatarpropertiesprocessor.h
#	indra/newview/llbreadcrumbview.cpp
#	indra/newview/llbreadcrumbview.h
#	indra/newview/llbreastmotion.cpp
#	indra/newview/llbreastmotion.h
#	indra/newview/llconversationmodel.h
#	indra/newview/lldensityctrl.cpp
#	indra/newview/lldensityctrl.h
#	indra/newview/llface.inl
#	indra/newview/llfloatereditsky.cpp
#	indra/newview/llfloatereditwater.cpp
#	indra/newview/llfloateremojipicker.h
#	indra/newview/llfloaterimsessiontab.cpp
#	indra/newview/llfloaterprofiletexture.cpp
#	indra/newview/llfloaterprofiletexture.h
#	indra/newview/llgesturemgr.cpp
#	indra/newview/llgesturemgr.h
#	indra/newview/llimpanel.cpp
#	indra/newview/llimpanel.h
#	indra/newview/llinventorybridge.cpp
#	indra/newview/llinventorybridge.h
#	indra/newview/llinventoryclipboard.cpp
#	indra/newview/llinventoryclipboard.h
#	indra/newview/llinventoryfunctions.cpp
#	indra/newview/llinventoryfunctions.h
#	indra/newview/llinventorygallery.cpp
#	indra/newview/lllistbrowser.cpp
#	indra/newview/lllistbrowser.h
#	indra/newview/llpanelobjectinventory.cpp
#	indra/newview/llpanelprofile.cpp
#	indra/newview/llpanelprofile.h
#	indra/newview/llpreviewgesture.cpp
#	indra/newview/llsavedsettingsglue.cpp
#	indra/newview/llsavedsettingsglue.h
#	indra/newview/lltooldraganddrop.cpp
#	indra/newview/llurllineeditorctrl.cpp
#	indra/newview/llvectorperfoptions.cpp
#	indra/newview/llvectorperfoptions.h
#	indra/newview/llviewerparceloverlay.cpp
#	indra/newview/llviewertexlayer.cpp
#	indra/newview/llviewertexturelist.cpp
#	indra/newview/macmain.h
#	indra/test/test.cpp
2024-05-22 19:04:52 +02:00
Ansariel 0ecfbc3de9 Merge remote-tracking branch 'LGPL/master'
# Conflicts:
#	autobuild.xml
#	indra/cmake/CMakeLists.txt
#	indra/cmake/GoogleMock.cmake
#	indra/llappearance/llwearable.cpp
#	indra/llcharacter/llmultigesture.cpp
#	indra/llcharacter/llmultigesture.h
#	indra/llimage/llimage.cpp
#	indra/llimage/llimagepng.cpp
#	indra/llimage/llimageworker.cpp
#	indra/llmessage/tests/llmockhttpclient.h
#	indra/llrender/llfontfreetype.cpp
#	indra/llui/llcombobox.cpp
#	indra/llui/llfolderview.cpp
#	indra/llui/llfolderviewmodel.h
#	indra/llui/lllineeditor.cpp
#	indra/llui/lllineeditor.h
#	indra/llui/lltextbase.cpp
#	indra/llui/lltextbase.h
#	indra/llui/lltexteditor.cpp
#	indra/llui/lltextvalidate.cpp
#	indra/llui/lltextvalidate.h
#	indra/llui/lluictrl.h
#	indra/llui/llview.cpp
#	indra/llwindow/llwindowmacosx.cpp
#	indra/newview/app_settings/settings.xml
#	indra/newview/llappearancemgr.cpp
#	indra/newview/llappearancemgr.h
#	indra/newview/llavatarpropertiesprocessor.h
#	indra/newview/llbreadcrumbview.cpp
#	indra/newview/llbreadcrumbview.h
#	indra/newview/llbreastmotion.cpp
#	indra/newview/llbreastmotion.h
#	indra/newview/llconversationmodel.h
#	indra/newview/lldensityctrl.cpp
#	indra/newview/lldensityctrl.h
#	indra/newview/llface.inl
#	indra/newview/llfloatereditsky.cpp
#	indra/newview/llfloatereditwater.cpp
#	indra/newview/llfloateremojipicker.h
#	indra/newview/llfloaterimsessiontab.cpp
#	indra/newview/llfloaterprofiletexture.cpp
#	indra/newview/llfloaterprofiletexture.h
#	indra/newview/llgesturemgr.cpp
#	indra/newview/llgesturemgr.h
#	indra/newview/llgroupactions.cpp
#	indra/newview/llimpanel.cpp
#	indra/newview/llinventorybridge.cpp
#	indra/newview/llinventorybridge.h
#	indra/newview/llinventoryclipboard.cpp
#	indra/newview/llinventoryclipboard.h
#	indra/newview/llinventoryfunctions.cpp
#	indra/newview/llinventoryfunctions.h
#	indra/newview/llinventorygallery.cpp
#	indra/newview/lllistbrowser.cpp
#	indra/newview/lllistbrowser.h
#	indra/newview/llpaneleditwearable.cpp
#	indra/newview/llpanelobjectinventory.cpp
#	indra/newview/llpanelprofile.cpp
#	indra/newview/llpreviewgesture.cpp
#	indra/newview/llsavedsettingsglue.cpp
#	indra/newview/llsavedsettingsglue.h
#	indra/newview/lltooldraganddrop.cpp
#	indra/newview/llurllineeditorctrl.cpp
#	indra/newview/llvectorperfoptions.cpp
#	indra/newview/llvectorperfoptions.h
#	indra/newview/llviewermenu.cpp
#	indra/newview/llviewerparceloverlay.cpp
#	indra/newview/llviewertexlayer.cpp
#	indra/newview/llviewertexturelist.cpp
#	indra/newview/macmain.h
2024-05-16 14:10:55 +02:00
Ansariel 5f1a19af72 Merge remote-tracking branch 'LL/marchcat/x-ws-merge'
# Conflicts:
#	autobuild.xml
#	indra/linux_crash_logger/llcrashloggerlinux.cpp
#	indra/newview/llappviewerlinux_api.h
#	indra/newview/llappviewerlinux_api_dbus.cpp
#	indra/newview/llappviewerlinux_api_dbus.h
#	indra/newview/llavatarpropertiesprocessor.h
#	indra/newview/llcallbacklist.cpp
#	indra/newview/llimpanel.h
2024-05-01 12:30:57 +02:00
Andrey Lihatskiy 1b68f71348 #824 Process source files in bulk: replace tabs with spaces, convert CRLF to LF, and trim trailing whitespaces as needed 2024-04-29 07:56:09 +03:00
Ansariel b71c7f37ea Merge branch 'DRTVWR-600-maint-A' of https://github.com/secondlife/viewer
# Conflicts:
#	indra/newview/llagent.cpp
#	indra/newview/llagent.h
#	indra/newview/llagentcamera.cpp
#	indra/newview/llagentcamera.h
#	indra/newview/llappviewer.cpp
#	indra/newview/llappviewerlinux_api_dbus.cpp
#	indra/newview/llappviewerwin32.cpp
#	indra/newview/llattachmentsmgr.cpp
#	indra/newview/llattachmentsmgr.h
#	indra/newview/llavataractions.cpp
#	indra/newview/llcallingcard.cpp
#	indra/newview/llcompilequeue.cpp
#	indra/newview/llcontrolavatar.h
#	indra/newview/lldirpicker.cpp
#	indra/newview/lldrawpoolalpha.cpp
#	indra/newview/lldrawpoolalpha.h
#	indra/newview/lldrawpoolavatar.h
#	indra/newview/lldynamictexture.cpp
#	indra/newview/llfasttimerview.cpp
#	indra/newview/llfavoritesbar.cpp
#	indra/newview/llfilepicker.cpp
#	indra/newview/llfloateravatarpicker.cpp
#	indra/newview/llfloaterbeacons.cpp
#	indra/newview/llfloaterbvhpreview.cpp
#	indra/newview/llfloatercamera.cpp
#	indra/newview/llfloaterchangeitemthumbnail.cpp
#	indra/newview/llfloaterdisplayname.cpp
#	indra/newview/llfloatergotoline.cpp
#	indra/newview/llfloaterimnearbychathandler.cpp
#	indra/newview/llfloaterland.cpp
#	indra/newview/llfloaterpreference.cpp
#	indra/newview/llfloaterpreferencesgraphicsadvanced.cpp
#	indra/newview/llfloaterscriptdebug.cpp
#	indra/newview/llfloatersettingsdebug.cpp
#	indra/newview/llfloatersnapshot.cpp
#	indra/newview/llfloatertools.cpp
#	indra/newview/llfloatertools.h
#	indra/newview/llfloateruipreview.cpp
#	indra/newview/llfloaterworldmap.cpp
#	indra/newview/llgesturemgr.cpp
#	indra/newview/llgiveinventory.cpp
#	indra/newview/llglsandbox.cpp
#	indra/newview/llgroupactions.cpp
#	indra/newview/llhudeffectlookat.cpp
#	indra/newview/llhudeffectlookat.h
#	indra/newview/llhudicon.cpp
#	indra/newview/llhudmanager.cpp
#	indra/newview/llhudtext.cpp
#	indra/newview/llhudtext.h
#	indra/newview/llimprocessing.cpp
#	indra/newview/llimview.cpp
#	indra/newview/llinventorybridge.cpp
#	indra/newview/llinventorybridge.h
#	indra/newview/llinventoryfunctions.cpp
#	indra/newview/llinventorymodel.cpp
#	indra/newview/llinventorymodel.h
#	indra/newview/llinventorypanel.cpp
#	indra/newview/llinventorypanel.h
#	indra/newview/lllocalbitmaps.cpp
#	indra/newview/lllogininstance.cpp
#	indra/newview/llmaniptranslate.cpp
#	indra/newview/llmodelpreview.cpp
#	indra/newview/llmodelpreview.h
#	indra/newview/llmutelist.cpp
#	indra/newview/llnavigationbar.cpp
#	indra/newview/llnavigationbar.h
#	indra/newview/llnetmap.cpp
#	indra/newview/llnetmap.h
#	indra/newview/llnotificationlistitem.cpp
#	indra/newview/lloutputmonitorctrl.cpp
#	indra/newview/llpanelcontents.cpp
#	indra/newview/llpaneleditwearable.cpp
#	indra/newview/llpanelexperiencepicker.cpp
#	indra/newview/llpanelface.cpp
#	indra/newview/llpanelgroup.cpp
#	indra/newview/llpanelgroupnotices.cpp
#	indra/newview/llpanelgrouproles.cpp
#	indra/newview/llpanellandaudio.cpp
#	indra/newview/llpanellandmarks.cpp
#	indra/newview/llpanelmaininventory.cpp
#	indra/newview/llpanelobject.cpp
#	indra/newview/llpanelobject.h
#	indra/newview/llpanelpeople.cpp
#	indra/newview/llpanelpermissions.cpp
#	indra/newview/llpanelplaces.cpp
#	indra/newview/llpanelpresetspulldown.cpp
#	indra/newview/llpanelprofile.cpp
#	indra/newview/llpanelprofilepicks.cpp
#	indra/newview/llpanelsnapshot.h
#	indra/newview/llpanelvolume.cpp
#	indra/newview/llpanelwearing.cpp
#	indra/newview/llpreviewanim.cpp
#	indra/newview/llpreviewgesture.cpp
#	indra/newview/llpreviewnotecard.cpp
#	indra/newview/llpreviewscript.cpp
#	indra/newview/llpreviewscript.h
#	indra/newview/llpreviewtexture.cpp
#	indra/newview/llpreviewtexture.h
#	indra/newview/llselectmgr.cpp
#	indra/newview/llsidepaneliteminfo.cpp
#	indra/newview/llsidepaneltaskinfo.cpp
#	indra/newview/llsnapshotlivepreview.cpp
#	indra/newview/llstartup.cpp
#	indra/newview/llstatusbar.cpp
#	indra/newview/llsurface.h
#	indra/newview/llsurfacepatch.cpp
#	indra/newview/lltexturecache.h
#	indra/newview/lltexturectrl.cpp
#	indra/newview/lltexturefetch.cpp
#	indra/newview/lltoastimpanel.cpp
#	indra/newview/lltoolbarview.cpp
#	indra/newview/lltooldraganddrop.cpp
#	indra/newview/lltoolface.cpp
#	indra/newview/lltoolfocus.cpp
#	indra/newview/lltoolgrab.cpp
#	indra/newview/lltoolgun.cpp
#	indra/newview/lltoolgun.h
#	indra/newview/lltoolpie.cpp
#	indra/newview/lltoolplacer.cpp
#	indra/newview/lltoolselect.cpp
#	indra/newview/lluploaddialog.cpp
#	indra/newview/llviewerassetupload.cpp
#	indra/newview/llvieweraudio.cpp
#	indra/newview/llviewerdisplay.cpp
#	indra/newview/llviewerfoldertype.cpp
#	indra/newview/llviewerinput.cpp
#	indra/newview/llviewermenu.cpp
#	indra/newview/llviewermenu.h
#	indra/newview/llviewermenufile.cpp
#	indra/newview/llviewermessage.cpp
#	indra/newview/llviewerobject.cpp
#	indra/newview/llviewerobject.h
#	indra/newview/llviewerobjectlist.cpp
#	indra/newview/llviewerobjectlist.h
#	indra/newview/llviewerparcelmgr.cpp
#	indra/newview/llviewerparceloverlay.cpp
#	indra/newview/llviewerregion.cpp
#	indra/newview/llviewerregion.h
#	indra/newview/llviewershadermgr.cpp
#	indra/newview/llviewertexlayer.cpp
#	indra/newview/llviewertexlayer.h
#	indra/newview/llviewertexture.cpp
#	indra/newview/llviewertexture.h
#	indra/newview/llviewertexturelist.h
#	indra/newview/llviewerwindow.cpp
#	indra/newview/llviewerwindow.h
#	indra/newview/llvoavatar.cpp
#	indra/newview/llvoavatar.h
#	indra/newview/llvoavatarself.cpp
#	indra/newview/llvoavatarself.h
#	indra/newview/llvoiceclient.h
#	indra/newview/llvosky.cpp
#	indra/newview/llvosurfacepatch.cpp
#	indra/newview/llvotree.cpp
#	indra/newview/llvovolume.cpp
#	indra/newview/llvovolume.h
#	indra/newview/llvowater.cpp
#	indra/newview/llworld.cpp
#	indra/newview/llworldmapview.cpp
#	indra/newview/llworldmipmap.cpp
#	indra/newview/pipeline.cpp
2024-02-22 11:43:04 +01:00
Ansariel 60d3dd98a4 Convert remaining BOOL to bool 2024-02-21 23:14:31 +02:00
Ansariel 39a6735fc9 Merge branch 'main' of https://github.com/secondlife/viewer
# Conflicts:
#	.gitignore
#	autobuild.xml
#	indra/cmake/APR.cmake
#	indra/newview/CMakeLists.txt
#	indra/newview/installers/windows/installer_template.nsi
#	indra/newview/viewer_manifest.py
#	indra/test/namedtempfile.h
2023-10-26 15:49:12 +02:00
Nat Goodspeed 117f07e5a4 SL-18837: Avoid stuffing build number into 32-bit int.
Even though LLVersionInfo::getBuild() already returns a 64-bit int, various
consumers assumed it could fit into 32 bits. It was especially bad to pass it
to a classic C style varargs function. Only on a little-endian CPU, and only
because it was the last argument, the damage was limited to truncation --
instead of arbitrary undefined behavior.

Where the consumer doesn't support 64-bit ints, pass as string instead.
2023-10-17 06:33:05 -04:00
Ansariel 95482f6e96 Merge branch 'DRTVWR-518-ui' of https://bitbucket.org/lindenlab/viewer 2020-10-15 14:34:15 +02:00
Mnikolenko Productengine 2ae6df6095 SL-14067 minor cleanup 2020-10-07 15:18:57 +03:00
Mnikolenko Productengine 4afbe638d9 SL-14067 FIXED The 'Unable to Buy' (L$) error persists until relogin 2020-10-06 15:56:11 +03:00
Ansariel b677e01629 Merge branch 'DRTVWR-518-ui' of https://bitbucket.org/lindenlab/viewer 2020-09-23 19:02:19 +02:00
Mnikolenko Productengine 1fb0e233ff SL-13814 Clarify dialog for insufficient L$ balance 2020-09-23 11:38:48 +03:00
Nat Goodspeed 5a260e0cc3 SL-11216: Convert LLVersionInfo to an LLSingleton.
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-25 16:01:31 -04:00
Nicky 9335eded97 Merge with viewer-vs2107 2019-12-08 17:18:43 +01:00
Nat Goodspeed 0bb6f754a1 SL-11216: Convert LLVersionInfo to an LLSingleton.
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-05-30 10:39:37 -04:00
Ansariel 24edb1e6ff Minor fixes for previous commit 2017-09-30 19:01:47 +02:00
Christopher Colosi 4ad7d4b750 Support for multiple currency solutions on a grid and across the hypergrid. 2017-09-20 16:00:25 -07:00
Oz Linden c8726aba30 remove execute permission from many files that should not have it 2015-11-10 09:48:56 -05:00
Graham Madarasz bf6182daa8 Update Mac and Windows breakpad builds to latest 2013-03-29 07:50:08 -07:00
Mark Palange (Mani) 6ab2e44e94 VWR-23666 Removed setting VersionChannelName. LLVersionInfo::resetChannel() and unit tests. Reviewed by brad. 2010-11-01 15:18:18 -07:00
Vadim Savchuk 9188a73301 VWR-22280 FIXED Add "language" parameter to all XMLRPC call (Buy L$ and Buy Land). 2010-08-31 16:57:06 +03:00
Tofu Linden e416840f85 Backed out changeset c3d41f18ce2b
back-out the back-out for this branch.  yay.
2010-08-24 19:22:00 +01:00
Tofu Linden 98cc236503 Backed out changeset a62bf7c0af21
Backing out this merge that I pushed (prematurely) to the wrong place.
2010-08-24 18:44:39 +01:00
Tofu Linden 6ba23344c9 merge heads. whew. 2010-08-24 18:37:53 +01:00
Oz Linden 06b0d72efa Change license from GPL to LGPL (version 2.1) 2010-08-13 07:24:57 -04:00
Richard Nelson 566e3969f9 deprecated LLPanel::child*() methods 2010-07-30 10:02:30 -07:00
Vadim Savchuk 8b09f20d7d EXT-8310 FIXED Incorrect currency format in the Buy L$ floater.
Changes in the Buy L$ floater:
* Set system locale before formatting currency.
* Made money format configurable (via strings.xml).
* Placed the "L$" label to the right of the line editor in FR locale.

Details:
Actually, the proper way to fix this and similar number formatting bugs would be to set the system locale at startup, but:
1. That triggers assertions when parsing locale-agnostic XML files like avatar_skeleton.xml.
2. I'm wary of making such global changes so close to the 2.1 release.
Therefore I just temporarily override current locale before formatting a number and restore the previous locale afterwards.

Reviewed by Tofu at https://codereview.productengine.com/secondlife/r/751/

--HG--
branch : product-engine
2010-07-14 15:05:28 +03:00
Roxie Linden 658ccc3e85 Re-insert backed out SLE checkin so we can fix it 2010-04-07 11:08:04 -07:00
Tofu Linden 0bb3f144c0 Backed out changeset 63b699f90efd 2010-04-07 10:37:07 +01:00
Roxie Linden a2efe4bb41 automated merge 2010-02-26 19:18:15 -08:00
richard ddfc6efbee EXT-5025 - Tooltips block mouse clicks
EXT-4547	[BSI] it is possible to highlight multiple layers of chat
EXT-3844 	Mouse wheel camera zoom is not reflected on View popup slider
EXT-3103 	Add an option to restrict entering non-ascii symbols in text editor.

reviewed by Leyla
2010-02-05 11:32:33 -08:00
Lynx Linden 98111a40ec DEV-43439: Created new LLVersionInfo API.
Renamed llviewerversion to llversioninfo, to avoid confusion with
llversionviewer in llcommon (llversion is already used by llwindow).

Created new LLVersionInfo class with the following methods:

        static S32 getMajor();
        static S32 getMinor();
        static S32 getPatch();
        static S32 getBuild();
        static const std::string &getVersion();
        static const std::string &getShortVersion();
        static const std::string &getChannel();

All viewer code has been updated to use this API. Viewer code no
longer directly includes llversionviewer.h from llcommon.
2009-12-08 14:56:19 +00:00
Lynx Linden 3b340326cb EXT-332: Hide international billing features until enabled.
The international billing links and labels in the Buy L$ floater are
now hidden by default. They will only be displayed once we get an
estimate from the server that includes an "estimatedLocalCost" token,
i.e., we are connected to a server that has the international billing
functionality enabled.

This is done so that the new functionality in Viewer 2.0 is not
exposed to the user until the international billing features are live
(which is scheduled to happen after the Viewer 2.0 release date).
2009-12-01 18:06:36 +00:00
Lynx Linden 7cabb9de68 EXT-332: Added support for local currency estimates to the Buy L$
and Buy Land floaters.

We now check for a new estimatedLocalCost key from the XML-RPC server,
which provides the estimated cost in the user's local currency, e.g.,
"US$ 10.00" or "10.00 Euros". Note: the server is not currently
sending this information.

The previous codepath still exists and should be unaffected. That is,
we will continue to check for an estimatedCost key from the server with
a value specified in US cents. We give precedence to estimatedLocalCost
though and may want to remove this code once the international billing
server changes go live.

<lynx@lindenlab.com> HG: branch 'default' HG: changed
indra/newview/llcurrencyuimanager.cpp HG: changed
indra/newview/llcurrencyuimanager.h HG: changed
indra/newview/llfloaterbuyland.cpp HG: changed
indra/newview/skins/default/xui/en/floater_buy_land.xml
2009-11-08 17:24:08 +00:00
Lynx Linden 9fb250e344 DEV-40744 EXT-332: include viewer version information in the Buy L$
requests to the XML-RPC server, including the channel name and the
major, minor, patch, and build version numbers. This information is
needed by the international billing guys to determine whether an
international customer is trying to use a 1.23 viewer to buy L$.
2009-11-02 16:15:22 +00:00
Martin Reddy cf9814bc05 EXT-332: Updated the visual style of the Buy L$ floater based on
Erica's design. Now any errors during the L$ purchase process will
give you a nice prompt to visit the SL website.

Replaced all user-visible references to the illegal term "currency"
with the term "L$".

Also fixed an outstanding bug with this floater: if you clicked the
Buy button but then cancelled the confirmation dialog, then the Buy
button would remain disabled. Now the Buy button is only disabled
during periods when you actually cannot buy.

Added initial support for local currencies, with the use of a new
[LOCALAMOUNT] field in the XUI files. When the XML-RPC server can
actually return local currency details, we can hook this up by just
changing llcurrencyuimanager.cpp.

Discussed XML-RPC interaction with Morpheus. Thanks to Erica for
the images and first cut at the XUI.
2009-10-01 17:52:20 +00:00
Roxie Linden fe71dd340a Merge giab-viewer-trunk 2497, general merge of more
secapi stuff as well as certificate handling stuff.
Grid manager as well
2010-02-01 15:10:19 -08:00
Steven Bennetts 9ec432034d merge -r 122421-124917 viewer-2.0.0-2 -> viewer-2.0.0-3
ignore-dead-branch
2009-06-21 08:04:56 +00:00
Adam Moss 9dfe0ca9a0 svn merge -r121194:121210
svn+ssh://svn.lindenlab.com/svn/linden/branches/viewer/viewer-1.23.onetwo-merge-1

QAR-1531 viewer 1.23rc1+1.23rc2 merge to trunk
2009-05-22 09:58:47 +00:00
Aaron Brashears e3cf284388 Result of svn merge -r107256:107258 svn+ssh://svn/svn/user/phoenix/license_2009_merge into trunk. QAR-1165 2009-01-08 00:05:06 +00:00
Steven Bennetts 25c10ed028 QAR-628 merge string-cleanup-5 -r 90476:90508 -> release
dataserver-is-deprecated
2008-06-26 00:39:00 +00:00
Steven Bennetts ad33281007 QAR-650 - Viewer RC 9 merge -> release (post cmake)
merge release@88802 Branch_1-20-Viewer-2-merge-1@89178 -> release
2008-06-06 22:43:38 +00:00
Don Kjer 3855896097 EFFECTIVE MERGES:
svn merge -r 79616:82632 svn+ssh://svn/svn/linden/branches/maintenance/maintenance-7 into release
svn merge -r 83211:87215 svn+ssh://svn/svn/linden/branches/php-framework-3 into release

ACTUAL MERGE: svn merge -r 87631:87698  svn+ssh://svn/svn/linden/qa/combo-merge-maintenance-7-php-framework-3 into release

dataserver-is-deprecated
2008-05-19 17:02:33 +00:00
Brian McGroarty d273ba2ce2 Back out QAR-520 maintenance-7 merge -- svn merge -r 86947:86946 svn+ssh://svn.lindenlab.com/svn/linden/release dataserver-is-deprecated 2008-05-07 20:48:38 +00:00
Brian McGroarty e1e1212daa QAR-520 maintenance-7 merge -- svn merge -r 84923:86093 svn+ssh://svn.lindenlab.com/svn/linden/qa/maintenance-7-sandbox-84884 -- dataserver-is-deprecated 2008-05-07 17:17:42 +00:00
Steven Bennetts 941cb9f412 merge release@83343 skinning-1-merge@83714 -> release
QAR-424
2008-04-01 17:45:04 +00:00