diff options
author | Keith Packard <keithp@keithp.com> | 2017-01-09 18:10:21 -0800 |
---|---|---|
committer | Adam Jackson <ajax@redhat.com> | 2017-01-11 15:04:12 -0500 |
commit | 82dcb68a8782d0cce6e6ce1a375cda05c91fe8c3 (patch) | |
tree | d5187770cbcfa88586cded4516f112432d968477 /os | |
parent | 14516988e095ed748e738c14a87c3656006846f7 (diff) |
AttendClient of grab-pervious client must queue to saved_ready_clients [v2]
A client which is attended while a grab is blocking execution of its
requests needs to be placed in the saved_ready_clients list so that it
will get scheduled once the grab terminates. Otherwise, if the client
never sends another request, there is no way for it to be placed in
the ready_clients list.
v2: Wrap comment above mark_client_saved_ready.
Remove test for OS_COMM_IGNORED which will always be true.
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=99333
Reviewed-by: Adam Jackson <ajax@redhat.com>
Signed-off-by: Keith Packard <keithp@keithp.com>
(cherry picked from commit 785053d033e73d2deb0ded4b97eabfd881991978)
Diffstat (limited to 'os')
-rw-r--r-- | os/connection.c | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/os/connection.c b/os/connection.c index a901ebf3c..62e298072 100644 --- a/os/connection.c +++ b/os/connection.c @@ -1067,6 +1067,10 @@ AttendClient(ClientPtr client) set_poll_client(client); if (listen_to_client(client)) mark_client_ready(client); + else { + /* grab active, mark ready when grab goes away */ + mark_client_saved_ready(client); + } } /* make client impervious to grabs; assume only executing client calls this */ |