summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrey Kleshchev <andreykproductengine@lindenlab.com>2021-04-14 22:01:23 +0300
committerAndrey Kleshchev <andreykproductengine@lindenlab.com>2021-04-14 22:06:35 +0300
commit33b30fd7e0e5bc2c8e0e737402c3e19675a53c3f (patch)
tree1e8379a0e4603333822cf91bfec65c8bd47f6c2e
parent94ce45441d3e00a8ff2dac6c41be23fa04cee31b (diff)
SL-15077 Mac Crash destroying LLNotificationSet
Not a fix. Mac sometimes crashes when destroying mItems in LLPersistentNotificationChannel Decided to try cleaning mItems explicitly to see if it will change callstack, it won't fix the crash, but will help figuring out if source of the issue is in mItems or is LLPersistentNotificationChannel itself
-rw-r--r--indra/llui/llnotificationptr.h3
-rw-r--r--indra/llui/llnotifications.h15
-rw-r--r--indra/newview/llmediactrl.h3
3 files changed, 14 insertions, 7 deletions
diff --git a/indra/llui/llnotificationptr.h b/indra/llui/llnotificationptr.h
index acc047527f..580f353c7d 100644
--- a/indra/llui/llnotificationptr.h
+++ b/indra/llui/llnotificationptr.h
@@ -27,9 +27,8 @@
// Many classes just store a single LLNotificationPtr
// and llnotifications.h is very large, so define this ligher header.
-#include <boost/shared_ptr.hpp>
class LLNotification;
-typedef boost::shared_ptr<LLNotification> LLNotificationPtr;
+typedef std::shared_ptr<LLNotification> LLNotificationPtr;
#endif
diff --git a/indra/llui/llnotifications.h b/indra/llui/llnotifications.h
index 2f4578da17..39576ad86d 100644
--- a/indra/llui/llnotifications.h
+++ b/indra/llui/llnotifications.h
@@ -85,7 +85,6 @@
#include <boost/utility.hpp>
#include <boost/shared_ptr.hpp>
-#include <boost/enable_shared_from_this.hpp>
#include <boost/type_traits.hpp>
#include <boost/signals2.hpp>
#include <boost/range.hpp>
@@ -304,7 +303,7 @@ typedef boost::shared_ptr<LLNotificationVisibilityRule> LLNotificationVisibility
*/
class LLNotification :
boost::noncopyable,
- public boost::enable_shared_from_this<LLNotification>
+ public std::enable_shared_from_this<LLNotification>
{
LOG_CLASS(LLNotification);
friend class LLNotifications;
@@ -743,7 +742,10 @@ public:
: mFilter(filter),
mItems()
{}
- virtual ~LLNotificationChannelBase() {}
+ virtual ~LLNotificationChannelBase()
+ {
+ mItems.clear();
+ }
// you can also connect to a Channel, so you can be notified of
// changes to this channel
LLBoundListener connectChanged(const LLEventListener& slot)
@@ -873,6 +875,7 @@ class LLNotifications :
{
LLSINGLETON(LLNotifications);
LOG_CLASS(LLNotifications);
+ virtual ~LLNotifications() {}
public:
@@ -1070,7 +1073,11 @@ public:
LLPersistentNotificationChannel()
: LLNotificationChannel("Persistent", "Visible", &notificationFilter)
{}
- virtual ~LLPersistentNotificationChannel() {}
+
+ virtual ~LLPersistentNotificationChannel()
+ {
+ mHistory.clear();
+ }
typedef std::vector<LLNotificationPtr> history_list_t;
history_list_t::iterator beginHistory() { sortHistory(); return mHistory.begin(); }
diff --git a/indra/newview/llmediactrl.h b/indra/newview/llmediactrl.h
index 958c76f261..bd24c47a4f 100644
--- a/indra/newview/llmediactrl.h
+++ b/indra/newview/llmediactrl.h
@@ -31,6 +31,7 @@
#include "lluictrl.h"
#include "llframetimer.h"
+#include "llnotificationptr.h"
class LLViewBorder;
class LLUICtrlFactory;
@@ -145,7 +146,7 @@ public:
void setTextureSize(S32 width, S32 height);
- void showNotification(boost::shared_ptr<class LLNotification> notify);
+ void showNotification(LLNotificationPtr notify);
void hideNotification();
void setTrustedContent(bool trusted);