mirror of
https://gitlab.freedesktop.org/pulseaudio/pulseaudio.git
synced 2025-11-15 06:59:58 -05:00
* make pa_sample_spec_snprint return point to written string
* first try of a http module git-svn-id: file:///home/lennart/svn/public/pulseaudio/trunk@339 fefdeb5f-60dc-0310-8127-8f9354f1896f
This commit is contained in:
parent
32bf3a106a
commit
4590f09d0b
10 changed files with 374 additions and 18 deletions
|
|
@ -51,6 +51,8 @@ struct pa_ioline {
|
|||
|
||||
void (*callback)(struct pa_ioline*io, const char *s, void *userdata);
|
||||
void *userdata;
|
||||
|
||||
int defer_close;
|
||||
};
|
||||
|
||||
static void io_callback(struct pa_iochannel*io, void *userdata);
|
||||
|
|
@ -78,6 +80,8 @@ struct pa_ioline* pa_ioline_new(struct pa_iochannel *io) {
|
|||
|
||||
l->defer_event = l->mainloop->defer_new(l->mainloop, defer_callback, l);
|
||||
l->mainloop->defer_enable(l->defer_event, 0);
|
||||
|
||||
l->defer_close = 0;
|
||||
|
||||
pa_iochannel_set_callback(io, io_callback, l);
|
||||
|
||||
|
|
@ -181,8 +185,10 @@ static void failure(struct pa_ioline *l) {
|
|||
|
||||
pa_ioline_close(l);
|
||||
|
||||
if (l->callback)
|
||||
if (l->callback) {
|
||||
l->callback(l, NULL, l->userdata);
|
||||
l->callback = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
static void scan_for_lines(struct pa_ioline *l, size_t skip) {
|
||||
|
|
@ -309,6 +315,9 @@ static void do_work(struct pa_ioline *l) {
|
|||
if (!l->dead)
|
||||
do_read(l);
|
||||
|
||||
if (l->defer_close && !l->wbuf_valid_length)
|
||||
failure(l);
|
||||
|
||||
pa_ioline_unref(l);
|
||||
}
|
||||
|
||||
|
|
@ -325,3 +334,25 @@ static void defer_callback(struct pa_mainloop_api*m, struct pa_defer_event*e, vo
|
|||
|
||||
do_work(l);
|
||||
}
|
||||
|
||||
void pa_ioline_defer_close(struct pa_ioline *l) {
|
||||
assert(l);
|
||||
|
||||
l->defer_close = 1;
|
||||
|
||||
if (!l->wbuf_valid_length)
|
||||
l->mainloop->defer_enable(l->defer_event, 1);
|
||||
}
|
||||
|
||||
void pa_ioline_printf(struct pa_ioline *s, const char *format, ...) {
|
||||
char *t;
|
||||
va_list ap;
|
||||
|
||||
|
||||
va_start(ap, format);
|
||||
t = pa_vsprintf_malloc(format, ap);
|
||||
va_end(ap);
|
||||
|
||||
pa_ioline_puts(s, t);
|
||||
pa_xfree(t);
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue