• 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
Name
Last commit
Last update
..
AudioCompress Loading commit data...
archive Loading commit data...
cue Loading commit data...
decoder Loading commit data...
encoder Loading commit data...
filter Loading commit data...
input Loading commit data...
mixer Loading commit data...
output Loading commit data...
playlist Loading commit data...
ack.h Loading commit data...
aiff.c Loading commit data...
aiff.h Loading commit data...
ape.c Loading commit data...
ape.h Loading commit data...
archive_api.c Loading commit data...
archive_api.h Loading commit data...
archive_internal.h Loading commit data...
archive_list.c Loading commit data...
archive_list.h Loading commit data...
archive_plugin.c Loading commit data...
archive_plugin.h Loading commit data...
audio.c Loading commit data...
audio.h Loading commit data...
audio_check.c Loading commit data...
audio_check.h Loading commit data...
audio_format.c Loading commit data...
audio_format.h Loading commit data...
audio_parser.c Loading commit data...
audio_parser.h Loading commit data...
buffer.c Loading commit data...
buffer.h Loading commit data...
check.h Loading commit data...
chunk.c Loading commit data...
chunk.h Loading commit data...
client.c Loading commit data...
client.h Loading commit data...
client_event.c Loading commit data...
client_expire.c Loading commit data...
client_global.c Loading commit data...
client_idle.c Loading commit data...
client_internal.h Loading commit data...
client_list.c Loading commit data...
client_new.c Loading commit data...
client_process.c Loading commit data...
client_read.c Loading commit data...
client_write.c Loading commit data...
cmdline.c Loading commit data...
cmdline.h Loading commit data...
command.c Loading commit data...
command.h Loading commit data...
conf.c Loading commit data...
conf.h Loading commit data...
crossfade.c Loading commit data...
crossfade.h Loading commit data...
daemon.c Loading commit data...
daemon.h Loading commit data...
database.c Loading commit data...
database.h Loading commit data...
dbUtils.c Loading commit data...
dbUtils.h Loading commit data...
decoder_api.c Loading commit data...
decoder_api.h Loading commit data...
decoder_buffer.c Loading commit data...
decoder_buffer.h Loading commit data...
decoder_command.h Loading commit data...
decoder_control.c Loading commit data...
decoder_control.h Loading commit data...
decoder_internal.c Loading commit data...
decoder_internal.h Loading commit data...
decoder_list.c Loading commit data...
decoder_list.h Loading commit data...
decoder_plugin.c Loading commit data...
decoder_plugin.h Loading commit data...
decoder_print.c Loading commit data...
decoder_print.h Loading commit data...
decoder_thread.c Loading commit data...
decoder_thread.h Loading commit data...
directory.c Loading commit data...
directory.h Loading commit data...
directory_print.c Loading commit data...
directory_print.h Loading commit data...
directory_save.c Loading commit data...
directory_save.h Loading commit data...
dirvec.c Loading commit data...
dirvec.h Loading commit data...
encoder_api.h Loading commit data...
encoder_list.c Loading commit data...
encoder_list.h Loading commit data...
encoder_plugin.h Loading commit data...
event_pipe.c Loading commit data...
event_pipe.h Loading commit data...
exclude.c Loading commit data...
exclude.h Loading commit data...
fd_util.c Loading commit data...
fd_util.h Loading commit data...
fifo_buffer.c Loading commit data...
fifo_buffer.h Loading commit data...
filter_config.c Loading commit data...
filter_config.h Loading commit data...
filter_internal.h Loading commit data...
filter_plugin.c Loading commit data...
filter_plugin.h Loading commit data...
filter_registry.c Loading commit data...
filter_registry.h Loading commit data...
gcc.h Loading commit data...
glib_compat.h Loading commit data...
icy_metadata.c Loading commit data...
icy_metadata.h Loading commit data...
icy_server.c Loading commit data...
icy_server.h Loading commit data...
idle.c Loading commit data...
idle.h Loading commit data...
inotify_queue.c Loading commit data...
inotify_queue.h Loading commit data...
inotify_source.c Loading commit data...
inotify_source.h Loading commit data...
inotify_update.c Loading commit data...
inotify_update.h Loading commit data...
input_init.c Loading commit data...
input_init.h Loading commit data...
input_plugin.h Loading commit data...
input_registry.c Loading commit data...
input_registry.h Loading commit data...
input_stream.c Loading commit data...
input_stream.h Loading commit data...
listen.c Loading commit data...
listen.h Loading commit data...
locate.c Loading commit data...
locate.h Loading commit data...
log.c Loading commit data...
log.h Loading commit data...
ls.c Loading commit data...
ls.h Loading commit data...
main.c Loading commit data...
main.h Loading commit data...
main_win32.c Loading commit data...
mapper.c Loading commit data...
mapper.h Loading commit data...
mixer_all.c Loading commit data...
mixer_all.h Loading commit data...
mixer_api.c Loading commit data...
mixer_api.h Loading commit data...
mixer_control.c Loading commit data...
mixer_control.h Loading commit data...
mixer_list.h Loading commit data...
mixer_plugin.h Loading commit data...
mixer_type.c Loading commit data...
mixer_type.h Loading commit data...
mpd_error.h Loading commit data...
notify.c Loading commit data...
notify.h Loading commit data...
open.h Loading commit data...
output_all.c Loading commit data...
output_all.h Loading commit data...
output_api.h Loading commit data...
output_command.c Loading commit data...
output_command.h Loading commit data...
output_control.c Loading commit data...
output_control.h Loading commit data...
output_init.c Loading commit data...
output_internal.h Loading commit data...
output_list.c Loading commit data...
output_list.h Loading commit data...
output_plugin.h Loading commit data...
output_print.c Loading commit data...
output_print.h Loading commit data...
output_state.c Loading commit data...
output_state.h Loading commit data...
output_thread.c Loading commit data...
output_thread.h Loading commit data...
page.c Loading commit data...
page.h Loading commit data...
path.c Loading commit data...
path.h Loading commit data...
pcm_buffer.h Loading commit data...
pcm_byteswap.c Loading commit data...
pcm_byteswap.h Loading commit data...
pcm_channels.c Loading commit data...
pcm_channels.h Loading commit data...
pcm_convert.c Loading commit data...
pcm_convert.h Loading commit data...
pcm_dither.c Loading commit data...
pcm_dither.h Loading commit data...
pcm_format.c Loading commit data...
pcm_format.h Loading commit data...
pcm_mix.c Loading commit data...
pcm_mix.h Loading commit data...
pcm_pack.c Loading commit data...
pcm_pack.h Loading commit data...
pcm_prng.h Loading commit data...
pcm_resample.c Loading commit data...
pcm_resample.h Loading commit data...
pcm_resample_fallback.c Loading commit data...
pcm_resample_internal.h Loading commit data...
pcm_resample_libsamplerate.c Loading commit data...
pcm_utils.h Loading commit data...
pcm_volume.c Loading commit data...
pcm_volume.h Loading commit data...
permission.c Loading commit data...
permission.h Loading commit data...
pipe.c Loading commit data...
pipe.h Loading commit data...
player_control.c Loading commit data...
player_control.h Loading commit data...
player_thread.c Loading commit data...
player_thread.h Loading commit data...
playlist.c Loading commit data...
playlist.h Loading commit data...
playlist_any.c Loading commit data...
playlist_any.h Loading commit data...
playlist_control.c Loading commit data...
playlist_database.c Loading commit data...
playlist_database.h Loading commit data...
playlist_edit.c Loading commit data...
playlist_global.c Loading commit data...
playlist_internal.h Loading commit data...
playlist_list.c Loading commit data...
playlist_list.h Loading commit data...
playlist_mapper.c Loading commit data...
playlist_mapper.h Loading commit data...
playlist_plugin.h Loading commit data...
playlist_print.c Loading commit data...
playlist_print.h Loading commit data...
playlist_queue.c Loading commit data...
playlist_queue.h Loading commit data...
playlist_save.c Loading commit data...
playlist_save.h Loading commit data...
playlist_song.c Loading commit data...
playlist_song.h Loading commit data...
playlist_state.c Loading commit data...
playlist_state.h Loading commit data...
playlist_vector.c Loading commit data...
playlist_vector.h Loading commit data...
poison.h Loading commit data...
queue.c Loading commit data...
queue.h Loading commit data...
queue_print.c Loading commit data...
queue_print.h Loading commit data...
queue_save.c Loading commit data...
queue_save.h Loading commit data...
refcount.h Loading commit data...
replay_gain_ape.c Loading commit data...
replay_gain_ape.h Loading commit data...
replay_gain_config.c Loading commit data...
replay_gain_config.h Loading commit data...
replay_gain_info.c Loading commit data...
replay_gain_info.h Loading commit data...
riff.c Loading commit data...
riff.h Loading commit data...
server_socket.c Loading commit data...
server_socket.h Loading commit data...
sig_handlers.c Loading commit data...
sig_handlers.h Loading commit data...
socket_util.c Loading commit data...
socket_util.h Loading commit data...
song.c Loading commit data...
song.h Loading commit data...
song_print.c Loading commit data...
song_print.h Loading commit data...
song_save.c Loading commit data...
song_save.h Loading commit data...
song_sticker.c Loading commit data...
song_sticker.h Loading commit data...
song_update.c Loading commit data...
songvec.c Loading commit data...
songvec.h Loading commit data...
state_file.c Loading commit data...
state_file.h Loading commit data...
stats.c Loading commit data...
stats.h Loading commit data...
sticker.c Loading commit data...
sticker.h Loading commit data...
sticker_print.c Loading commit data...
sticker_print.h Loading commit data...
stored_playlist.c Loading commit data...
stored_playlist.h Loading commit data...
strset.c Loading commit data...
strset.h Loading commit data...
tag.c Loading commit data...
tag.h Loading commit data...
tag_ape.c Loading commit data...
tag_ape.h Loading commit data...
tag_id3.c Loading commit data...
tag_id3.h Loading commit data...
tag_internal.h Loading commit data...
tag_pool.c Loading commit data...
tag_pool.h Loading commit data...
tag_print.c Loading commit data...
tag_print.h Loading commit data...
tag_rva2.c Loading commit data...
tag_rva2.h Loading commit data...
tag_save.c Loading commit data...
tag_save.h Loading commit data...
tag_table.h Loading commit data...
text_file.c Loading commit data...
text_file.h Loading commit data...
text_input_stream.c Loading commit data...
text_input_stream.h Loading commit data...
timer.c Loading commit data...
timer.h Loading commit data...
tokenizer.c Loading commit data...
tokenizer.h Loading commit data...
update.c Loading commit data...
update.h Loading commit data...
update_internal.h Loading commit data...
update_queue.c Loading commit data...
update_remove.c Loading commit data...
update_walk.c Loading commit data...
uri.c Loading commit data...
uri.h Loading commit data...
utils.c Loading commit data...
utils.h Loading commit data...
volume.c Loading commit data...
volume.h Loading commit data...
zeroconf-avahi.c Loading commit data...
zeroconf-bonjour.c Loading commit data...
zeroconf-internal.h Loading commit data...
zeroconf.c Loading commit data...
zeroconf.h Loading commit data...