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(); IdleTask();
virtual ~IdleTask() = 0; virtual ~IdleTask() = 0;
virtual void run_task() = 0; virtual void run_task() = 0;
int queue();
int queue_front();
}; };
namespace libsaria 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() void LibraryPath::update()
{ {
ScanTask *task = new ScanTask(this, path, false); ScanTask *task = new ScanTask(this, path, false);
libsaria::queue_task(task); task->queue();
} }
unsigned int LibraryPath::size() unsigned int LibraryPath::size()
@ -98,7 +98,7 @@ void ScanTask::run_task()
last = dirs.size() - 1; last = dirs.size() - 1;
for (it = dirs.begin(); it != dirs.end(); it++) { for (it = dirs.begin(); it != dirs.end(); it++) {
scan = new ScanTask(library, dir + "/" + (*it).name, i == last); scan = new ScanTask(library, dir + "/" + (*it).name, i == last);
libsaria::queue_task(scan); scan->queue();
i++; i++;
} }
@ -106,7 +106,7 @@ void ScanTask::run_task()
print("Library path size: "); print("Library path size: ");
println(library->size()); println(library->size());
save = new SaveTask(libsaria::library::save); save = new SaveTask(libsaria::library::save);
libsaria::queue_task_front(save); save->queue_front();
libsaria::library::refresh(); libsaria::library::refresh();
} }
} }