X-Git-Url: http://git.tuebingen.mpg.de/?p=paraslash.git;a=blobdiff_plain;f=oss_write.c;h=d0cff0150bf9c7690ffe2eb37f0a55b46d142c00;hp=b002113caeb5e3c7dd75c78080a4fb9cead20510;hb=5b15980ce22a3a4244e2440f46eac19eb0ceb3ef;hpb=28e9fc661113f219f8e11f4e23723a176d9ac09c diff --git a/oss_write.c b/oss_write.c index b002113c..d0cff015 100644 --- a/oss_write.c +++ b/oss_write.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2009 Andre Noll + * Copyright (C) 2009-2010 Andre Noll * * Licensed under the GPL v2. For licencing details see COPYING. */ @@ -36,7 +36,7 @@ struct private_oss_write_data { int bytes_per_frame; }; -static void oss_pre_select_btr(struct sched *s, struct task *t) +static void oss_pre_select(struct sched *s, struct task *t) { struct writer_node *wn = container_of(t, struct writer_node, task); struct private_oss_write_data *powd = wn->private_data; @@ -53,7 +53,8 @@ static void oss_close(struct writer_node *wn) { struct private_oss_write_data *powd = wn->private_data; - close(powd->fd); + if (powd->fd >= 0) + close(powd->fd); free(powd); } @@ -137,11 +138,11 @@ static int oss_init(struct writer_node *wn, unsigned samplerate, unsigned channe return 1; err: close(powd->fd); - free(powd); + powd->fd = -1; return ret; } -static void oss_post_select_btr(__a_unused struct sched *s, +static void oss_post_select(__a_unused struct sched *s, struct task *t) { struct writer_node *wn = container_of(t, struct writer_node, task); @@ -236,8 +237,8 @@ void oss_write_init(struct writer *w) oss_cmdline_parser_init(&dummy); w->open = oss_open; w->close = oss_close; - w->pre_select_btr = oss_pre_select_btr; - w->post_select_btr = oss_post_select_btr; + w->pre_select = oss_pre_select; + w->post_select = oss_post_select; w->parse_config = oss_parse_config; w->free_config = oss_free_config; w->shutdown = NULL;