summaryrefslogtreecommitdiff
path: root/Xext/sleepuntil.c
diff options
context:
space:
mode:
Diffstat (limited to 'Xext/sleepuntil.c')
-rw-r--r--Xext/sleepuntil.c230
1 files changed, 107 insertions, 123 deletions
diff --git a/Xext/sleepuntil.c b/Xext/sleepuntil.c
index 3fd06acd7..52e22b4a6 100644
--- a/Xext/sleepuntil.c
+++ b/Xext/sleepuntil.c
@@ -41,185 +41,169 @@ in this Software without prior written authorization from The Open Group.
#include "scrnintstr.h"
typedef struct _Sertafied {
- struct _Sertafied *next;
- TimeStamp revive;
- ClientPtr pClient;
- XID id;
- void (*notifyFunc)(
- ClientPtr /* client */,
- pointer /* closure */
- );
-
- pointer closure;
+ struct _Sertafied *next;
+ TimeStamp revive;
+ ClientPtr pClient;
+ XID id;
+ void (*notifyFunc) (ClientPtr /* client */ ,
+ pointer /* closure */
+ );
+
+ pointer closure;
} SertafiedRec, *SertafiedPtr;
static SertafiedPtr pPending;
-static RESTYPE SertafiedResType;
-static Bool BlockHandlerRegistered;
-static int SertafiedGeneration;
-
-static void ClientAwaken(
- ClientPtr /* client */,
- pointer /* closure */
-);
-static int SertafiedDelete(
- pointer /* value */,
- XID /* id */
-);
-static void SertafiedBlockHandler(
- pointer /* data */,
- OSTimePtr /* wt */,
- pointer /* LastSelectMask */
-);
-static void SertafiedWakeupHandler(
- pointer /* data */,
- int /* i */,
- pointer /* LastSelectMask */
-);
+static RESTYPE SertafiedResType;
+static Bool BlockHandlerRegistered;
+static int SertafiedGeneration;
+
+static void ClientAwaken(ClientPtr /* client */ ,
+ pointer /* closure */
+ );
+static int SertafiedDelete(pointer /* value */ ,
+ XID /* id */
+ );
+static void SertafiedBlockHandler(pointer /* data */ ,
+ OSTimePtr /* wt */ ,
+ pointer /* LastSelectMask */
+ );
+static void SertafiedWakeupHandler(pointer /* data */ ,
+ int /* i */ ,
+ pointer /* LastSelectMask */
+ );
int
-ClientSleepUntil (ClientPtr client,
- TimeStamp *revive,
- void (*notifyFunc)(ClientPtr, pointer),
- pointer closure)
+ClientSleepUntil(ClientPtr client,
+ TimeStamp *revive,
+ void (*notifyFunc) (ClientPtr, pointer), pointer closure)
{
- SertafiedPtr pRequest, pReq, pPrev;
-
- if (SertafiedGeneration != serverGeneration)
- {
- SertafiedResType = CreateNewResourceType (SertafiedDelete,
- "ClientSleep");
- if (!SertafiedResType)
- return FALSE;
- SertafiedGeneration = serverGeneration;
- BlockHandlerRegistered = FALSE;
+ SertafiedPtr pRequest, pReq, pPrev;
+
+ if (SertafiedGeneration != serverGeneration) {
+ SertafiedResType = CreateNewResourceType(SertafiedDelete,
+ "ClientSleep");
+ if (!SertafiedResType)
+ return FALSE;
+ SertafiedGeneration = serverGeneration;
+ BlockHandlerRegistered = FALSE;
}
- pRequest = malloc(sizeof (SertafiedRec));
+ pRequest = malloc(sizeof(SertafiedRec));
if (!pRequest)
- return FALSE;
+ return FALSE;
pRequest->pClient = client;
pRequest->revive = *revive;
- pRequest->id = FakeClientID (client->index);
+ pRequest->id = FakeClientID(client->index);
pRequest->closure = closure;
- if (!BlockHandlerRegistered)
- {
- if (!RegisterBlockAndWakeupHandlers (SertafiedBlockHandler,
- SertafiedWakeupHandler,
- (pointer) 0))
- {
- free(pRequest);
- return FALSE;
- }
- BlockHandlerRegistered = TRUE;
+ if (!BlockHandlerRegistered) {
+ if (!RegisterBlockAndWakeupHandlers(SertafiedBlockHandler,
+ SertafiedWakeupHandler,
+ (pointer) 0)) {
+ free(pRequest);
+ return FALSE;
+ }
+ BlockHandlerRegistered = TRUE;
}
pRequest->notifyFunc = 0;
- if (!AddResource (pRequest->id, SertafiedResType, (pointer) pRequest))
- return FALSE;
+ if (!AddResource(pRequest->id, SertafiedResType, (pointer) pRequest))
+ return FALSE;
if (!notifyFunc)
- notifyFunc = ClientAwaken;
+ notifyFunc = ClientAwaken;
pRequest->notifyFunc = notifyFunc;
/* Insert into time-ordered queue, with earliest activation time coming first. */
pPrev = 0;
- for (pReq = pPending; pReq; pReq = pReq->next)
- {
- if (CompareTimeStamps (pReq->revive, *revive) == LATER)
- break;
- pPrev = pReq;
+ for (pReq = pPending; pReq; pReq = pReq->next) {
+ if (CompareTimeStamps(pReq->revive, *revive) == LATER)
+ break;
+ pPrev = pReq;
}
if (pPrev)
- pPrev->next = pRequest;
+ pPrev->next = pRequest;
else
- pPending = pRequest;
+ pPending = pRequest;
pRequest->next = pReq;
- IgnoreClient (client);
+ IgnoreClient(client);
return TRUE;
}
static void
-ClientAwaken (ClientPtr client, pointer closure)
+ClientAwaken(ClientPtr client, pointer closure)
{
if (!client->clientGone)
- AttendClient (client);
+ AttendClient(client);
}
-
static int
-SertafiedDelete (pointer value, XID id)
+SertafiedDelete(pointer value, XID id)
{
- SertafiedPtr pRequest = (SertafiedPtr)value;
- SertafiedPtr pReq, pPrev;
+ SertafiedPtr pRequest = (SertafiedPtr) value;
+ SertafiedPtr pReq, pPrev;
pPrev = 0;
for (pReq = pPending; pReq; pPrev = pReq, pReq = pReq->next)
- if (pReq == pRequest)
- {
- if (pPrev)
- pPrev->next = pReq->next;
- else
- pPending = pReq->next;
- break;
- }
+ if (pReq == pRequest) {
+ if (pPrev)
+ pPrev->next = pReq->next;
+ else
+ pPending = pReq->next;
+ break;
+ }
if (pRequest->notifyFunc)
- (*pRequest->notifyFunc) (pRequest->pClient, pRequest->closure);
+ (*pRequest->notifyFunc) (pRequest->pClient, pRequest->closure);
free(pRequest);
return TRUE;
}
static void
-SertafiedBlockHandler (pointer data, OSTimePtr wt, pointer LastSelectMask)
+SertafiedBlockHandler(pointer data, OSTimePtr wt, pointer LastSelectMask)
{
- SertafiedPtr pReq, pNext;
- unsigned long delay;
- TimeStamp now;
+ SertafiedPtr pReq, pNext;
+ unsigned long delay;
+ TimeStamp now;
if (!pPending)
- return;
- now.milliseconds = GetTimeInMillis ();
+ return;
+ now.milliseconds = GetTimeInMillis();
now.months = currentTime.months;
if ((int) (now.milliseconds - currentTime.milliseconds) < 0)
- now.months++;
- for (pReq = pPending; pReq; pReq = pNext)
- {
- pNext = pReq->next;
- if (CompareTimeStamps (pReq->revive, now) == LATER)
- break;
- FreeResource (pReq->id, RT_NONE);
-
- /* AttendClient() may have been called via the resource delete
- * function so a client may have input to be processed and so
- * set delay to 0 to prevent blocking in WaitForSomething().
- */
- AdjustWaitForDelay (wt, 0);
+ now.months++;
+ for (pReq = pPending; pReq; pReq = pNext) {
+ pNext = pReq->next;
+ if (CompareTimeStamps(pReq->revive, now) == LATER)
+ break;
+ FreeResource(pReq->id, RT_NONE);
+
+ /* AttendClient() may have been called via the resource delete
+ * function so a client may have input to be processed and so
+ * set delay to 0 to prevent blocking in WaitForSomething().
+ */
+ AdjustWaitForDelay(wt, 0);
}
pReq = pPending;
if (!pReq)
- return;
+ return;
delay = pReq->revive.milliseconds - now.milliseconds;
- AdjustWaitForDelay (wt, delay);
+ AdjustWaitForDelay(wt, delay);
}
static void
-SertafiedWakeupHandler (pointer data, int i, pointer LastSelectMask)
+SertafiedWakeupHandler(pointer data, int i, pointer LastSelectMask)
{
- SertafiedPtr pReq, pNext;
- TimeStamp now;
+ SertafiedPtr pReq, pNext;
+ TimeStamp now;
- now.milliseconds = GetTimeInMillis ();
+ now.milliseconds = GetTimeInMillis();
now.months = currentTime.months;
if ((int) (now.milliseconds - currentTime.milliseconds) < 0)
- now.months++;
- for (pReq = pPending; pReq; pReq = pNext)
- {
- pNext = pReq->next;
- if (CompareTimeStamps (pReq->revive, now) == LATER)
- break;
- FreeResource (pReq->id, RT_NONE);
+ now.months++;
+ for (pReq = pPending; pReq; pReq = pNext) {
+ pNext = pReq->next;
+ if (CompareTimeStamps(pReq->revive, now) == LATER)
+ break;
+ FreeResource(pReq->id, RT_NONE);
}
- if (!pPending)
- {
- RemoveBlockAndWakeupHandlers (SertafiedBlockHandler,
- SertafiedWakeupHandler,
- (pointer) 0);
- BlockHandlerRegistered = FALSE;
+ if (!pPending) {
+ RemoveBlockAndWakeupHandlers(SertafiedBlockHandler,
+ SertafiedWakeupHandler, (pointer) 0);
+ BlockHandlerRegistered = FALSE;
}
}