TODO ====== o Plugins - install/unistall - enable/disable - dependencies o Threads/Processes - pause/resume/cancel - dependencies o Demux Plugin *toload[]; foreach p (toload) { foreach dep (p->dependencies()) { if(!app->pluginIsLoaded(dep)) next p; } } Carl Olson: ----------- Insert plugins in unloaded list While unloaded list is not empty Foreach plugin in unloaded list Foreach dependency If dependency not in loaded list and dependency not in unloaded list Insert dependency in unloaded list If all dependencies are in loaded list Load plugin Remove from unloaded list. Add to loaded list. list unloaded; // insert plugins in unloaded list while(!unloaded->empty) { foreach plugin (unloaded) { foreach dep (plugin->dependency) { if(!loaded->in(dep) && !unloaded->in(dep)) unloaded->add(dep); } } }