[ create a new paste ] login | about

Link: http://codepad.org/a40dMZZ1    [ raw code | fork ]

eigar - C, pasted on Feb 3:
/* TOP */
#include "osdep/timer.h"

...
...


/** Destroy libao driver */
static void uninit(int immed) {
	size_t play_space;
	int delay_sleep;
	char *buf = NULL;

	if (stream && !immed) {
		/* space available in PA play buffer */
		play_space = get_space();
		/* note: get_delay() changes after play(),
		 * but we want post play() */
		delay_sleep = get_delay() * 1000 * 1000;

		/* fill play space with empty/zero-filled buffer */
		if (play_space > 0 && (buf = malloc(play_space)) != NULL) {
			memset(buf, 0, play_space);
			play(buf, play_space, 0);
			/* play uses NULL for free_cb so a local copy is
			* created by PA. free() is OK here.
			* */
			free(buf);
		}

		/* sleep actual time, (excluding play of empty buffer) */
		usec_sleep(delay_sleep);
		/*
		* Have noticed in some occasions that track can hang on
		* pa_stream_drain, even after play + sleep.
		* As everything now _should_ have been delivered by server
		* reset() won't cut audio.
		* */
		reset();

		/* Now; is this needed after reset() ? */
		pa_threaded_mainloop_lock(mainloop);
		waitop(pa_stream_drain(stream, success_cb, NULL));
	}

    if (mainloop)
		...
	...
...
}


Create a new paste based on this one


Comments: