MythTV
master
mythtv
libs
libmythbase
mythobservable.cpp
Go to the documentation of this file.
1
#include <QCoreApplication>
2
#include <QObject>
3
#include <QMutex>
4
5
#include "
mythobservable.h
"
6
22
MythObservable::~MythObservable
()
23
{
24
m_lock
->lock();
25
m_listeners
.clear();
26
m_lock
->unlock();
27
delete
m_lock
;
28
m_lock
=
nullptr
;
29
}
30
38
void
MythObservable::addListener
(QObject *listener)
39
{
40
if
(listener)
41
{
42
QMutexLocker locker(
m_lock
);
43
m_listeners
.insert(listener);
44
}
45
}
46
47
55
void
MythObservable::removeListener
(QObject *listener)
56
{
57
if
(listener)
58
{
59
QMutexLocker locker(
m_lock
);
60
m_listeners
.remove(listener);
61
QCoreApplication::removePostedEvents(listener);
62
}
63
}
64
73
void
MythObservable::dispatch
(
const
MythEvent
&event)
74
{
75
QMutexLocker locker(
m_lock
);
76
77
for
(
auto
*listener : std::as_const(
m_listeners
))
78
QCoreApplication::postEvent(listener, event.
clone
());
79
}
MythObservable::m_lock
QMutex * m_lock
Definition:
mythobservable.h:29
MythEvent
This class is used as a container for messages.
Definition:
mythevent.h:16
MythObservable::dispatch
void dispatch(const MythEvent &event)
Dispatch an event to all listeners.
Definition:
mythobservable.cpp:73
MythObservable::m_listeners
QSet< QObject * > m_listeners
Definition:
mythobservable.h:30
MythObservable::addListener
void addListener(QObject *listener)
Add a listener to the observable.
Definition:
mythobservable.cpp:38
MythObservable::~MythObservable
virtual ~MythObservable()
Definition:
mythobservable.cpp:22
MythEvent::clone
MythEvent * clone() const override
Definition:
mythevent.h:75
MythObservable::removeListener
void removeListener(QObject *listener)
Remove a listener to the observable.
Definition:
mythobservable.cpp:55
mythobservable.h
Generated on Fri Jan 3 2025 03:17:27 for MythTV by
1.8.17