• Max Kellermann's avatar
    output_thread: reimplement CANCEL synchronization · 8b0b4ff0
    Max Kellermann authored
    The output thread could hang indefinitely after finishing CANCEL,
    because it could have missed the signal while the output was not
    unlocked in ao_command_finished().
    
    This patch removes the wait() call after CANCEL, and adds the flag
    "allow_play" instead.  While this flag is set, playback is skipped.
    With this flag, there will not be any excess wait() call after the
    pipe has been cleared.
    
    This patch fixes a bug that causes mpd to discontinue playback after
    seeking, due to the race condition described above.
    8b0b4ff0
output_thread.c 14.9 KB