+
+ ++frame;
+ if(frame==next_unload)
+ {
+ unsigned unload_limit = frame-max_retain_frames;
+ next_unload = 0;
+
+ for(ResourceMap::iterator i=resources.begin(); i!=resources.end(); ++i)
+ if(i->second.loaded)
+ {
+ if(i->second.last_used<=unload_limit)
+ i->second.unload();
+ else if(!next_unload || i->second.last_used<next_unload)
+ next_unload = i->second.last_used;
+ }
+
+ if(next_unload)
+ next_unload += max_retain_frames;
+ }