dix: dixutils: make workQueue pointer dix-private
The workQueue pointer is currently declared extern, so that WaitForSomething() can check wether we've got something in the queue and call ProcessWorkQueue() then. But that's trivial to simplify: just let ProcessWorkQueue() return early if workQueue == NULL. Gives us a better isolation of internal stuff as well as ProcessWorkQueue() protecting itself from possible segfault. Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net> Part-of: <https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/1310>
This commit is contained in:
parent
834acc88fb
commit
af9f70013a
|
@ -525,6 +525,10 @@ ProcessWorkQueue(void)
|
|||
{
|
||||
WorkQueuePtr q, *p;
|
||||
|
||||
// don't have a work queue yet
|
||||
if (!workQueue)
|
||||
return;
|
||||
|
||||
p = &workQueue;
|
||||
/*
|
||||
* Scan the work queue once, calling each function. Those
|
||||
|
|
|
@ -657,14 +657,11 @@ make the server suspend until one or more of the following occurs:
|
|||
<para>
|
||||
Before WaitForSomething() computes the masks to pass to select, poll or
|
||||
similar operating system interface, it needs to
|
||||
see if there is anything to do on the work queue; if so, it must call a DIX
|
||||
routine called ProcessWorkQueue.
|
||||
see if there is anything to do on the work queue; it must call a DIX
|
||||
routine called ProcessWorkQueue().
|
||||
<blockquote>
|
||||
<programlisting>
|
||||
extern WorkQueuePtr workQueue;
|
||||
|
||||
if (workQueue)
|
||||
ProcessWorkQueue ();
|
||||
ProcessWorkQueue ();
|
||||
</programlisting>
|
||||
</blockquote>
|
||||
</para>
|
||||
|
|
|
@ -188,9 +188,7 @@ WaitForSomething(Bool are_ready)
|
|||
crashed connections and the screen saver timeout */
|
||||
while (1) {
|
||||
/* deal with any blocked jobs */
|
||||
if (workQueue) {
|
||||
ProcessWorkQueue();
|
||||
}
|
||||
ProcessWorkQueue();
|
||||
|
||||
timeout = check_timers();
|
||||
are_ready = clients_are_ready();
|
||||
|
|
|
@ -123,8 +123,6 @@ listen_to_client(ClientPtr client);
|
|||
|
||||
extern Bool NewOutputPending;
|
||||
|
||||
extern WorkQueuePtr workQueue;
|
||||
|
||||
/* in access.c */
|
||||
extern Bool ComputeLocalClient(ClientPtr client);
|
||||
|
||||
|
|
Loading…
Reference in New Issue