libsaria: Queue idle tasks from the task class

This is cleaner than calling an outside function since the task can
easily queue itself up.
This commit is contained in:
Bryan Schumaker 2011-10-27 14:43:18 -04:00
parent 7dce8ffedc
commit c8dc6e1ee8
3 changed files with 15 additions and 3 deletions

View File

@ -7,6 +7,9 @@ class IdleTask
IdleTask();
virtual ~IdleTask() = 0;
virtual void run_task() = 0;
int queue();
int queue_front();
};
namespace libsaria

View File

@ -9,3 +9,12 @@ IdleTask::~IdleTask()
{
}
int IdleTask::queue()
{
return libsaria::queue_task(this);
}
int IdleTask::queue_front()
{
return libsaria::queue_task_front(this);
}

View File

@ -44,7 +44,7 @@ void LibraryPath::insert_track(ino_t inode, TrackTag &tag)
void LibraryPath::update()
{
ScanTask *task = new ScanTask(this, path, false);
libsaria::queue_task(task);
task->queue();
}
unsigned int LibraryPath::size()
@ -98,7 +98,7 @@ void ScanTask::run_task()
last = dirs.size() - 1;
for (it = dirs.begin(); it != dirs.end(); it++) {
scan = new ScanTask(library, dir + "/" + (*it).name, i == last);
libsaria::queue_task(scan);
scan->queue();
i++;
}
@ -106,7 +106,7 @@ void ScanTask::run_task()
print("Library path size: ");
println(library->size());
save = new SaveTask(libsaria::library::save);
libsaria::queue_task_front(save);
save->queue_front();
libsaria::library::refresh();
}
}