diff options
Diffstat (limited to 'indra')
| -rw-r--r-- | indra/newview/llnotificationmanager.cpp | 28 | ||||
| -rw-r--r-- | indra/newview/llnotificationmanager.h | 5 | ||||
| -rw-r--r-- | indra/newview/viewer_manifest.py | 3 | 
3 files changed, 26 insertions, 10 deletions
| diff --git a/indra/newview/llnotificationmanager.cpp b/indra/newview/llnotificationmanager.cpp index 6105eff8ea..f792f53ac5 100644 --- a/indra/newview/llnotificationmanager.cpp +++ b/indra/newview/llnotificationmanager.cpp @@ -35,6 +35,7 @@  #include "llnotifications.h"  #include <boost/bind.hpp> +#include <boost/foreach.hpp>  using namespace LLNotificationsUI; @@ -48,6 +49,10 @@ LLNotificationManager::LLNotificationManager()  //--------------------------------------------------------------------------  LLNotificationManager::~LLNotificationManager()  { +	BOOST_FOREACH(listener_pair_t& pair, mChannelListeners) +	{ +		pair.second.disconnect(); +	}  }  //-------------------------------------------------------------------------- @@ -64,16 +69,16 @@ void LLNotificationManager::init()  	LLNotificationChannel::buildChannel("Browser", "Visible", LLNotificationFilters::filterBy<std::string>(&LLNotification::getType, "browser"));  	LLNotificationChannel::buildChannel("Outbox", "Visible", LLNotificationFilters::filterBy<std::string>(&LLNotification::getType, "outbox")); -	LLNotifications::instance().getChannel("Notifications")->connectChanged(boost::bind(&LLNotificationManager::onNotification, this, _1)); -	LLNotifications::instance().getChannel("NotificationTips")->connectChanged(boost::bind(&LLNotificationManager::onNotification, this, _1)); -	LLNotifications::instance().getChannel("Group Notifications")->connectChanged(boost::bind(&LLNotificationManager::onNotification, this, _1)); -	LLNotifications::instance().getChannel("Alerts")->connectChanged(boost::bind(&LLNotificationManager::onNotification, this, _1)); -	LLNotifications::instance().getChannel("AlertModal")->connectChanged(boost::bind(&LLNotificationManager::onNotification, this, _1)); -	LLNotifications::instance().getChannel("IM Notifications")->connectChanged(boost::bind(&LLNotificationManager::onNotification, this, _1)); -	LLNotifications::instance().getChannel("Offer")->connectChanged(boost::bind(&LLNotificationManager::onNotification, this, _1)); -	LLNotifications::instance().getChannel("Hints")->connectChanged(boost::bind(&LLHintHandler::processNotification, LLHintHandler::getInstance(), _1)); -	LLNotifications::instance().getChannel("Browser")->connectChanged(boost::bind(&LLBrowserNotification::processNotification, LLBrowserNotification::getInstance(), _1)); -	LLNotifications::instance().getChannel("Outbox")->connectChanged(boost::bind(&LLOutboxNotification::processNotification, LLOutboxNotification::getInstance(), _1)); +	mChannelListeners["Notifications"] = LLNotifications::instance().getChannel("Notifications")->connectChanged(boost::bind(&LLNotificationManager::onNotification, this, _1)); +	mChannelListeners["NotificationTips"] = LLNotifications::instance().getChannel("NotificationTips")->connectChanged(boost::bind(&LLNotificationManager::onNotification, this, _1)); +	mChannelListeners["Group Notifications"] = LLNotifications::instance().getChannel("Group Notifications")->connectChanged(boost::bind(&LLNotificationManager::onNotification, this, _1)); +	mChannelListeners["Alerts"] = LLNotifications::instance().getChannel("Alerts")->connectChanged(boost::bind(&LLNotificationManager::onNotification, this, _1)); +	mChannelListeners["AlertModal"] = LLNotifications::instance().getChannel("AlertModal")->connectChanged(boost::bind(&LLNotificationManager::onNotification, this, _1)); +	mChannelListeners["IM Notifications"] = LLNotifications::instance().getChannel("IM Notifications")->connectChanged(boost::bind(&LLNotificationManager::onNotification, this, _1)); +	mChannelListeners["Offer"] = LLNotifications::instance().getChannel("Offer")->connectChanged(boost::bind(&LLNotificationManager::onNotification, this, _1)); +	mChannelListeners["Hints"] = LLNotifications::instance().getChannel("Hints")->connectChanged(boost::bind(&LLHintHandler::processNotification, LLHintHandler::getInstance(), _1)); +	mChannelListeners["Browser"] = LLNotifications::instance().getChannel("Browser")->connectChanged(boost::bind(&LLBrowserNotification::processNotification, LLBrowserNotification::getInstance(), _1)); +	mChannelListeners["Outbox"] = LLNotifications::instance().getChannel("Outbox")->connectChanged(boost::bind(&LLOutboxNotification::processNotification, LLOutboxNotification::getInstance(), _1));  	mNotifyHandlers["notify"] = boost::shared_ptr<LLEventHandler>(new LLScriptHandler(NT_NOTIFY, LLSD()));  	mNotifyHandlers["notifytip"] =  boost::shared_ptr<LLEventHandler>(new LLTipHandler(NT_NOTIFY, LLSD())); @@ -92,6 +97,9 @@ bool LLNotificationManager::onNotification(const LLSD& notify)  {  	LLSysHandler* handle = NULL; +	if (LLNotifications::destroyed()) +		return false; +  	LLNotificationPtr notification = LLNotifications::instance().find(notify["id"].asUUID());  	if (!notification)  diff --git a/indra/newview/llnotificationmanager.h b/indra/newview/llnotificationmanager.h index 16e82e4cce..27b6ba1c71 100644 --- a/indra/newview/llnotificationmanager.h +++ b/indra/newview/llnotificationmanager.h @@ -28,6 +28,8 @@  #ifndef LL_LLNOTIFICATIONMANAGER_H  #define LL_LLNOTIFICATIONMANAGER_H +#include "llevents.h" +  #include "lluictrl.h"  #include "llnotificationhandler.h" @@ -47,6 +49,7 @@ class LLToast;  class LLNotificationManager : public LLSingleton<LLNotificationManager>  {  	typedef std::pair<std::string, LLEventHandler*> eventhandlers; +	typedef std::pair<const std::string, LLBoundListener> listener_pair_t;  public:	  	LLNotificationManager();	  	virtual ~LLNotificationManager(); @@ -70,6 +73,8 @@ private:  	//TODO (*)  	std::map<std::string, boost::shared_ptr<LLEventHandler> > mNotifyHandlers;  	// cruft std::map<std::string, LLChatHandler*> mChatHandlers; + +	std::map<std::string, LLBoundListener> mChannelListeners;  };  } diff --git a/indra/newview/viewer_manifest.py b/indra/newview/viewer_manifest.py index 089b17149d..9bf755c8f8 100644 --- a/indra/newview/viewer_manifest.py +++ b/indra/newview/viewer_manifest.py @@ -1049,8 +1049,11 @@ class Linux_i686Manifest(LinuxManifest):              self.path("libSDL-1.2.so.0.11.3")              self.path("libSDL-1.2.so.0")              self.path("libdirectfb-1.4.so.5.0.4") +            self.path("libdirectfb-1.4.so.5")              self.path("libfusion-1.4.so.5.0.4") +            self.path("libfusion-1.4.so.5")              self.path("libdirect-1.4.so.5.0.4") +            self.path("libdirect-1.4.so.5")              self.path("libopenjpeg.so.1.4.0")              self.path("libopenjpeg.so.1")              self.path("libopenjpeg.so") | 
