+ /* purge old states referring to the same backend */
+ const time_t now = time (NULL);
+ for (vector<std::string>::const_iterator bi = backend_names.begin(); bi != backend_names.end(); ++bi) {
+ bool first = true;
+ for (StateList::iterator i = states.begin(); i != states.end();) {
+ if ((*i)->backend != *bi) {
+ ++i; continue;
+ }
+ // keep at latest one for every audio-system
+ if (first) {
+ first = false;
+ ++i; continue;
+ }
+ // also keep states used in the last 90 days.
+ if ((now - (*i)->lru) < 86400 * 90) {
+ ++i; continue;
+ }
+ assert (!(*i)->active);
+ i = states.erase(i);
+ }
+ }
+