[pulseaudio-commits] [SCM] PulseAudio Sound Server branch, master, updated. v0.9.11-173-g1c4ad4b
Lennart Poettering
gitmailer-noreply at 0pointer.de
Sun Aug 31 07:25:50 PDT 2008
This is an automated email from the git hooks/post-receive script. It was
generated because of a push to the "PulseAudio Sound Server" repository.
The master branch has been updated
from 13018d62c10731459b0b4fd3f6852dcebddbccb8 (commit)
- Log -----------------------------------------------------------------
1c4ad4b... rework device opening code: work around broken SND_PCM_NO_AUTO_xxx support in ALSA <= 1.0.17a
34bcba6... remove a few more gcc warnings
-----------------------------------------------------------------------
Summary of changes:
src/modules/alsa-util.c | 107 ++++++++++++++++++++++++++++----------------
src/pulsecore/module.c | 4 +-
src/pulsecore/object.h | 2 +-
src/pulsecore/pid.c | 4 +-
src/pulsecore/resampler.c | 2 +-
src/pulsecore/shm.c | 4 +-
src/pulsecore/sound-file.c | 4 +-
7 files changed, 78 insertions(+), 49 deletions(-)
-----------------------------------------------------------------------
commit 34bcba63a2eded49853b29844e65328502a3cb0d
Author: Lennart Poettering <lennart at poettering.net>
Date: Sat Aug 30 01:22:41 2008 +0200
remove a few more gcc warnings
diff --git a/src/pulsecore/module.c b/src/pulsecore/module.c
index 29003af..9b17cb9 100644
--- a/src/pulsecore/module.c
+++ b/src/pulsecore/module.c
@@ -59,7 +59,7 @@ static void timeout_callback(pa_mainloop_api *m, pa_time_event*e, const struct t
pa_module_unload_unused(c);
pa_gettimeofday(&ntv);
- pa_timeval_add(&ntv, UNLOAD_POLL_TIME*1000000);
+ pa_timeval_add(&ntv, UNLOAD_POLL_TIME*PA_USEC_PER_SEC);
m->time_restart(e, &ntv);
}
@@ -124,7 +124,7 @@ pa_module* pa_module_load(pa_core *c, const char *name, const char *argument) {
if (m->auto_unload && !c->module_auto_unload_event) {
struct timeval ntv;
pa_gettimeofday(&ntv);
- pa_timeval_add(&ntv, UNLOAD_POLL_TIME*1000000);
+ pa_timeval_add(&ntv, UNLOAD_POLL_TIME*PA_USEC_PER_SEC);
c->module_auto_unload_event = c->mainloop->time_new(c->mainloop, &ntv, timeout_callback, c);
}
diff --git a/src/pulsecore/object.h b/src/pulsecore/object.h
index 7dcfa2e..2ee4fc3 100644
--- a/src/pulsecore/object.h
+++ b/src/pulsecore/object.h
@@ -42,7 +42,7 @@ struct pa_object {
pa_object *pa_object_new_internal(size_t size, const char *type_name, int (*check_type)(const char *type_name));
#define pa_object_new(type) ((type*) pa_object_new_internal(sizeof(type), #type, type##_check_type)
-#define pa_object_free ((void (*) (pa_object* o)) pa_xfree)
+#define pa_object_free ((void (*) (pa_object* _obj)) pa_xfree)
int pa_object_check_type(const char *type);
diff --git a/src/pulsecore/pid.c b/src/pulsecore/pid.c
index 1c0851b..ce8ef19 100644
--- a/src/pulsecore/pid.c
+++ b/src/pulsecore/pid.c
@@ -235,7 +235,7 @@ int pa_pid_file_create(const char *procname) {
}
/* Overwrite the current PID file */
- if (lseek(fd, 0, SEEK_SET) == (off_t) -1 || ftruncate(fd, 0) < 0) {
+ if (lseek(fd, (off_t) 0, SEEK_SET) == (off_t) -1 || ftruncate(fd, (off_t) 0) < 0) {
pa_log("Failed to truncate PID file '%s': %s", fn, pa_cstrerror(errno));
goto fail;
}
@@ -288,7 +288,7 @@ int pa_pid_file_remove(void) {
goto fail;
}
- if (ftruncate(fd, 0) < 0) {
+ if (ftruncate(fd, (off_t) 0) < 0) {
pa_log_warn("Failed to truncate PID file '%s': %s", fn, pa_cstrerror(errno));
goto fail;
}
diff --git a/src/pulsecore/resampler.c b/src/pulsecore/resampler.c
index b20fc61..45cd68c 100644
--- a/src/pulsecore/resampler.c
+++ b/src/pulsecore/resampler.c
@@ -1047,7 +1047,7 @@ static pa_memchunk *remap_channels(pa_resampler *r, pa_memchunk *input) {
(int16_t*) dst + oc, o_skip,
(int16_t*) src + ic, i_skip,
(int) n_frames,
- 1.0, r->map_table[oc][ic]);
+ 1.0f, r->map_table[oc][ic]);
}
}
diff --git a/src/pulsecore/shm.c b/src/pulsecore/shm.c
index 05b0679..b299757 100644
--- a/src/pulsecore/shm.c
+++ b/src/pulsecore/shm.c
@@ -143,7 +143,7 @@ int pa_shm_create_rw(pa_shm *m, size_t size, pa_bool_t shared, mode_t mode) {
goto fail;
}
- if ((m->ptr = mmap(NULL, m->size, PROT_READ|PROT_WRITE, MAP_SHARED, fd, 0)) == MAP_FAILED) {
+ if ((m->ptr = mmap(NULL, m->size, PROT_READ|PROT_WRITE, MAP_SHARED, fd, (off_t) 0)) == MAP_FAILED) {
pa_log("mmap() failed: %s", pa_cstrerror(errno));
goto fail;
}
@@ -291,7 +291,7 @@ int pa_shm_attach_ro(pa_shm *m, unsigned id) {
m->size = (size_t) st.st_size;
- if ((m->ptr = mmap(NULL, m->size, PROT_READ, MAP_SHARED, fd, 0)) == MAP_FAILED) {
+ if ((m->ptr = mmap(NULL, m->size, PROT_READ, MAP_SHARED, fd, (off_t) 0)) == MAP_FAILED) {
pa_log("mmap() failed: %s", pa_cstrerror(errno));
goto fail;
}
diff --git a/src/pulsecore/sound-file.c b/src/pulsecore/sound-file.c
index 74338f9..380cef1 100644
--- a/src/pulsecore/sound-file.c
+++ b/src/pulsecore/sound-file.c
@@ -89,7 +89,7 @@ int pa_sound_file_load(
case SF_FORMAT_PCM_U8:
case SF_FORMAT_PCM_S8:
ss->format = PA_SAMPLE_S16NE;
- readf_function = (sf_count_t (*)(SNDFILE *sndfile, void *ptr, sf_count_t frames)) sf_readf_short;
+ readf_function = (sf_count_t (*)(SNDFILE *sndfile, void *_ptr, sf_count_t frames)) sf_readf_short;
break;
case SF_FORMAT_ULAW:
@@ -104,7 +104,7 @@ int pa_sound_file_load(
case SF_FORMAT_DOUBLE:
default:
ss->format = PA_SAMPLE_FLOAT32NE;
- readf_function = (sf_count_t (*)(SNDFILE *sndfile, void *ptr, sf_count_t frames)) sf_readf_float;
+ readf_function = (sf_count_t (*)(SNDFILE *sndfile, void *_ptr, sf_count_t frames)) sf_readf_float;
break;
}
commit 1c4ad4b64be168d13a31c8147505b88967be4afb
Author: Lennart Poettering <lennart at poettering.net>
Date: Sun Aug 31 16:25:37 2008 +0200
rework device opening code: work around broken SND_PCM_NO_AUTO_xxx support in ALSA <= 1.0.17a
diff --git a/src/modules/alsa-util.c b/src/modules/alsa-util.c
index 3599553..8fa405d 100644
--- a/src/modules/alsa-util.c
+++ b/src/modules/alsa-util.c
@@ -421,6 +421,8 @@ int pa_alsa_set_hw_params(
ret = 0;
+ snd_pcm_nonblock(pcm_handle, 1);
+
finish:
return ret;
@@ -569,40 +571,60 @@ snd_pcm_t *pa_alsa_open_by_device_id(
continue;
d = pa_sprintf_malloc("%s:%s", device_table[i].name, dev_id);
- pa_log_debug("Trying %s...", d);
- if ((err = snd_pcm_open(&pcm_handle, d, mode,
- SND_PCM_NONBLOCK|
- SND_PCM_NO_AUTO_RESAMPLE|
- SND_PCM_NO_AUTO_CHANNELS|
- SND_PCM_NO_AUTO_FORMAT |
- SND_PCM_NO_SOFTVOL)) < 0) {
- pa_log_info("Couldn't open PCM device %s: %s", d, snd_strerror(err));
- pa_xfree(d);
- continue;
- }
+ for (;;) {
+ pa_log_debug("Trying %s...", d);
+
+ /* We don't pass SND_PCM_NONBLOCK here, since alsa-lib <=
+ * 1.0.17a would then ignore the SND_PCM_NO_xxx
+ * flags. Instead we enable nonblock mode afterwards via
+ * snd_pcm_nonblock(). Also see
+ * http://mailman.alsa-project.org/pipermail/alsa-devel/2008-August/010258.html */
+
+ if ((err = snd_pcm_open(&pcm_handle, d, mode,
+ /* SND_PCM_NONBLOCK| */
+ SND_PCM_NO_AUTO_RESAMPLE|
+ SND_PCM_NO_AUTO_CHANNELS|
+ SND_PCM_NO_AUTO_FORMAT)) < 0) {
+ pa_log_info("Couldn't open PCM device %s: %s", d, snd_strerror(err));
+ break;
+ }
- try_ss.channels = device_table[i].map.channels;
- try_ss.rate = ss->rate;
- try_ss.format = ss->format;
+ try_ss.channels = device_table[i].map.channels;
+ try_ss.rate = ss->rate;
+ try_ss.format = ss->format;
- if ((err = pa_alsa_set_hw_params(pcm_handle, &try_ss, nfrags, period_size, tsched_size, use_mmap, use_tsched, TRUE)) < 0) {
- pa_log_info("PCM device %s refused our hw parameters: %s", d, snd_strerror(err));
- pa_xfree(d);
- snd_pcm_close(pcm_handle);
- continue;
+ if ((err = pa_alsa_set_hw_params(pcm_handle, &try_ss, nfrags, period_size, tsched_size, use_mmap, use_tsched, TRUE)) < 0) {
+
+ if (!pa_startswith(d, "plug:") && !pa_startswith(d, "plughw:")) {
+ char *t;
+
+ t = pa_sprintf_malloc("plug:%s", d);
+ pa_xfree(d);
+ d = t;
+
+ snd_pcm_close(pcm_handle);
+ continue;
+ }
+
+ pa_log_info("PCM device %s refused our hw parameters: %s", d, snd_strerror(err));
+ snd_pcm_close(pcm_handle);
+ break;
+ }
+
+ *ss = try_ss;
+ *map = device_table[i].map;
+ pa_assert(map->channels == ss->channels);
+ *dev = d;
+ return pcm_handle;
}
- *ss = try_ss;
- *map = device_table[i].map;
- pa_assert(map->channels == ss->channels);
- *dev = d;
- return pcm_handle;
+ pa_xfree(d);
}
/* OK, we didn't find any good device, so let's try the raw plughw: stuff */
- d = pa_sprintf_malloc("plughw:%s", dev_id);
+ d = pa_sprintf_malloc("hw:%s", dev_id);
pa_log_debug("Trying %s as last resort...", d);
pcm_handle = pa_alsa_open_by_device_string(d, dev, ss, map, mode, nfrags, period_size, tsched_size, use_mmap, use_tsched);
pa_xfree(d);
@@ -636,8 +658,16 @@ snd_pcm_t *pa_alsa_open_by_device_string(
d = pa_xstrdup(device);
for (;;) {
+ pa_log_debug("Trying %s...", d);
+
+ /* We don't pass SND_PCM_NONBLOCK here, since alsa-lib <=
+ * 1.0.17a would then ignore the SND_PCM_NO_xxx flags. Instead
+ * we enable nonblock mode afterwards via
+ * snd_pcm_nonblock(). Also see
+ * http://mailman.alsa-project.org/pipermail/alsa-devel/2008-August/010258.html */
- if ((err = snd_pcm_open(&pcm_handle, d, mode, SND_PCM_NONBLOCK|
+ if ((err = snd_pcm_open(&pcm_handle, d, mode,
+ /*SND_PCM_NONBLOCK|*/
SND_PCM_NO_AUTO_RESAMPLE|
SND_PCM_NO_AUTO_CHANNELS|
SND_PCM_NO_AUTO_FORMAT)) < 0) {
@@ -648,24 +678,23 @@ snd_pcm_t *pa_alsa_open_by_device_string(
if ((err = pa_alsa_set_hw_params(pcm_handle, ss, nfrags, period_size, tsched_size, use_mmap, use_tsched, FALSE)) < 0) {
- if (err == -EPERM) {
- /* Hmm, some hw is very exotic, so we retry with plug, if without it didn't work */
-
- if (pa_startswith(d, "hw:")) {
- char *t = pa_sprintf_malloc("plughw:%s", d+3);
- pa_log_debug("Opening the device as '%s' didn't work, retrying with '%s'.", d, t);
- pa_xfree(d);
- d = t;
+ /* Hmm, some hw is very exotic, so we retry with plug, if without it didn't work */
- snd_pcm_close(pcm_handle);
- continue;
- }
+ if (!pa_startswith(d, "plug:") && !pa_startswith(d, "plughw:")) {
+ char *t;
- pa_log("Failed to set hardware parameters on %s: %s", d, snd_strerror(err));
+ t = pa_sprintf_malloc("plug:%s", d);
pa_xfree(d);
+ d = t;
+
snd_pcm_close(pcm_handle);
- return NULL;
+ continue;
}
+
+ pa_log("Failed to set hardware parameters on %s: %s", d, snd_strerror(err));
+ pa_xfree(d);
+ snd_pcm_close(pcm_handle);
+ return NULL;
}
*dev = d;
--
hooks/post-receive
PulseAudio Sound Server
More information about the pulseaudio-commits
mailing list