From: Andre Noll Date: Sun, 2 Dec 2012 21:23:43 +0000 (+0100) Subject: Merge branch 't/afh_receiver' X-Git-Tag: v0.4.12~7 X-Git-Url: http://git.tue.mpg.de/?a=commitdiff_plain;h=83ab4b5d38bb63cf4724022c3804d3eaa2ac51d3;p=paraslash.git Merge branch 't/afh_receiver' 57d75e play: Fix segfault if decoder is not supported. 98f192 Interactive support depends on curses lib. 3e3d8e para_play, implementation. d02f88 para_play, infrastructure. 3b2ee2 Make writer nodes honor notifications. e541d7 interactive: Introduce i9e_print_status_bar(). 901f66 interactive: Implement single key mode. 6cb789 interactive: Add producer to struct i9e_client_info. c31982 Interactive: Introduce i9e_get_error(). be1074 interactive: Fix wipe_bottom_line() on MacOS. 3ba772 interactive: Honor SIGWINCH. 56561c interactive: Honor SIGTERM. 06f33c para_afh: remove streaming mode. 4a30c5 The afh receiver, documentation. b84e37 The afh receiver, implementation. 618a25 The afh_receiver, infrastructure. 4fa8cb Add execute mechanism to receiver nodes. 7c8931 Introduce afh_get_afhi_txt(). 3f1510 audiod: Replace kill_btrn() by task notifications. 5edb8f sched: Replace sched_shutdown() by task_notify_all(). 58ce61 sched: Introduce task notifications. b56199 i9e_attach_to_stdout(): Don't insist on btrn == NULL. 7867cd Interactive: Assorted whitespace/newline fixes. b654be interactive: kill i9ep->line_handler_running. 77b607 interactive: Do not close stderr in i9e_close(). 099ef4 Add missing documentation of send_strerror(). Conflicts: osx_write.c --- 83ab4b5d38bb63cf4724022c3804d3eaa2ac51d3 diff --cc NEWS index 69372cc4,2c05b8f9..62e3b7d1 --- a/NEWS +++ b/NEWS @@@ -1,7 -1,7 +1,11 @@@ ----------------------------------------------- --0.?.? (to be announced) "volatile relativity" ----------------------------------------------- ++---------------------------------------------- ++0.4.12 (to be announced) "volatile relativity" ++---------------------------------------------- ++The new command line player, ALSA support for para_fade, and the ++improved build system are the highlights of this release, which ++probably marks the end of the 0.4.x series. ++ - The afh receiver and the para_play executable - The "versions" directory has been removed from the master branch. The tarballs of the old releases are now available in the new "releases" branch. diff --cc osx_write.c index 2894f11e,f8476bfd..b057b9c0 --- a/osx_write.c +++ b/osx_write.c @@@ -313,35 -293,29 +316,36 @@@ static void osx_write_post_select(__a_u if (ret == 0) return; if (ret < 0) - goto remove_btrn; + goto fail; ret = core_audio_init(wn); if (ret < 0) - goto remove_btrn; + goto fail; powd = wn->private_data; - AudioOutputUnitStart(powd->audio_unit); + ret = -E_UNIT_START; + if (AudioOutputUnitStart(powd->audio_unit) != noErr) { + AudioUnitUninitialize(powd->audio_unit); + CloseComponent(powd->audio_unit); + btr_remove_node(&powd->callback_btrn); + goto remove_btrn; + } } mutex_lock(powd->mutex); - btr_pushdown(btrn); - ret = btr_node_status(btrn, wn->min_iqs, BTR_NT_LEAF); + ret = btr_node_status(btrn, wn->min_iqs, BTR_NT_INTERNAL); + if (ret > 0) + btr_pushdown(btrn); if (ret < 0 && need_drain_delay(powd)) ret = 0; - if (ret >= 0) { - mutex_unlock(powd->mutex); + mutex_unlock(powd->mutex); + if (ret >= 0) return; + fail: + assert(ret < 0); + if (powd && powd->callback_btrn) { + AudioOutputUnitStop(powd->audio_unit); + AudioUnitUninitialize(powd->audio_unit); + CloseComponent(powd->audio_unit); + btr_remove_node(&powd->callback_btrn); } - AudioOutputUnitStop(powd->audio_unit); - AudioUnitUninitialize(powd->audio_unit); - CloseComponent(powd->audio_unit); - btr_remove_node(&powd->callback_btrn); - mutex_unlock(powd->mutex); - remove_btrn: btr_remove_node(&wn->btrn); PARA_NOTICE_LOG("%s\n", para_strerror(-ret)); t->error = ret;