Mercurial > hg > svcore
diff base/Scavenger.h @ 14:b101cc2ae1ab
* Introduce potentially-separate read and write ring buffers, so we can swap
in a new set when something changes -- thus allowing us to respond quickly
when something changes during playback, without losing the long buffers
* Some fixes for display & editing
author | Chris Cannam |
---|---|
date | Fri, 27 Jan 2006 18:04:07 +0000 |
parents | d86891498eef |
children | 2fb933f88604 |
line wrap: on
line diff
--- a/base/Scavenger.h Thu Jan 26 18:01:38 2006 +0000 +++ b/base/Scavenger.h Fri Jan 27 18:04:07 2006 +0000 @@ -48,7 +48,7 @@ * Call from a non-RT thread. * Only one thread should be calling this on any given scavenger. */ - void scavenge(); + void scavenge(bool clearNow = false); protected: typedef std::pair<T *, int> ObjectTimePair; @@ -121,7 +121,7 @@ template <typename T> void -Scavenger<T>::scavenge() +Scavenger<T>::scavenge(bool clearNow) { // std::cerr << "Scavenger::scavenge: scavenged " << m_scavenged << ", claimed " << m_claimed << std::endl; @@ -133,7 +133,8 @@ for (size_t i = 0; i < m_objects.size(); ++i) { ObjectTimePair &pair = m_objects[i]; - if (pair.first != 0 && pair.second + m_sec < sec) { + if (clearNow || + (pair.first != 0 && pair.second + m_sec < sec)) { T *ot = pair.first; pair.first = 0; delete ot;