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:
parent
ffbaff27ec
commit
f0decd07d6
|
@ -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()
|
||||
|
|
|
@ -31,6 +31,14 @@ class LibraryPath
|
|||
unsigned int size();
|
||||
};
|
||||
|
||||
class LoadTask : public IdleTask
|
||||
{
|
||||
public:
|
||||
LoadTask();
|
||||
~LoadTask();
|
||||
void run_task();
|
||||
};
|
||||
|
||||
class ScanTask : public IdleTask
|
||||
{
|
||||
private:
|
||||
|
|
Loading…
Reference in New Issue