+ /* Discard servers that we haven't seen for a while */
+ {
+ boost::mutex::scoped_lock lm (_servers_mutex);
+
+ bool removed = false;
+ list<EncodeServerDescription>::iterator i = _servers.begin();
+ while (i != _servers.end()) {
+ if (i->last_seen_seconds() > 2 * interval) {
+ list<EncodeServerDescription>::iterator j = i;
+ ++j;
+ _servers.erase (i);
+ i = j;
+ removed = true;
+ } else {
+ ++i;
+ }
+ }
+
+ if (removed) {
+ emit (boost::bind (boost::ref (ServersListChanged)));
+ }
+ }
+