#include <Scavenger.h>
Requires scavenge() to be called regularly from a non-RT thread.
This is currently not at all suitable for large numbers of objects -- it's just a quick hack for use with things like plugins.
Definition at line 45 of file Scavenger.h.
Public Member Functions | |
| Scavenger (int sec=2, int defaultObjectListSize=200) | |
| ~Scavenger () | |
| void | claim (T *t) |
| Call from an RT thread etc., to pass ownership of t to us. | |
| void | scavenge (bool clearNow=false) |
| Call from a non-RT thread. | |
Protected Types | |
| typedef std::pair< T *, int > | ObjectTimePair |
| typedef std::vector< ObjectTimePair > | ObjectTimeList |
| typedef std::list< T * > | ObjectList |
Protected Member Functions | |
| void | pushExcess (T *) |
| void | clearExcess (int) |
Protected Attributes | |
| ObjectTimeList | m_objects |
| int | m_sec |
| ObjectList | m_excess |
| int | m_lastExcess |
| QMutex | m_excessMutex |
| unsigned int | m_claimed |
| unsigned int | m_scavenged |
typedef std::pair<T *, int> Scavenger< T >::ObjectTimePair [protected] |
Definition at line 64 of file Scavenger.h.
typedef std::vector<ObjectTimePair> Scavenger< T >::ObjectTimeList [protected] |
Definition at line 65 of file Scavenger.h.
typedef std::list<T *> Scavenger< T >::ObjectList [protected] |
Definition at line 69 of file Scavenger.h.
Definition at line 97 of file Scavenger.h.
Definition at line 107 of file Scavenger.h.
References Scavenger< T >::clearExcess(), Scavenger< T >::m_claimed, Scavenger< T >::m_objects, and Scavenger< T >::m_scavenged.
| void Scavenger< T >::claim | ( | T * | t | ) |
Call from an RT thread etc., to pass ownership of t to us.
Only one thread should be calling this on any given scavenger.
Definition at line 126 of file Scavenger.h.
References Scavenger< T >::m_claimed, Scavenger< T >::m_objects, and Scavenger< T >::pushExcess().
Referenced by DSSIPluginInstance::initialiseGroupMembership(), RingBuffer< T, N >::resize(), and AudioCallbackPlaySource::setAuditioningPlugin().
| void Scavenger< T >::scavenge | ( | bool | clearNow = false |
) |
Call from a non-RT thread.
Only one thread should be calling this on any given scavenger.
Definition at line 151 of file Scavenger.h.
References Scavenger< T >::clearExcess(), Scavenger< T >::m_claimed, Scavenger< T >::m_lastExcess, Scavenger< T >::m_objects, Scavenger< T >::m_scavenged, and Scavenger< T >::m_sec.
Referenced by DSSIPluginInstance::deactivate(), RingBuffer< T, N >::resize(), RingBuffer< T, N >::RingBuffer(), AudioCallbackPlaySource::FillThread::run(), AudioCallbackPlaySource::~AudioCallbackPlaySource(), and RingBuffer< T, N >::~RingBuffer().
| void Scavenger< T >::pushExcess | ( | T * | ) | [protected] |
Definition at line 179 of file Scavenger.h.
References Scavenger< T >::m_excess, Scavenger< T >::m_excessMutex, and Scavenger< T >::m_lastExcess.
Referenced by Scavenger< T >::claim().
| void Scavenger< T >::clearExcess | ( | int | ) | [protected] |
Definition at line 191 of file Scavenger.h.
References Scavenger< T >::m_excess, Scavenger< T >::m_excessMutex, and Scavenger< T >::m_lastExcess.
Referenced by Scavenger< T >::scavenge(), and Scavenger< T >::~Scavenger().
ObjectTimeList Scavenger< T >::m_objects [protected] |
Definition at line 66 of file Scavenger.h.
Referenced by Scavenger< T >::claim(), Scavenger< T >::scavenge(), and Scavenger< T >::~Scavenger().
ObjectList Scavenger< T >::m_excess [protected] |
Definition at line 70 of file Scavenger.h.
Referenced by Scavenger< T >::clearExcess(), and Scavenger< T >::pushExcess().
int Scavenger< T >::m_lastExcess [protected] |
Definition at line 71 of file Scavenger.h.
Referenced by Scavenger< T >::clearExcess(), Scavenger< T >::pushExcess(), and Scavenger< T >::scavenge().
QMutex Scavenger< T >::m_excessMutex [protected] |
Definition at line 72 of file Scavenger.h.
Referenced by Scavenger< T >::clearExcess(), and Scavenger< T >::pushExcess().
Definition at line 76 of file Scavenger.h.
Referenced by Scavenger< T >::claim(), Scavenger< T >::scavenge(), and Scavenger< T >::~Scavenger().
unsigned int Scavenger< T >::m_scavenged [protected] |
Definition at line 77 of file Scavenger.h.
Referenced by Scavenger< T >::scavenge(), and Scavenger< T >::~Scavenger().
1.5.1