summaryrefslogtreecommitdiff
path: root/plugins/Toaster
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/Toaster')
-rw-r--r--plugins/Toaster/src/services.cpp6
-rw-r--r--plugins/Toaster/src/toast_notification.cpp3
2 files changed, 6 insertions, 3 deletions
diff --git a/plugins/Toaster/src/services.cpp b/plugins/Toaster/src/services.cpp
index 7f25162755..269cc63da0 100644
--- a/plugins/Toaster/src/services.cpp
+++ b/plugins/Toaster/src/services.cpp
@@ -228,14 +228,16 @@ static INT_PTR ShowMessage(WPARAM wParam, LPARAM lParam)
static INT_PTR HideToast(WPARAM, LPARAM lParam)
{
ToastNotification* pNotification = reinterpret_cast<ToastNotification*>(lParam);
+ mir_cslock lck(csNotifications);
if (lstNotifications.getIndex(pNotification) != -1)
- pNotification->Destroy();
+ lstNotifications.remove(pNotification);
return 0;
}
void __stdcall HideAllToasts(void*)
{
+ mir_cslock lck(csNotifications);
while (lstNotifications.getCount())
- lstNotifications[0].Destroy();
+ lstNotifications.remove(0);
}
void InitServices()
diff --git a/plugins/Toaster/src/toast_notification.cpp b/plugins/Toaster/src/toast_notification.cpp
index 0708be6ec4..2df72af9ad 100644
--- a/plugins/Toaster/src/toast_notification.cpp
+++ b/plugins/Toaster/src/toast_notification.cpp
@@ -28,6 +28,8 @@ ToastNotification::ToastNotification(
ToastNotification::~ToastNotification()
{
+ if (_pvPopupData != nullptr)
+ CallPopupProc(UM_FREEPLUGINDATA);
notifier->Hide(notification.Get());
}
@@ -106,7 +108,6 @@ HRESULT ToastNotification::OnFail(_In_ ABI::Windows::UI::Notifications::IToastNo
void ToastNotification::Destroy()
{
- CallPopupProc(UM_FREEPLUGINDATA);
mir_cslock lck(csNotifications);
lstNotifications.remove(this);
} \ No newline at end of file