X-Git-Url: http://git.tuebingen.mpg.de/?p=paraslash.git;a=blobdiff_plain;f=play.c;h=927f5dc69df9c8a44d60c5d7221c626ccc0efaea;hp=1b3cc933926da62c9c6f6914759b66f015ac61ee;hb=becfb4be64a123630775b6517279ed20e4b498f8;hpb=64cc9685a1bfa789dbcc447d68493691727e11ba diff --git a/play.c b/play.c index 1b3cc933..927f5dc6 100644 --- a/play.c +++ b/play.c @@ -263,7 +263,7 @@ static int get_playback_error(struct play_task *pt) static int eof_cleanup(struct play_task *pt) { struct writer *w = writers + DEFAULT_WRITER; - struct filter *decoder = filters + pt->fn.filter_num; + const struct filter *decoder = filter_get(pt->fn.filter_num); int ret; ret = get_playback_error(pt); @@ -277,7 +277,8 @@ static int eof_cleanup(struct play_task *pt) memset(&pt->wn, 0, sizeof(struct writer_node)); task_reap(&pt->fn.task); - decoder->close(&pt->fn); + if (decoder->close) + decoder->close(&pt->fn); btr_remove_node(&pt->fn.btrn); free(pt->fn.conf); memset(&pt->fn, 0, sizeof(struct filter_node)); @@ -368,7 +369,7 @@ static int load_file(struct play_task *pt) const char *af; char *tmp, buf[20]; int ret; - struct filter *decoder; + const struct filter *decoder; btr_remove_node(&pt->rn.btrn); if (!pt->rn.receiver || pt->next_file != pt->current_file) { @@ -393,7 +394,7 @@ static int load_file(struct play_task *pt) if (ret < 0) goto fail; pt->fn.filter_num = ret; - decoder = filters + ret; + decoder = filter_get(ret); pt->fn.btrn = btr_new_node(&(struct btr_node_description) EMBRACE(.name = decoder->name, .parent = pt->rn.btrn, .handler = decoder->execute, .context = &pt->fn)); @@ -921,6 +922,8 @@ static int com_jmp(struct play_task *pt, int argc, char **argv) return ret; if (percent < 0 || percent > 100) return -ERRNO_TO_PARA_ERROR(EINVAL); + if (percent == 100) + return com_next(pt, 1, (char *[]){"next", NULL}); if (pt->playing && !pt->fn.btrn) return 0; pt->start_chunk = percent * pt->num_chunks / 100; @@ -1029,7 +1032,7 @@ static void sigint_handler(int sig) * stderr. Once the i9e subsystem has been initialized, we switch to the i9e * log facility. */ -static void session_open(__a_unused struct play_task *pt) +static void session_open(struct play_task *pt) { int ret; char *history_file;