dix: Remove clients from input and output ready queues after closing
Delay removing the client from these two queues until all potential I/O has completed in case we mark the client as ready for reading or with pending output during the close operation. Bugzilla: https://bugs.freedesktop.org/100957 Signed-off-by: Keith Packard <keithp@keithp.com> Tested-by: Nick Sarnie <commendsarnex@gmail.com> Reviewed-by: Michel Dänzer <michel.daenzer@amd.com>
This commit is contained in:
		
							parent
							
								
									c394f6b273
								
							
						
					
					
						commit
						d9e23ea422
					
				|  | @ -3414,7 +3414,6 @@ CloseDownClient(ClientPtr client) | ||||||
|         if (grabState != GrabNone && grabClient == client) { |         if (grabState != GrabNone && grabClient == client) { | ||||||
|             UngrabServer(client); |             UngrabServer(client); | ||||||
|         } |         } | ||||||
|         mark_client_not_ready(client); |  | ||||||
|         BITCLEAR(grabWaiters, client->index); |         BITCLEAR(grabWaiters, client->index); | ||||||
|         DeleteClientFromAnySelections(client); |         DeleteClientFromAnySelections(client); | ||||||
|         ReleaseActiveGrabs(client); |         ReleaseActiveGrabs(client); | ||||||
|  | @ -3443,8 +3442,9 @@ CloseDownClient(ClientPtr client) | ||||||
|         if (ClientIsAsleep(client)) |         if (ClientIsAsleep(client)) | ||||||
|             ClientSignal(client); |             ClientSignal(client); | ||||||
|         ProcessWorkQueueZombies(); |         ProcessWorkQueueZombies(); | ||||||
|         output_pending_clear(client); |  | ||||||
|         CloseDownConnection(client); |         CloseDownConnection(client); | ||||||
|  |         output_pending_clear(client); | ||||||
|  |         mark_client_not_ready(client); | ||||||
| 
 | 
 | ||||||
|         /* If the client made it to the Running stage, nClients has
 |         /* If the client made it to the Running stage, nClients has
 | ||||||
|          * been incremented on its behalf, so we need to decrement it |          * been incremented on its behalf, so we need to decrement it | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue