libsaria: Idle queue cleanups

To make the code easier to follow and maintain.

Signed-off-by: Bryan Schumaker <bjschuma@gmail.com>
This commit is contained in:
Bryan Schumaker 2012-03-11 09:40:42 -04:00
parent 84582ae9d8
commit 292d237561
4 changed files with 25 additions and 20 deletions

View File

@ -8,9 +8,10 @@ namespace libsaria
namespace idle
{
int run_task();
int queue_task(IdleTask *, bool);
void enable(void (*)());
int size();
void run_task();
void queue_task(IdleTask *, bool);
void enable(void (*)(int));
};
};

View File

@ -1,5 +1,4 @@
// Copyright (c) 2012 Bryan Schumaker.
#include <libsaria/fs.h>
#include <libsaria/task.h>
#include <libsaria/print.h>

View File

@ -5,22 +5,31 @@
using namespace std;
static bool enabled = false;
static void (*cb_task_queued)() = NULL;;
static void (*cb_task_queued)(int) = NULL;;
static deque<IdleTask *> idle_queue;
static void do_task(IdleTask *task)
{
task->run_task();
delete task;
}
namespace libsaria
{
int idle::run_task()
int idle::size()
{
return idle_queue.size();
}
void idle::run_task()
{
IdleTask *task;
if (idle_queue.size() == 0)
return idle_queue.size();
if (size() == 0)
return;
task = idle_queue.front();
idle_queue.pop_front();
task->run_task();
delete task;
return idle_queue.size();
do_task(task);
}
/*
@ -28,24 +37,21 @@ namespace libsaria
* size is increased from 0 to 1. This will tell the UI
* that idle tasks have been queued.
*/
int idle::queue_task(IdleTask *task, bool front)
void idle::queue_task(IdleTask *task, bool front)
{
if (enabled == false) {
task->run_task();
delete task;
return 0;
do_task(task);
return;
}
if (front == true)
idle_queue.push_front(task);
else
idle_queue.push_back(task);
if (idle_queue.size() == 1)
cb_task_queued();
return idle_queue.size();
cb_task_queued(size());
}
void idle::enable(void (*queued_cb)())
void idle::enable(void (*queued_cb)(int))
{
cb_task_queued = queued_cb;
enabled = true;

View File

@ -80,5 +80,4 @@ namespace libsaria
return cur;
}
}; /* Namespace: libsaria */