GFXprim
2D bitmap graphics library with emphasis on speed and correctness
Loading...
Searching...
No Matches
gp_task.h
Go to the documentation of this file.
1// SPDX-License-Identifier: LGPL-2.1-or-later
2/*
3 * Copyright (C) 2009-2021 Cyril Hrubis <metan@ucw.cz>
4 */
5
16#ifndef INPUT_GP_TASK_H
17#define INPUT_GP_TASK_H
18
19#include <input/gp_types.h>
20#include <utils/gp_list.h>
21
22#define GP_TASK_NONE_PRIO 0
23/* These are just bounds for the priorities. */
24#define GP_TASK_MIN_PRIO 1
25#define GP_TASK_MAX_PRIO 3
26
30 unsigned int task_cnt;
36 unsigned int min_prio;
38 gp_dlist queues[GP_TASK_MAX_PRIO - GP_TASK_MIN_PRIO + 1];
39};
40
48struct gp_task {
52 unsigned int prio:3;
54 unsigned int queued:1;
56 char *id;
65 int (*callback)(gp_task *self);
67 void *priv;
68};
69
76
84
92
106
107
115static inline size_t gp_task_queue_tasks(gp_task_queue *self)
116{
117 return self->task_cnt;
118}
119
128static inline unsigned int gp_task_queue_head_prio(gp_task_queue *self)
129{
130 return self->min_prio;
131}
132
133#endif /* INPUT_GP_TASK_H */
A linked list implementation.
void gp_task_queue_dump(gp_task_queue *self)
Dumps task queue structure into stdout.
void gp_task_queue_rem(gp_task_queue *self, gp_task *task)
Removes a new task from the queue.
int gp_task_queue_process(gp_task_queue *self)
Runs a single task in the queue.
static unsigned int gp_task_queue_head_prio(gp_task_queue *self)
Returns minimal priority from all tasks in the queue.
Definition gp_task.h:128
static size_t gp_task_queue_tasks(gp_task_queue *self)
Returns number of tasks in the queue.
Definition gp_task.h:115
void gp_task_queue_ins(gp_task_queue *self, gp_task *task)
Inserts a new task into the queue.
A double linked list header.
Definition gp_list.h:34
A double linked list pointers.
Definition gp_list.h:56
A task queue.
Definition gp_task.h:28
gp_dlist queues[3 - 1+1]
A linked list per priority queue.
Definition gp_task.h:38
unsigned int min_prio
A minimal priority for a non-empty queue.
Definition gp_task.h:36
unsigned int task_cnt
A number of task in the queue.
Definition gp_task.h:30
A task.
Definition gp_task.h:48
char * id
Human readable task id.
Definition gp_task.h:56
unsigned int prio
A task priority.
Definition gp_task.h:52
unsigned int queued
Set if task is queued in the queue.
Definition gp_task.h:54
gp_dlist_head head
A pointers to the linked list.
Definition gp_task.h:50
void * priv
A private pointer to be used by the user of the API.
Definition gp_task.h:67
int(* callback)(gp_task *self)
The task callback.
Definition gp_task.h:65