core/idle: Replace C++ queue with a glib queue
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
This commit is contained in:
parent
8474ff1907
commit
284e3466f4
|
@ -3,7 +3,7 @@
|
||||||
*/
|
*/
|
||||||
#include <core/idle.h>
|
#include <core/idle.h>
|
||||||
|
|
||||||
#include <queue>
|
#include <glib.h>
|
||||||
|
|
||||||
|
|
||||||
struct idle_task {
|
struct idle_task {
|
||||||
|
@ -11,8 +11,7 @@ struct idle_task {
|
||||||
void *idle_data;
|
void *idle_data;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
static GQueue idle_queue = G_QUEUE_INIT;
|
||||||
static std::queue<struct idle_task *> idle_queue;
|
|
||||||
static float queued = 0.0;
|
static float queued = 0.0;
|
||||||
static float serviced = 0.0;
|
static float serviced = 0.0;
|
||||||
|
|
||||||
|
@ -23,30 +22,31 @@ void idle_schedule(void (*func)(void *), void *data)
|
||||||
task->idle_func = func;
|
task->idle_func = func;
|
||||||
task->idle_data = data;
|
task->idle_data = data;
|
||||||
|
|
||||||
idle_queue.push(task);
|
g_queue_push_tail(&idle_queue, task);
|
||||||
queued++;
|
queued++;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool idle_run_task()
|
bool idle_run_task()
|
||||||
{
|
{
|
||||||
if (idle_queue.size() > 0) {
|
struct idle_task *task;
|
||||||
idle_queue.front()->idle_func(idle_queue.front()->idle_data);
|
|
||||||
delete idle_queue.front();
|
if (g_queue_get_length(&idle_queue) > 0) {
|
||||||
idle_queue.pop();
|
task = (struct idle_task *)g_queue_pop_head(&idle_queue);
|
||||||
|
task->idle_func(task->idle_data);
|
||||||
|
delete task;
|
||||||
serviced++;
|
serviced++;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (idle_queue.size() > 0)
|
if (g_queue_is_empty(&idle_queue)) {
|
||||||
return true;
|
queued = 0.0;
|
||||||
|
serviced = 0.0;
|
||||||
queued = 0.0;
|
}
|
||||||
serviced = 0.0;
|
return !g_queue_is_empty(&idle_queue);
|
||||||
return false;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
float idle_progress()
|
float idle_progress()
|
||||||
{
|
{
|
||||||
if (idle_queue.size() == 0)
|
if (g_queue_is_empty(&idle_queue))
|
||||||
return 1.0;
|
return 1.0;
|
||||||
return serviced / queued;
|
return serviced / queued;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue