X-Git-Url: http://git.tuebingen.mpg.de/?a=blobdiff_plain;f=audiod.c;h=838f375fe6df2c2d96c4bfa2aa41d28e64c29f72;hb=a296ecdb1ab1657d3ec756fbb4cdd9618b621a2e;hp=7293285ef9687ee1c35fd46bfb735a73f6870ec0;hpb=2bad70d84e763b4d866d7b97dbc1cdc8e030bd45;p=paraslash.git diff --git a/audiod.c b/audiod.c index 7293285e..838f375f 100644 --- a/audiod.c +++ b/audiod.c @@ -480,6 +480,23 @@ static void close_writers(struct slot_info *s) s->wns = NULL; } +static void notify_writers(int error) +{ + int i; + + FOR_EACH_SLOT(i) { + struct slot_info *s = slot + i; + struct audio_format_info *a; + int j; + + if (s->format < 0) + continue; + a = afi + s->format; + for (j = 0; j < a->num_writers; j++) + task_notify(s->wns[j].task, error); + } +} + static void close_filters(struct slot_info *s) { int i; @@ -1218,8 +1235,9 @@ static void start_stop_decoders(void) struct slot_info *sl; close_unused_slots(); - if (audiod_status != AUDIOD_ON || - !(stat_task->vss_status & VSS_STATUS_FLAG_PLAYING)) + if (audiod_status != AUDIOD_ON) + return notify_writers(E_NOT_PLAYING); + if (!(stat_task->vss_status & VSS_STATUS_FLAG_PLAYING)) return notify_receivers(E_NOT_PLAYING); if (!must_start_decoder()) return;