1
0
mirror of https://github.com/gryf/wmaker.git synced 2026-01-29 11:35:47 +01:00

*** empty log message ***

This commit is contained in:
kojima
2001-03-14 03:18:16 +00:00
parent eab5ea31ea
commit 3b7b2ef6b7

View File

@@ -38,7 +38,7 @@ typedef struct TimerHandler {
struct timeval when; /* when to call the callback */ struct timeval when; /* when to call the callback */
void *clientData; void *clientData;
struct TimerHandler *next; struct TimerHandler *next;
Bool permanent; int nextDelay; /* 0 if it's one-shot */
} TimerHandler; } TimerHandler;
@@ -174,7 +174,7 @@ WMAddTimerHandler(int milliseconds, WMCallback *callback, void *cdata)
addmillisecs(&handler->when, milliseconds); addmillisecs(&handler->when, milliseconds);
handler->callback = callback; handler->callback = callback;
handler->clientData = cdata; handler->clientData = cdata;
handler->permanent = False; handler->nextDelay = 0;
enqueueTimerHandler(handler); enqueueTimerHandler(handler);
@@ -188,7 +188,7 @@ WMAddEternalTimerHandler(int milliseconds, WMCallback *callback, void *cdata)
TimerHandler *handler = WMAddTimerHandler(milliseconds, callback, cdata); TimerHandler *handler = WMAddTimerHandler(milliseconds, callback, cdata);
if (handler != NULL) if (handler != NULL)
handler->permanent = True; handler->nextDelay = milliseconds;
return handler; return handler;
} }
@@ -205,7 +205,7 @@ WMDeleteTimerWithClientData(void *cdata)
tmp = timerHandler; tmp = timerHandler;
if (tmp->clientData==cdata) { if (tmp->clientData==cdata) {
tmp->permanent = False; tmp->nextDelay = 0;
if (!IS_ZERO(tmp->when)) { if (!IS_ZERO(tmp->when)) {
timerHandler = tmp->next; timerHandler = tmp->next;
wfree(tmp); wfree(tmp);
@@ -214,7 +214,7 @@ WMDeleteTimerWithClientData(void *cdata)
while (tmp->next) { while (tmp->next) {
if (tmp->next->clientData==cdata) { if (tmp->next->clientData==cdata) {
handler = tmp->next; handler = tmp->next;
handler->permanent = False; handler->nextDelay = 0;
if (IS_ZERO(handler->when)) if (IS_ZERO(handler->when))
break; break;
tmp->next = handler->next; tmp->next = handler->next;
@@ -238,7 +238,7 @@ WMDeleteTimerHandler(WMHandlerID handlerID)
tmp = timerHandler; tmp = timerHandler;
handler->permanent = False; handler->nextDelay = 0;
if (IS_ZERO(handler->when)) if (IS_ZERO(handler->when))
return; return;
@@ -400,9 +400,9 @@ checkTimerHandlers()
handler = timerHandler; handler = timerHandler;
timerHandler = timerHandler->next; timerHandler = timerHandler->next;
if (handler->permanent) { if (handler->nextDelay > 0) {
rightNow(&handler->when); rightNow(&handler->when);
addmillisecs(&handler->when, milliseconds); addmillisecs(&handler->when, handler->nextDelay);
enqueueTimerHandler(handler); enqueueTimerHandler(handler);
} else { } else {
wfree(handler); wfree(handler);