Go to file
Nat Goodspeed afaad3cef7 DRTVWR-476: Remove special case for listen(boost::bind(weak_ptr)).
LLEventDetail::visit_and_connect() promised special treatment for the
specific case when an LLEventPump::listen() listener was composed of (possibly
nested) boost::bind() objects storing boost::weak_ptr values -- specifically
boost::bind() rather than std::bind or lambdas, specifically boost::weak_ptr
rather than std::weak_ptr.

Outside of self-tests, it does not appear that anyone actually uses that
support.

There is good reason not to: it's a silent side effect of a complicated
compile-time inspection that could be silently derailed by use of std::bind()
or a lambda or a std::weak_ptr. Can you be sure you've engaged that promise?
How?

A more robust guarantee can be achieved by storing an LLTempBoundConnection in
the transient object itself. When the object is destroyed, the listener is
disconnected. Normal C++ rules around object destruction guarantee it. This
idiom is widely used.

There are a couple good reasons to remove the visit_and_connect() machinery:

* boost::bind() and boost::weak_ptr do not constitute the wave of the future.
  Preferring those constructs to lambdas and std::weak_ptr penalizes new code,
  whether by silently failing or by discouraging use of modern idioms.
* The visit_and_connect() machinery was always complicated, and apparently
  never very robust. Most of its promised features have been commented out
  over the years. Making the code base simpler, clearer and more maintainable
  is always a useful effect.

LLEventDetail::visit_and_connect() was also used by the four
LLNotificationChannelBase::connectMumble() methods. Streamline those as well.

Of course, remove related test code.
2020-03-25 18:52:11 -04:00
debian try to suppress some debian errors we don't care about 2015-11-10 09:55:05 -05:00
doc Merged in lindenlab/viewer-lynx 2019-06-22 03:17:43 +03:00
etc SL-694 - stub support for ObjectAnimation message type 2017-05-30 22:03:43 +01:00
indra DRTVWR-476: Remove special case for listen(boost::bind(weak_ptr)). 2020-03-25 18:52:11 -04:00
scripts merge 2018-09-27 19:54:10 +01:00
.clang-format Convert ignore file to git, add a .clang-format rules file 2020-01-10 16:27:33 -07:00
.gitignore Ignore build-vc150-* directories as those are the VS2017 build dirs (n.b. due to the rather strange version numbering of VS this really should be build-vc141-*; as VS2017 is vc141 internally). 2020-03-25 18:44:04 -04:00
.hgtags Added tag 6.3.5-release for changeset 27ca5834bfe9 2019-12-12 13:15:52 -05:00
BuildParams remove duplicated EDU definitions 2018-09-05 09:12:21 -04:00
README.md dummy checkin to build an upgrade target 2017-05-17 18:10:43 -07:00
autobuild.xml DRTVWR-476: Update to viewer-manager build 531762 2020-03-25 18:52:10 -04:00
build.sh [DRTVWR-476] - disable dbghelp.h warnings 2020-03-25 18:39:20 -04:00

README.md

Second Life Viewer

This project manages the source code for the Second Life Viewer.

This source is available as open source; for details on licensing, see the licensing page on the Second Life wiki

For information on how to use and contribute to this, see the open source portal on the wiki.

To download the current default version, visit the download page. For even newer versions try the Alternate Viewers page