diff --git a/src/libsnore/notification/notification_p.cpp b/src/libsnore/notification/notification_p.cpp index 7b1b37c..50982d9 100644 --- a/src/libsnore/notification/notification_p.cpp +++ b/src/libsnore/notification/notification_p.cpp @@ -67,6 +67,7 @@ Snore::NotificationData::NotificationData(const Notification &old, const QString NotificationData::~NotificationData() { + stopTimeoutTimer(); notificationCount--; snoreDebug(SNORE_INFO) << "Deleting Notification: ActiveNotifications" << notificationCount << "id" << m_id << "Close Reason:" << m_closeReason; } @@ -127,9 +128,7 @@ bool NotificationData::sourceAndTargetAreSimilar(const SnorePlugin *target) void NotificationData::stopTimeoutTimer() { if (m_timeoutTimer) { - m_timeoutTimer->stop(); - m_timeoutTimer->deleteLater(); - m_timeoutTimer.reset(nullptr); + QMetaObject::invokeMethod(m_timeoutTimer.data(), "deleteLater", Qt::QueuedConnection); } } diff --git a/src/libsnore/notification/notification_p.h b/src/libsnore/notification/notification_p.h index beba694..9fc230b 100644 --- a/src/libsnore/notification/notification_p.h +++ b/src/libsnore/notification/notification_p.h @@ -23,6 +23,7 @@ #include "notification.h" #include "../hint.h" +#include #include #include @@ -87,7 +88,7 @@ private: QHash m_actions; Hint m_hints; Notification m_toReplace; - QScopedPointer m_timeoutTimer; + QPointer m_timeoutTimer; QSet m_activeIn; bool m_isBroadcasted = false; SnorePlugin *m_source = nullptr; diff --git a/src/libsnore/snore_p.cpp b/src/libsnore/snore_p.cpp index 9c65b6a..5b9bd09 100644 --- a/src/libsnore/snore_p.cpp +++ b/src/libsnore/snore_p.cpp @@ -237,7 +237,7 @@ void SnoreCorePrivate::startNotificationTimeoutTimer(Notification notification) notification.data()->stopTimeoutTimer(); QTimer *timer = new QTimer(); - notification.data()->m_timeoutTimer.reset(timer); + notification.data()->m_timeoutTimer = timer; timer->setSingleShot(true); if (notification.isUpdate()) {