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/Notifier.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/Notifier.h')
-rw-r--r-- | SwifTools/Notifier/Notifier.h | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/SwifTools/Notifier/Notifier.h b/SwifTools/Notifier/Notifier.h index 1bcd58d..9537ec1 100644 --- a/SwifTools/Notifier/Notifier.h +++ b/SwifTools/Notifier/Notifier.h @@ -4,44 +4,47 @@ * See Documentation/Licenses/GPLv3.txt for more information. */ #pragma once #include <boost/function.hpp> #include <boost/filesystem/path.hpp> #include <string> #include <vector> namespace Swift { class Notifier { public: virtual ~Notifier(); enum Type { ContactAvailable, ContactUnavailable, ContactStatusChange, IncomingMessage, SystemMessage }; /** * Picture is a PNG image. */ virtual void showMessage( Type type, const std::string& subject, const std::string& description, const boost::filesystem::path& picture, boost::function<void()> callback) = 0; virtual bool isAvailable() const { return true; } virtual bool isExternallyConfigured() const { return false; } + /** Remove any pending callbacks. */ + virtual void purgeCallbacks() = 0; + protected: std::string typeToString(Type type); static std::vector<Type> getAllTypes(); static std::vector<Type> getDefaultTypes(); static const int DEFAULT_STATUS_NOTIFICATION_TIMEOUT_SECONDS; static const int DEFAULT_MESSAGE_NOTIFICATION_TIMEOUT_SECONDS; }; } |