From 3b81e882897e1b161e4becaafaf3fc93d482ce65 Mon Sep 17 00:00:00 2001 From: Vadim ProductEngine Date: Tue, 17 Jan 2012 23:20:44 +0200 Subject: EXP-1807 FIXED Linux viewer didn't start due to "libSDL-1.2.so.0: cannot open shared object file". Package the missing symlink. --- indra/newview/viewer_manifest.py | 1 + 1 file changed, 1 insertion(+) (limited to 'indra/newview') diff --git a/indra/newview/viewer_manifest.py b/indra/newview/viewer_manifest.py index 0931c4ec9b..089b17149d 100644 --- a/indra/newview/viewer_manifest.py +++ b/indra/newview/viewer_manifest.py @@ -1047,6 +1047,7 @@ class Linux_i686Manifest(LinuxManifest): self.path("libuuid.so.16") self.path("libuuid.so.16.0.22") 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("libfusion-1.4.so.5.0.4") self.path("libdirect-1.4.so.5.0.4") -- cgit v1.2.3 From b75f495526b29fff826fa8bd4e89be7ddf6b2aee Mon Sep 17 00:00:00 2001 From: Vadim ProductEngine Date: Wed, 18 Jan 2012 17:38:05 +0200 Subject: EXP-1813 FIXED Unpressable radio button in Preferences -> General. Made the radio group larger so that all its buttons become clickable. --- indra/newview/skins/default/xui/en/panel_preferences_general.xml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'indra/newview') diff --git a/indra/newview/skins/default/xui/en/panel_preferences_general.xml b/indra/newview/skins/default/xui/en/panel_preferences_general.xml index 9827180aa7..24882988b0 100644 --- a/indra/newview/skins/default/xui/en/panel_preferences_general.xml +++ b/indra/newview/skins/default/xui/en/panel_preferences_general.xml @@ -331,7 +331,7 @@ Away timeout: -- cgit v1.2.3 From 2b724e30cf49999f4a4def3d197d739ce2535016 Mon Sep 17 00:00:00 2001 From: Seth ProductEngine Date: Wed, 18 Jan 2012 20:50:25 +0200 Subject: EXP-1814 FIXED Added copying the missing symlinks to Linux viewer lib dir. --- indra/newview/viewer_manifest.py | 3 +++ 1 file changed, 3 insertions(+) (limited to 'indra/newview') 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") -- cgit v1.2.3 From 41a43a4125a69835e6a76f5792a267ba0797f41a Mon Sep 17 00:00:00 2001 From: Seth ProductEngine Date: Wed, 18 Jan 2012 21:04:19 +0200 Subject: EXP-1672 FIXED Defensive fix for the crash. Added disconnecting notifications manager callbacks. Added check to prevent calling the destroyed Notifications object. --- indra/newview/llnotificationmanager.cpp | 28 ++++++++++++++++++---------- indra/newview/llnotificationmanager.h | 5 +++++ 2 files changed, 23 insertions(+), 10 deletions(-) (limited to 'indra/newview') 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 +#include 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(&LLNotification::getType, "browser")); LLNotificationChannel::buildChannel("Outbox", "Visible", LLNotificationFilters::filterBy(&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(new LLScriptHandler(NT_NOTIFY, LLSD())); mNotifyHandlers["notifytip"] = boost::shared_ptr(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 { typedef std::pair eventhandlers; + typedef std::pair listener_pair_t; public: LLNotificationManager(); virtual ~LLNotificationManager(); @@ -70,6 +73,8 @@ private: //TODO (*) std::map > mNotifyHandlers; // cruft std::map mChatHandlers; + + std::map mChannelListeners; }; } -- cgit v1.2.3