Skip to content
  • Andrea Azzarone's avatar
    sound-player: Don't deadlock in finish_cb · 8856a396
    Andrea Azzarone authored and Andrea Azzarone's avatar Andrea Azzarone committed
    The function finish_cb can be called as a result of a call to ca_context_cancel
    in cancelled_cb. This will result in a deadlock because, as per documentation,
    g_cancellable_disconnect cannot be called inside the cancellable handler.
    
    It is possible to detect if the call to finish_cb is caused by ca_context_cancel
    checking if error_code == CA_ERROR_CANCELED. To avoid the deadlock we should
    call g_signal_handler_disconnect instead g_cancellable_disconnect if this is the
    case.
    
    !474
    8856a396