3 #include <proto/exec.h>
5 #include <inline4/exec.h>
9 typedef struct SDL_cond_node
{
19 SDL_cond
*SDL_CreateCond(void) {
21 cond
= malloc(sizeof(*cond
));
23 init_list(&cond
->list
);
28 void SDL_DestroyCond(SDL_cond
*cond
) {
34 int SDL_CondWait(SDL_cond
*cond
, SDL_mutex
*mut
) {
36 node
.task
= FindTask(NULL
);
37 node
.signal
= AllocSignal(-1);
38 add_tail(&cond
->list
, &node
.node
);
40 Wait(1 << node
.signal
);
41 FreeSignal(node
.signal
);
46 int SDL_CondSignal(SDL_cond
*cond
) {
48 node
= (SDL_cond_node
*)rem_head(&cond
->list
);
50 Signal(node
->task
, 1 << node
->signal
);