src/modules/alsa/alsa-sink.c | 10 +++++++--- src/pulse/stream.c | 2 +- src/pulsecore/rtpoll.h | 8 +------- 3 files changed, 9 insertions(+), 11 deletions(-)
New commits: commit bcee830007594fb283f1d7c80355a9805b02d756 Author: Maarten Bosmans <[email protected]> Date: Thu Oct 13 20:54:17 2011 +0200 rtpoll: Update comment to reflect changes made in 32e2cd6d3216f780c4cffed0f8eb3c30f2c8d732 core: get rid of rt sig/timer handling since modern Linux' ppoll() is finally fixed for granularity diff --git a/src/pulsecore/rtpoll.h b/src/pulsecore/rtpoll.h index bb3c860..1c8f8b0 100644 --- a/src/pulsecore/rtpoll.h +++ b/src/pulsecore/rtpoll.h @@ -34,13 +34,7 @@ * yet another wrapper around poll(). However it has certain * advantages over pa_mainloop and suchlike: * - * 1) It uses timer_create() and POSIX real time signals to guarantee - * optimal high-resolution timing. Starting with Linux 2.6.21 hrtimers - * are available, and since right now only nanosleep() and the POSIX - * clock and timer interfaces have been ported to hrtimers (and not - * ppoll/pselect!) we have to combine ppoll() with timer_create(). The - * fact that POSIX timers and POSIX rt signals are used internally is - * completely hidden. + * 1) High resolution timers are used * * 2) It allows raw access to the pollfd data to users * commit 7d05ac606bd5a86c94ab13f8d6c898ad86b6b78a Author: Antti-Ville Jansson <[email protected]> Date: Fri Nov 11 16:22:24 2011 +0200 stream: Fix upload samples' cleanup In pa_create_stream_callback, a stream is inserted into s->context->record_streams only if it's a record stream. Otherwise it's inserted into s->context->playback_streams. However, in stream_unlink the stream is removed from s->context->playback_streams only if it's a playback stream and otherwise it's removed from s->context->record_streams. Thus, if the stream is an upload stream, we first insert it into s->context->playback_streams in pa_create_stream_callback and then try to remove it unsuccessfully from s->context->record_streams in stream_unlink. This means that we are leaking hashmap entries until the context is freed, constantly consuming more memory with applications that upload and unload a large number of samples through one context. Of course, this begs the question whether upload streams even belong in either of those hashmaps. I don't want to mess around with the code too much at this point though, so this patch should be a sufficient improvement. diff --git a/src/pulse/stream.c b/src/pulse/stream.c index 3bf2d96..5433abf 100644 --- a/src/pulse/stream.c +++ b/src/pulse/stream.c @@ -258,7 +258,7 @@ static void stream_unlink(pa_stream *s) { pa_pdispatch_unregister_reply(s->context->pdispatch, s); if (s->channel_valid) { - pa_hashmap_remove((s->direction == PA_STREAM_PLAYBACK) ? s->context->playback_streams : s->context->record_streams, PA_UINT32_TO_PTR(s->channel)); + pa_hashmap_remove((s->direction == PA_STREAM_RECORD) ? s->context->record_streams : s->context->playback_streams, PA_UINT32_TO_PTR(s->channel)); s->channel = 0; s->channel_valid = FALSE; } commit d320ae029b136bb54fcd19f9c29fa033106ca1b8 Author: Arun Raghavan <[email protected]> Date: Sat Nov 12 11:18:25 2011 +0530 alsa: Minor debug code cleanup Remove a trap on underrun and uncomment a couple of useful debug prints (still enabled only when DEBUG_TIMING is defined). diff --git a/src/modules/alsa/alsa-sink.c b/src/modules/alsa/alsa-sink.c index 1386196..93ecb28 100644 --- a/src/modules/alsa/alsa-sink.c +++ b/src/modules/alsa/alsa-sink.c @@ -457,7 +457,7 @@ static size_t check_left_to_play(struct userdata *u, size_t n_bytes, pa_bool_t o left_to_play = 0; underrun = TRUE; -#ifdef DEBUG_TIMING +#if 0 PA_DEBUG_TRAP; #endif @@ -1727,13 +1727,17 @@ static void thread_func(void *userdata) { /* OK, the playback buffer is now full, let's * calculate when to wake up next */ -/* pa_log_debug("Waking up in %0.2fms (sound card clock).", (double) sleep_usec / PA_USEC_PER_MSEC); */ +#ifdef DEBUG_TIMING + pa_log_debug("Waking up in %0.2fms (sound card clock).", (double) sleep_usec / PA_USEC_PER_MSEC); +#endif /* Convert from the sound card time domain to the * system time domain */ cusec = pa_smoother_translate(u->smoother, pa_rtclock_now(), sleep_usec); -/* pa_log_debug("Waking up in %0.2fms (system clock).", (double) cusec / PA_USEC_PER_MSEC); */ +#ifdef DEBUG_TIMING + pa_log_debug("Waking up in %0.2fms (system clock).", (double) cusec / PA_USEC_PER_MSEC); +#endif /* We don't trust the conversion, so we wake up whatever comes first */ rtpoll_sleep = PA_MIN(sleep_usec, cusec); _______________________________________________ pulseaudio-commits mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/pulseaudio-commits
