It returns! With RAII on the event sink. I encountered some intermittent failures (both related, and somewhat unrelated but exposed):
MirConnection::released -> We don't want to remove the surface from valid surfaces until here because we may still be receiving configuration events until the surface is actually released on the server side.
input_testing_server_options: It's not enough to say we are ready for input when the input_registrar returns, because the shell may have not yet granted keyboard focus (fixes 1196744)
MirSurface::release_surface: There was a deadlock going on here:
22:42 < racarr> Client calls mir_surface_release it gets to MirSurface::release_surface which acquires the recursive lock on the MirSurface
22:42 < racarr> then calls MirConnection::release_surface
22:42 < racarr> which trys to acquire the connection lock, but blocks because an RPC thread is
22:42 < racarr> has called MirConnection::handle_event
22:42 < racarr> holding the lock
22:43 < racarr> but the RPC thread while executing MirConnection::handle_event tries to call
22:43 < racarr> MirSurface::handle_event
22:43 < racarr> but the Surface is already locked from the
22:43 < racarr> original client thread
It returns! With RAII on the event sink. I encountered some intermittent failures (both related, and somewhat unrelated but exposed):
MirConnection: :released -> We don't want to remove the surface from valid surfaces until here because we may still be receiving configuration events until the surface is actually released on the server side.
input_testing_ server_ options: It's not enough to say we are ready for input when the input_registrar returns, because the shell may have not yet granted keyboard focus (fixes 1196744)
MirSurface: :release_ surface: There was a deadlock going on here:
22:42 < racarr> Client calls mir_surface_release it gets to MirSurface: :release_ surface which acquires the recursive lock on the MirSurface :release_ surface :handle_ event :handle_ event tries to call :handle_ event
22:42 < racarr> then calls MirConnection:
22:42 < racarr> which trys to acquire the connection lock, but blocks because an RPC thread is
22:42 < racarr> has called MirConnection:
22:42 < racarr> holding the lock
22:43 < racarr> but the RPC thread while executing MirConnection:
22:43 < racarr> MirSurface:
22:43 < racarr> but the Surface is already locked from the
22:43 < racarr> original client thread