In GL code, we have two subsystems using IgnoreClient these days: GLX and DRI2.
GLX uses it to suspend clients while the server is VT switched away (not sure why, maybe some drivers can't handle it?). DRI2 uses it to implement swap throttling and various GLX extensions and DRI2 protocol requests. Unfortunately the two don't work together. What I'm seeing is this: 1) client gets throttled in DRI2 due to an outstanding set of swaps pending (DRI2ThrottleClient from one of the DRI2 proto requests). IgnoredClientsWithInput should be set with the client fd at this point. 2) server is VT switched away 3) GLX code suspends all GLX clients using IgnoreClient. At this point, IgnoredClientsWithInput is cleared of the client fd. Then when we VT switch back to the server, the suspended client's fd is never serviced, because its input status was lost. IgnoreClient is fairly ancient though, so there's probably some reason for the "clear IgnoredClientsWithInput" behavior. Any suggestions on how to solve it? Fixing this issue fixes bug #27035. Maybe we could clear it in AttendClient instead, after copying it over to ClientsWithInput? Seems like losing it is the wrong thing to do... Thanks, -- Jesse Barnes, Intel Open Source Technology Center _______________________________________________ xorg-devel@lists.x.org: X.Org development Archives: http://lists.x.org/archives/xorg-devel Info: http://lists.x.org/mailman/listinfo/xorg-devel