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:
parent
84582ae9d8
commit
292d237561
|
@ -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));
|
||||
|
||||
};
|
||||
};
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
// Copyright (c) 2012 Bryan Schumaker.
|
||||
|
||||
#include <libsaria/fs.h>
|
||||
#include <libsaria/task.h>
|
||||
#include <libsaria/print.h>
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -80,5 +80,4 @@ namespace libsaria
|
|||
return cur;
|
||||
}
|
||||
|
||||
|
||||
}; /* Namespace: libsaria */
|
||||
|
|
Loading…
Reference in New Issue