[pulseaudio-commits] [SCM] PulseAudio Sound Server branch, master, updated. v0.9.19-300-g6faf383
Lennart Poettering
gitmailer-noreply at 0pointer.de
Tue Jan 5 13:38:32 PST 2010
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 a282eadb88f26cea183399dba267d619bbdcd6df (commit)
- Log -----------------------------------------------------------------
6faf383 headers: Some trivial fixes for some documentation typos
0e47065 Subject: rtpoll: better support for DEBUG_TIMING logs
-----------------------------------------------------------------------
Summary of changes:
src/pulse/def.h | 3 ++-
src/pulse/introspect.h | 2 +-
src/pulse/proplist.h | 2 +-
src/pulse/simple.h | 4 ++--
src/pulse/stream.h | 4 ++--
src/pulse/volume.h | 6 +++---
src/pulsecore/asyncq.h | 5 +++--
src/pulsecore/aupdate.h | 2 +-
src/pulsecore/memblockq.h | 2 +-
src/pulsecore/rtpoll.c | 23 ++++++++++++++++++++---
10 files changed, 36 insertions(+), 17 deletions(-)
-----------------------------------------------------------------------
commit 0e47065fe5a410bcb7c367c23fc4d99b71fd82b2
Author: Pierre-Louis Bossart <pierre-louis.bossart at intel.com>
Date: Wed Dec 23 13:57:03 2009 -0600
Subject: rtpoll: better support for DEBUG_TIMING logs
On all the platforms I tested, PulseAudio is frequently awaken and
doesn't sleep for the duration specified for the poll timeout.
Sometimes wake-ups occur within milliseconds of the poll call for no
good reason; this seems to be related to ALSA issues (see my posts on
the ALSA mailing list on null poll events).
This patch enables a better log of requested sleep times v. actual
sleep times. Enable DEBUG_TIMING to see actual messages. Please let me
know if you see odd behaviors like the one below
- Pierre
E: rtpoll.c: rtpoll_run
E: rtpoll.c: poll timeout: 188 ms
E: rtpoll.c: Process time 0 ms; sleep time 48 ms
E: rtpoll.c: rtpoll_run
E: rtpoll.c: rtpoll finish
E: rtpoll.c: rtpoll_run
E: rtpoll.c: poll timeout: 139 ms
E: rtpoll.c: Process time 0 ms; sleep time 49 ms
E: rtpoll.c: rtpoll_run
E: rtpoll.c: rtpoll finish
E: rtpoll.c: rtpoll_run
E: rtpoll.c: poll timeout: 189 ms
E: rtpoll.c: Process time 0 ms; sleep time 0 ms
E: rtpoll.c: rtpoll_run
E: rtpoll.c: rtpoll finish
E: rtpoll.c: rtpoll_run
E: rtpoll.c: poll timeout: 189 ms
E: rtpoll.c: Process time 0 ms; sleep time 49 ms
diff --git a/src/pulsecore/rtpoll.c b/src/pulsecore/rtpoll.c
index 666cbc9..e2f8262 100644
--- a/src/pulsecore/rtpoll.c
+++ b/src/pulsecore/rtpoll.c
@@ -47,6 +47,7 @@
#include <pulsecore/core-util.h>
#include <pulsecore/winsock.h>
#include <pulsecore/ratelimit.h>
+#include <pulse/rtclock.h>
#include "rtpoll.h"
@@ -217,6 +218,10 @@ int pa_rtpoll_run(pa_rtpoll *p, pa_bool_t wait_op) {
pa_assert(p);
pa_assert(!p->running);
+#ifdef DEBUG_TIMING
+ pa_log("rtpoll_run");
+#endif
+
p->running = TRUE;
p->timer_elapsed = FALSE;
@@ -230,13 +235,19 @@ int pa_rtpoll_run(pa_rtpoll *p, pa_bool_t wait_op) {
if (!i->work_cb)
continue;
- if (p->quit)
+ if (p->quit) {
+#ifdef DEBUG_TIMING
+ pa_log("rtpoll finish");
+#endif
goto finish;
+ }
if ((k = i->work_cb(i)) != 0) {
if (k < 0)
r = k;
-
+#ifdef DEBUG_TIMING
+ pa_log("rtpoll finish");
+#endif
goto finish;
}
}
@@ -268,7 +279,9 @@ int pa_rtpoll_run(pa_rtpoll *p, pa_bool_t wait_op) {
if (k < 0)
r = k;
-
+#ifdef DEBUG_TIMING
+ pa_log("rtpoll finish");
+#endif
goto finish;
}
}
@@ -292,6 +305,10 @@ int pa_rtpoll_run(pa_rtpoll *p, pa_bool_t wait_op) {
pa_usec_t now = pa_rtclock_now();
p->awake = now - p->timestamp;
p->timestamp = now;
+ if (!wait_op || p->quit || p->timer_enabled)
+ pa_log("poll timeout: %d ms ",(int) ((timeout.tv_sec*1000) + (timeout.tv_usec / 1000)));
+ else
+ pa_log("poll timeout is ZERO");
}
#endif
commit 6faf38313e5f313cbcfe5c78af1dd310131798d2
Author: Mads Kiilerich <mads at kiilerich.com>
Date: Fri Dec 11 16:20:31 2009 +0100
headers: Some trivial fixes for some documentation typos
Note also the willneed/will_need inconsistency. I guess it could be nice to ASAP
choose one of them and introduce a backward compatibility hack for the other.
The issues was mostly found with:
for a in $(grep -r '^[ /]\*.*()' $(
find -name '*.[ch]') |
sed 's,^.* \([^ ]*\)().*$,\1,g' |
sort |
uniq |
grep ^pa_)
do
grep -rq "^.[^*].*\<$a(" $(find * -name '*.h') || echo $a
done
diff --git a/src/pulse/def.h b/src/pulse/def.h
index 30a076d..82106ef 100644
--- a/src/pulse/def.h
+++ b/src/pulse/def.h
@@ -63,6 +63,7 @@ static inline int PA_CONTEXT_IS_GOOD(pa_context_state_t x) {
#define PA_CONTEXT_SETTING_NAME PA_CONTEXT_SETTING_NAME
#define PA_CONTEXT_READY PA_CONTEXT_READY
#define PA_CONTEXT_FAILED PA_CONTEXT_FAILED
+#define PA_CONTEXT_TERMINATED PA_CONTEXT_TERMINATED
#define PA_CONTEXT_IS_GOOD PA_CONTEXT_IS_GOOD
/** \endcond */
@@ -351,7 +352,7 @@ typedef struct pa_buffer_attr {
* that may be. Initialize to 0 to enable manual start/stop
* control of the stream. This means that playback will not stop
* on underrun and playback will not start automatically. Instead
- * pa_stream_corked() needs to be called explicitly. If you set
+ * pa_stream_cork() needs to be called explicitly. If you set
* this value to 0 you should also set PA_STREAM_START_CORKED. */
uint32_t minreq;
diff --git a/src/pulse/introspect.h b/src/pulse/introspect.h
index 68cfc87..f9d22b2 100644
--- a/src/pulse/introspect.h
+++ b/src/pulse/introspect.h
@@ -460,7 +460,7 @@ typedef struct pa_card_info {
pa_proplist *proplist; /**< Property list */
} pa_card_info;
-/** Callback prototype for pa_context_get_card_info() and friends \since 0.9.15 */
+/** Callback prototype for pa_context_get_card_info_...() \since 0.9.15 */
typedef void (*pa_card_info_cb_t) (pa_context *c, const pa_card_info*i, int eol, void *userdata);
/** Get information about a card by its index \since 0.9.15 */
diff --git a/src/pulse/proplist.h b/src/pulse/proplist.h
index aae0534..e3f0af0 100644
--- a/src/pulse/proplist.h
+++ b/src/pulse/proplist.h
@@ -325,7 +325,7 @@ void pa_proplist_update(pa_proplist *p, pa_update_mode_t mode, pa_proplist *othe
* specified key name. \since 0.9.11 */
int pa_proplist_unset(pa_proplist *p, const char *key);
-/** Similar to pa_proplist_remove() but takes an array of keys to
+/** Similar to pa_proplist_unset() but takes an array of keys to
* remove. The array should be terminated by a NULL pointer. Return -1
* on failure, otherwise the number of entries actually removed (which
* might even be 0, if there where no matching entries to
diff --git a/src/pulse/simple.h b/src/pulse/simple.h
index 6f1ba41..b1f6537 100644
--- a/src/pulse/simple.h
+++ b/src/pulse/simple.h
@@ -82,8 +82,8 @@
*
* \li pa_simple_drain() - Will wait for all sent data to finish playing.
* \li pa_simple_flush() - Will throw away all data currently in buffers.
- * \li pa_simple_get_playback_latency() - Will return the total latency of
- * the playback pipeline.
+ * \li pa_simple_get_latency() - Will return the total latency of
+ * the playback pipeline.
*
* \section cleanup_sec Cleanup
*
diff --git a/src/pulse/stream.h b/src/pulse/stream.h
index bc54a11..b905788 100644
--- a/src/pulse/stream.h
+++ b/src/pulse/stream.h
@@ -289,7 +289,7 @@
* issued on the others.
*
* To synchronize a stream to another, just pass the "master" stream
- * as last argument to pa_stream_connect_playack(). To make sure that
+ * as last argument to pa_stream_connect_playback(). To make sure that
* the freshly created stream doesn't start playback right-away, make
* sure to pass PA_STREAM_START_CORKED and - after all streams have
* been created - uncork them all with a single call to
@@ -716,7 +716,7 @@ pa_operation *pa_stream_set_buffer_attr(pa_stream *s, const pa_buffer_attr *attr
/** Change the stream sampling rate during playback. You need to pass
* PA_STREAM_VARIABLE_RATE in the flags parameter of
- * pa_stream_connect() if you plan to use this function. Only valid
+ * pa_stream_connect_...() if you plan to use this function. Only valid
* after the stream has been connected successfully and if the server
* is at least PulseAudio 0.9.8. \since 0.9.8 */
pa_operation *pa_stream_update_sample_rate(pa_stream *s, uint32_t rate, pa_stream_success_cb_t cb, void *userdata);
diff --git a/src/pulse/volume.h b/src/pulse/volume.h
index ded4422..185c341 100644
--- a/src/pulse/volume.h
+++ b/src/pulse/volume.h
@@ -149,7 +149,7 @@ pa_cvolume* pa_cvolume_set(pa_cvolume *a, unsigned channels, pa_volume_t v);
char *pa_cvolume_snprint(char *s, size_t l, const pa_cvolume *c);
/** Maximum length of the strings returned by
- * pa_cvolume_snprint_dB(). Please note that this value can change with
+ * pa_sw_cvolume_snprint_dB(). Please note that this value can change with
* any release without warning and without being considered API or ABI
* breakage. You should not use this definition anywhere where it
* might become part of an ABI. \since 0.9.13 */
@@ -169,7 +169,7 @@ char *pa_sw_cvolume_snprint_dB(char *s, size_t l, const pa_cvolume *c);
char *pa_volume_snprint(char *s, size_t l, pa_volume_t v);
/** Maximum length of the strings returned by
- * pa_volume_snprint_dB(). Please note that this value can change with
+ * pa_sw_volume_snprint_dB(). Please note that this value can change with
* any release without warning and without being considered API or ABI
* breakage. You should not use this definition anywhere where it
* might become part of an ABI. \since 0.9.15 */
@@ -268,7 +268,7 @@ double pa_sw_volume_to_linear(pa_volume_t v) PA_GCC_CONST;
#ifdef INFINITY
#define PA_DECIBEL_MININFTY ((double) -INFINITY)
#else
-/** This floor value is used as minus infinity when using pa_volume_{to,from}_dB(). */
+/** This floor value is used as minus infinity when using pa_sw_volume_to_dB() / pa_sw_volume_from_dB(). */
#define PA_DECIBEL_MININFTY ((double) -200.0)
#endif
diff --git a/src/pulsecore/asyncq.h b/src/pulsecore/asyncq.h
index e6847ab..47ccbf0 100644
--- a/src/pulsecore/asyncq.h
+++ b/src/pulsecore/asyncq.h
@@ -48,8 +48,9 @@ void pa_asyncq_free(pa_asyncq* q, pa_free_cb_t free_cb);
void* pa_asyncq_pop(pa_asyncq *q, pa_bool_t wait);
int pa_asyncq_push(pa_asyncq *q, void *p, pa_bool_t wait);
-/* Similar to pa_asyncq_push(), but if the queue is full, postpone it
- * locally and delay until pa_asyncq_before_poll_post() */
+/* Similar to pa_asyncq_push(), but if the queue is full, postpone the
+ * appending of the item locally and delay until
+ * pa_asyncq_before_poll_post() is called. */
void pa_asyncq_post(pa_asyncq*l, void *p);
/* For the reading side */
diff --git a/src/pulsecore/aupdate.h b/src/pulsecore/aupdate.h
index fb38ffa..4887112 100644
--- a/src/pulsecore/aupdate.h
+++ b/src/pulsecore/aupdate.h
@@ -39,7 +39,7 @@ void pa_aupdate_write_end(pa_aupdate *a);
/* Will return 0, or 1, depending which copy of the data the caller
* should modify. Each time called this will return the opposite of
- * the previous pa_aupdate_write_begin()/pa_aupdate_write_swap()
+ * the previous pa_aupdate_write_begin() / pa_aupdate_write_swap()
* call. Should only be called between pa_aupdate_write_begin() and
* pa_aupdate_write_end() */
unsigned pa_aupdate_write_swap(pa_aupdate *a);
diff --git a/src/pulsecore/memblockq.h b/src/pulsecore/memblockq.h
index 587c364..b756549 100644
--- a/src/pulsecore/memblockq.h
+++ b/src/pulsecore/memblockq.h
@@ -165,7 +165,7 @@ void pa_memblockq_set_silence(pa_memblockq *memblockq, pa_memchunk *silence);
void pa_memblockq_apply_attr(pa_memblockq *memblockq, const pa_buffer_attr *a);
void pa_memblockq_get_attr(pa_memblockq *bq, pa_buffer_attr *a);
-/* Call pa_memchunk_willneed() for every chunk in the queue from the current read pointer to the end */
+/* Call pa_memchunk_will_need() for every chunk in the queue from the current read pointer to the end */
void pa_memblockq_willneed(pa_memblockq *bq);
/* Check whether the memblockq is completely empty, i.e. no data
--
hooks/post-receive
PulseAudio Sound Server
More information about the pulseaudio-commits
mailing list