dix: Add ClientSignalAll()
This is a variant of ClientSignal() that signals all clients with an optional matching sleeping client, function and closure. Reviewed-by: Adam Jackson <ajax@redhat.com> Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
This commit is contained in:
parent
9fecc4cd57
commit
bc3634010c
|
@ -620,6 +620,28 @@ ClientSignal(ClientPtr client)
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int
|
||||||
|
ClientSignalAll(ClientPtr client, ClientSleepProcPtr function, void *closure)
|
||||||
|
{
|
||||||
|
SleepQueuePtr q;
|
||||||
|
int count = 0;
|
||||||
|
|
||||||
|
for (q = sleepQueue; q; q = q->next) {
|
||||||
|
if (!(client == CLIENT_SIGNAL_ANY || q->client == client))
|
||||||
|
continue;
|
||||||
|
|
||||||
|
if (!(function == CLIENT_SIGNAL_ANY || q->function == function))
|
||||||
|
continue;
|
||||||
|
|
||||||
|
if (!(closure == CLIENT_SIGNAL_ANY || q->closure == closure))
|
||||||
|
continue;
|
||||||
|
|
||||||
|
count += QueueWorkProc(q->function, q->client, q->closure);
|
||||||
|
}
|
||||||
|
|
||||||
|
return count;
|
||||||
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
ClientWakeup(ClientPtr client)
|
ClientWakeup(ClientPtr client)
|
||||||
{
|
{
|
||||||
|
|
|
@ -255,6 +255,14 @@ extern _X_EXPORT Bool ClientSleep(ClientPtr client,
|
||||||
extern _X_EXPORT Bool ClientSignal(ClientPtr /*client */ );
|
extern _X_EXPORT Bool ClientSignal(ClientPtr /*client */ );
|
||||||
#endif /* ___CLIENTSIGNAL_DEFINED___ */
|
#endif /* ___CLIENTSIGNAL_DEFINED___ */
|
||||||
|
|
||||||
|
#ifndef ___CLIENTSIGNALALL_DEFINED___
|
||||||
|
#define ___CLIENTSIGNALALL_DEFINED___
|
||||||
|
#define CLIENT_SIGNAL_ANY ((void *)-1)
|
||||||
|
extern _X_EXPORT int ClientSignalAll(ClientPtr /*client*/,
|
||||||
|
ClientSleepProcPtr /*function*/,
|
||||||
|
void * /*closure*/);
|
||||||
|
#endif /* ___CLIENTSIGNALALL_DEFINED___ */
|
||||||
|
|
||||||
extern _X_EXPORT void ClientWakeup(ClientPtr /*client */ );
|
extern _X_EXPORT void ClientWakeup(ClientPtr /*client */ );
|
||||||
|
|
||||||
extern _X_EXPORT Bool ClientIsAsleep(ClientPtr /*client */ );
|
extern _X_EXPORT Bool ClientIsAsleep(ClientPtr /*client */ );
|
||||||
|
|
Loading…
Reference in New Issue