summaryrefslogtreecommitdiff
path: root/src/lib/signaller.h
diff options
context:
space:
mode:
authorCarl Hetherington <cth@carlh.net>2021-07-04 00:13:39 +0200
committerCarl Hetherington <cth@carlh.net>2021-07-04 00:13:39 +0200
commit34e5ddc254c0a12224cb985e440a2ab7075b532a (patch)
tree5b83d940eb4c41ec405a98241fc26bb0fffbba3a /src/lib/signaller.h
parentfa4da415f1788bed17eefd05ba8d49b8ad847613 (diff)
C++11 tidying.
Diffstat (limited to 'src/lib/signaller.h')
-rw-r--r--src/lib/signaller.h29
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