diff --git a/indra/newview/llagent.cpp b/indra/newview/llagent.cpp index 6ee8f26b9fa6b2887d45bf11cfd9087686920f61..14a25086971b002982a88f2bf1df3917d810f5eb 100755 --- a/indra/newview/llagent.cpp +++ b/indra/newview/llagent.cpp @@ -976,11 +976,15 @@ LLHost LLAgent::getRegionHost() const } } -boost::signals2::connection LLAgent::addRegionChangedCallback(region_changed_callback_t cb) +boost::signals2::connection LLAgent::addRegionChangedCallback(const region_changed_signal_t::slot_type& cb) { return mRegionChangedSignal.connect(cb); } +void LLAgent::removeRegionChangedCallback(boost::signals2::connection callback) +{ + mRegionChangedSignal.disconnect(callback); +} //----------------------------------------------------------------------------- // inPrelude() diff --git a/indra/newview/llagent.h b/indra/newview/llagent.h index 0662be897a3c807d1ac414af4f46f674f210081e..0766407494efd06637d9024a9e34fa92045a2deb 100755 --- a/indra/newview/llagent.h +++ b/indra/newview/llagent.h @@ -271,12 +271,13 @@ class LLAgent : public LLOldEvents::LLObservable * // you may or may not want to remove that callback * } */ - typedef boost::function<void()> region_changed_callback_t; - boost::signals2::connection addRegionChangedCallback(region_changed_callback_t); + typedef boost::signals2::signal<void()> region_changed_signal_t; + + boost::signals2::connection addRegionChangedCallback(const region_changed_signal_t::slot_type& cb); + void removeRegionChangedCallback(boost::signals2::connection callback); private: LLViewerRegion *mRegionp; - typedef boost::signals2::signal<void()> region_changed_signal_t; region_changed_signal_t mRegionChangedSignal; //--------------------------------------------------------------------