]> git.tuebingen.mpg.de Git - paraslash.git/commitdiff
Merge branch 'refs/heads/t/para_play_fixes'
authorAndre Noll <maan@tuebingen.mpg.de>
Sat, 30 Jan 2016 12:07:11 +0000 (13:07 +0100)
committerAndre Noll <maan@tuebingen.mpg.de>
Sat, 30 Jan 2016 12:07:11 +0000 (13:07 +0100)
Was cooking in next since 2015-10-25.

* refs/heads/t/para_play_fixes:
  i9e: Avoid key binding macros.
  play: Fix off-by-one in jmp 100.

1  2 
play.c

diff --combined play.c
index 6e6b91f93865dd3623592098c339a181be2dbb6d,7593a69b25123d6983d39de373c3399a4ec78d51..55c9ec1bbb635946fe8ec92eadb52fa0accc8bf6
--- 1/play.c
--- 2/play.c
+++ b/play.c
@@@ -184,10 -184,10 +184,10 @@@ static void parse_config_or_die(int arg
                loglevel = get_loglevel_by_name(conf.loglevel_arg);
        }
        for (i = 0; i < conf.key_map_given; i++) {
 -              char *s = strchr(conf.key_map_arg[i] + 1, ':');
 -              if (s)
 +              char *kma = conf.key_map_arg[i];
 +              if (*kma && strchr(kma + 1, ':'))
                        continue;
 -              PARA_EMERG_LOG("invalid key map arg: %s\n", conf.key_map_arg[i]);
 +              PARA_EMERG_LOG("invalid key map arg: %s\n", kma);
                goto err;
        }
        free(config_file);
@@@ -263,7 -263,7 +263,7 @@@ static int get_playback_error(struct pl
  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);
@@@ -368,7 -368,7 +368,7 @@@ static int load_file(struct play_task *
        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) {
        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 -921,8 +921,8 @@@ static int com_jmp(struct play_task *pt
                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 -1031,7 +1031,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;