libsaria: Load library through an idle task

This allows me to draw the UI first and load the library once that has
finished.  This should make Ocarina feel more responsive.
This commit is contained in:
Bryan Schumaker 2011-11-13 13:44:45 -05:00
parent ffbaff27ec
commit f0decd07d6
2 changed files with 38 additions and 16 deletions

View File

@ -29,26 +29,40 @@ void LibraryPath::save(OutFile &out)
it->save(out);
}
static void do_load()
{
unsigned int size;
string dir;
list<LibraryPath> *path_list = libsaria::library::get_path_list();
InFile in("library.lib");
if (!in.good())
return;
size = in.read_lui();
for (unsigned int i = 0; i < size; i++) {
dir = in.read_str();
path_list->push_back(LibraryPath(in, dir));
}
libsaria::library::rebuild_list();
libsaria::library::refresh();
libsaria::library::reindex();
}
LoadTask::LoadTask() {}
LoadTask::~LoadTask() {}
void LoadTask::run_task()
{
do_load();
}
namespace libsaria
{
void library::load()
{
unsigned int size;
string dir;
list<LibraryPath> *path_list = get_path_list();
InFile in("library.lib");
if (!in.good())
return;
size = in.read_lui();
for (unsigned int i = 0; i < size; i++) {
dir = in.read_str();
path_list->push_back(LibraryPath(in, dir));
}
rebuild_list();
reindex();
LoadTask *task = new LoadTask();
task->queue();
}
void library::save()

View File

@ -31,6 +31,14 @@ class LibraryPath
unsigned int size();
};
class LoadTask : public IdleTask
{
public:
LoadTask();
~LoadTask();
void run_task();
};
class ScanTask : public IdleTask
{
private: