diff options
| author | Carl Hetherington <cth@carlh.net> | 2021-07-04 00:13:39 +0200 |
|---|---|---|
| committer | Carl Hetherington <cth@carlh.net> | 2021-07-04 00:13:39 +0200 |
| commit | 34e5ddc254c0a12224cb985e440a2ab7075b532a (patch) | |
| tree | 5b83d940eb4c41ec405a98241fc26bb0fffbba3a /src/lib/signaller.h | |
| parent | fa4da415f1788bed17eefd05ba8d49b8ad847613 (diff) | |
C++11 tidying.
Diffstat (limited to 'src/lib/signaller.h')
| -rw-r--r-- | src/lib/signaller.h | 29 |
1 files changed, 15 insertions, 14 deletions
diff --git a/src/lib/signaller.h b/src/lib/signaller.h index b67a63917..44650de87 100644 --- a/src/lib/signaller.h +++ b/src/lib/signaller.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2015 Carl Hetherington <cth@carlh.net> + Copyright (C) 2015-2021 Carl Hetherington <cth@carlh.net> This file is part of DCP-o-matic. @@ -18,20 +18,18 @@ */ + #ifndef DCPOMATIC_SIGNALLER_H #define DCPOMATIC_SIGNALLER_H + #include "signal_manager.h" #include <boost/thread/mutex.hpp> + class WrapperBase { public: - WrapperBase () - : _valid (true) - , _finished (false) - {} - virtual ~WrapperBase () {} /* Can be called from any thread */ @@ -59,10 +57,11 @@ public: protected: /* Protect _valid and _finished */ mutable boost::mutex _mutex; - bool _valid; - bool _finished; + bool _valid = true; + bool _finished = false; }; + /** Helper class to manage lifetime of signals, specifically to address * the problem where an object containing a signal is deleted before * its signal is emitted. @@ -91,6 +90,7 @@ private: T _signal; }; + /** Parent for any class which needs to raise cross-thread signals (from non-UI * to UI). Subclasses should call, e.g. emit (boost::bind (boost::ref (MySignal), foo, bar)); */ @@ -100,8 +100,8 @@ public: /* Can be called from any thread */ virtual ~Signaller () { boost::mutex::scoped_lock lm (_signaller_mutex); - for (std::list<WrapperBase*>::iterator i = _wrappers.begin(); i != _wrappers.end(); ++i) { - (*i)->invalidate (); + for (auto i: _wrappers) { + i->invalidate(); } } @@ -109,17 +109,17 @@ public: template <class T> void emit (T signal) { - Wrapper<T>* w = new Wrapper<T> (signal); + auto w = new Wrapper<T> (signal); if (signal_manager) { - signal_manager->emit (boost::bind (&Wrapper<T>::signal, w)); + signal_manager->emit (boost::bind(&Wrapper<T>::signal, w)); } boost::mutex::scoped_lock lm (_signaller_mutex); /* Clean up finished Wrappers */ - std::list<WrapperBase*>::iterator i = _wrappers.begin (); + auto i = _wrappers.begin (); while (i != _wrappers.end ()) { - std::list<WrapperBase*>::iterator tmp = i; + auto tmp = i; ++tmp; if ((*i)->finished ()) { delete *i; @@ -138,4 +138,5 @@ private: std::list<WrapperBase*> _wrappers; }; + #endif |
