Merge branch 't/old_gcc_fixes'
[paraslash.git] / alsa_write.c
index 1ae266371c2215ee3400d459b9a1854f98d63e15..8c12c728e551035bd8eca071216e3c7e44060de5 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2005-2011 Andre Noll <maan@systemlinux.org>
+ * Copyright (C) 2005-2012 Andre Noll <maan@systemlinux.org>
  *
  * Licensed under the GPL v2. For licencing details see COPYING.
  */
@@ -72,7 +72,7 @@ static int alsa_init(struct private_alsa_write_data *pad,
        snd_pcm_sw_params_t *swparams;
        snd_pcm_uframes_t start_threshold, stop_threshold;
        snd_pcm_uframes_t buffer_size, period_size;
-       snd_output_t *log;
+       snd_output_t *output_log;
        unsigned buffer_time;
        int ret;
        const char *msg;
@@ -113,6 +113,8 @@ static int alsa_init(struct private_alsa_write_data *pad,
                NULL);
        if (ret < 0 || buffer_time == 0)
                goto fail;
+       /* buffer at most 500 milliseconds */
+       buffer_time = PARA_MIN(buffer_time, 500U * 1000U);
        msg = "could not set buffer time";
        ret = snd_pcm_hw_params_set_buffer_time_near(pad->handle, hwparams,
                &buffer_time, NULL);
@@ -161,12 +163,12 @@ static int alsa_init(struct private_alsa_write_data *pad,
        ret = snd_pcm_nonblock(pad->handle, 1);
        if (ret < 0)
                goto fail;
-       ret = snd_output_buffer_open(&log);
+       ret = snd_output_buffer_open(&output_log);
        if (ret == 0) {
                char *buf;
                PARA_INFO_LOG("dumping alsa configuration\n");
-               snd_pcm_dump(pad->handle, log);
-               snd_output_buffer_string(log, &buf);
+               snd_pcm_dump(pad->handle, output_log);
+               snd_output_buffer_string(output_log, &buf);
                for (;;) {
                        char *p = strchr(buf, '\n');
                        if (!p) /* omit last output line, it's empty */
@@ -175,7 +177,7 @@ static int alsa_init(struct private_alsa_write_data *pad,
                        PARA_INFO_LOG("%s\n", buf);
                        buf = p + 1;
                }
-               snd_output_close(log);
+               snd_output_close(output_log);
        }
        return 1;
 fail:
@@ -356,7 +358,6 @@ void alsa_write_init(struct writer *w)
        w->pre_select = alsa_write_pre_select;
        w->post_select = alsa_write_post_select;
        w->parse_config_or_die = alsa_parse_config_or_die;
-       w->shutdown = NULL; /* nothing to do */
        w->free_config = alsa_free_config;
        w->help = (struct ggo_help) {
                .short_help = alsa_write_args_info_help,