diff options
author | Kevin Smith <git@kismith.co.uk> | 2012-03-14 13:12:24 (GMT) |
---|---|---|
committer | Kevin Smith <git@kismith.co.uk> | 2012-03-14 13:24:44 (GMT) |
commit | f90fce80371ac12d97c6adc65a9437e4a3a7b268 (patch) | |
tree | 9e277bc46ae0a0cf3e54aa252d1a5c630e35ec83 /SwifTools/Notifier/LoggingNotifier.h | |
parent | 1089374439fa6073800679817198e3c39283113e (diff) | |
download | swift-contrib-f90fce80371ac12d97c6adc65a9437e4a3a7b268.zip swift-contrib-f90fce80371ac12d97c6adc65a9437e4a3a7b268.tar.bz2 |
Dispose of notification callbacks once the account signs out.
Fixes segfaults caused by clicking notifications after
the handlers had been freed.
Does not fix GrowlNotifier, which needs fixing later.
Diffstat (limited to 'SwifTools/Notifier/LoggingNotifier.h')
-rw-r--r-- | SwifTools/Notifier/LoggingNotifier.h | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/SwifTools/Notifier/LoggingNotifier.h b/SwifTools/Notifier/LoggingNotifier.h index 32e0610..3d62593 100644 --- a/SwifTools/Notifier/LoggingNotifier.h +++ b/SwifTools/Notifier/LoggingNotifier.h @@ -1,30 +1,32 @@ /* * Copyright (c) 2010 Remko Tronçon * Licensed under the GNU General Public License v3. * See Documentation/Licenses/GPLv3.txt for more information. */ #pragma once #include <SwifTools/Notifier/Notifier.h> #include <Swiften/Base/ByteArray.h> namespace Swift { class LoggingNotifier : public Notifier { public: virtual void showMessage(Type type, const std::string& subject, const std::string& description, const boost::filesystem::path& picture, boost::function<void()> callback) { notifications.push_back(Notification(type, subject, description, picture, callback)); } struct Notification { Notification(Type type, const std::string& subject, const std::string& description, const boost::filesystem::path& picture, boost::function<void()> callback) : type(type), subject(subject), description(description), picture(picture), callback(callback) {} Type type; std::string subject; std::string description; boost::filesystem::path picture; boost::function<void()> callback; }; + virtual void purgeCallbacks() {} + std::vector<Notification> notifications; }; } |