Merge branch 'master' into dbus-work

This commit is contained in:
Tanu Kaskinen 2009-06-29 18:55:12 +03:00
commit c266595058
12 changed files with 155 additions and 86 deletions

View file

@ -131,7 +131,7 @@ void pa_asyncq_free(pa_asyncq *l, pa_free_cb_t free_cb) {
pa_xfree(l);
}
static int push(pa_asyncq*l, void *p, pa_bool_t wait) {
static int push(pa_asyncq*l, void *p, pa_bool_t wait_op) {
unsigned idx;
pa_atomic_ptr_t *cells;
@ -145,7 +145,7 @@ static int push(pa_asyncq*l, void *p, pa_bool_t wait) {
if (!pa_atomic_ptr_cmpxchg(&cells[idx], NULL, p)) {
if (!wait)
if (!wait_op)
return -1;
/* pa_log("sleeping on push"); */
@ -163,14 +163,14 @@ static int push(pa_asyncq*l, void *p, pa_bool_t wait) {
return 0;
}
static pa_bool_t flush_postq(pa_asyncq *l, pa_bool_t wait) {
static pa_bool_t flush_postq(pa_asyncq *l, pa_bool_t wait_op) {
struct localq *q;
pa_assert(l);
while ((q = l->last_localq)) {
if (push(l, q->data, wait) < 0)
if (push(l, q->data, wait_op) < 0)
return FALSE;
l->last_localq = q->prev;
@ -184,13 +184,13 @@ static pa_bool_t flush_postq(pa_asyncq *l, pa_bool_t wait) {
return TRUE;
}
int pa_asyncq_push(pa_asyncq*l, void *p, pa_bool_t wait) {
int pa_asyncq_push(pa_asyncq*l, void *p, pa_bool_t wait_op) {
pa_assert(l);
if (!flush_postq(l, wait))
if (!flush_postq(l, wait_op))
return -1;
return push(l, p, wait);
return push(l, p, wait_op);
}
void pa_asyncq_post(pa_asyncq*l, void *p) {
@ -221,7 +221,7 @@ void pa_asyncq_post(pa_asyncq*l, void *p) {
return;
}
void* pa_asyncq_pop(pa_asyncq*l, pa_bool_t wait) {
void* pa_asyncq_pop(pa_asyncq*l, pa_bool_t wait_op) {
unsigned idx;
void *ret;
pa_atomic_ptr_t *cells;
@ -235,7 +235,7 @@ void* pa_asyncq_pop(pa_asyncq*l, pa_bool_t wait) {
if (!(ret = pa_atomic_ptr_load(&cells[idx]))) {
if (!wait)
if (!wait_op)
return NULL;
/* pa_log("sleeping on pop"); */

View file

@ -43,6 +43,7 @@
#include <regex.h>
#include <langinfo.h>
#include <sys/utsname.h>
#include <sys/socket.h>
#ifdef HAVE_STRTOF_L
#include <locale.h>
@ -1193,22 +1194,22 @@ int pa_check_in_group(gid_t g) {
(advisory on UNIX, mandatory on Windows) */
int pa_lock_fd(int fd, int b) {
#ifdef F_SETLKW
struct flock flock;
struct flock f_lock;
/* Try a R/W lock first */
flock.l_type = (short) (b ? F_WRLCK : F_UNLCK);
flock.l_whence = SEEK_SET;
flock.l_start = 0;
flock.l_len = 0;
f_lock.l_type = (short) (b ? F_WRLCK : F_UNLCK);
f_lock.l_whence = SEEK_SET;
f_lock.l_start = 0;
f_lock.l_len = 0;
if (fcntl(fd, F_SETLKW, &flock) >= 0)
if (fcntl(fd, F_SETLKW, &f_lock) >= 0)
return 0;
/* Perhaps the file descriptor qas opened for read only, than try again with a read lock. */
if (b && errno == EBADF) {
flock.l_type = F_RDLCK;
if (fcntl(fd, F_SETLKW, &flock) >= 0)
f_lock.l_type = F_RDLCK;
if (fcntl(fd, F_SETLKW, &f_lock) >= 0)
return 0;
}
@ -2238,10 +2239,9 @@ int pa_close_all(int except_fd, ...) {
int pa_close_allv(const int except_fds[]) {
struct rlimit rl;
int maxfd, fd;
int saved_errno;
#ifdef __linux__
int saved_errno;
DIR *d;
if ((d = opendir("/proc/self/fd"))) {

View file

@ -220,7 +220,7 @@ static void reset_all_revents(pa_rtpoll *p) {
}
}
int pa_rtpoll_run(pa_rtpoll *p, pa_bool_t wait) {
int pa_rtpoll_run(pa_rtpoll *p, pa_bool_t wait_op) {
pa_rtpoll_item *i;
int r = 0;
struct timeval timeout;
@ -289,7 +289,7 @@ int pa_rtpoll_run(pa_rtpoll *p, pa_bool_t wait) {
memset(&timeout, 0, sizeof(timeout));
/* Calculate timeout */
if (wait && !p->quit && p->timer_enabled) {
if (wait_op && !p->quit && p->timer_enabled) {
struct timeval now;
pa_rtclock_get(&now);
@ -311,10 +311,10 @@ int pa_rtpoll_run(pa_rtpoll *p, pa_bool_t wait) {
struct timespec ts;
ts.tv_sec = timeout.tv_sec;
ts.tv_nsec = timeout.tv_usec * 1000;
r = ppoll(p->pollfd, p->n_pollfd_used, (!wait || p->quit || p->timer_enabled) ? &ts : NULL, NULL);
r = ppoll(p->pollfd, p->n_pollfd_used, (!wait_op || p->quit || p->timer_enabled) ? &ts : NULL, NULL);
}
#else
r = poll(p->pollfd, p->n_pollfd_used, (!wait || p->quit || p->timer_enabled) ? (int) ((timeout.tv_sec*1000) + (timeout.tv_usec / 1000)) : -1);
r = poll(p->pollfd, p->n_pollfd_used, (!wait_op || p->quit || p->timer_enabled) ? (int) ((timeout.tv_sec*1000) + (timeout.tv_usec / 1000)) : -1);
#endif
#ifdef DEBUG_TIMING

View file

@ -39,6 +39,11 @@
#include <sys/mman.h>
#endif
/* This is deprecated on glibc but is still used by FreeBSD */
#if !defined(MAP_ANONYMOUS) && defined(MAP_ANON)
# define MAP_ANONYMOUS MAP_ANON
#endif
#include <pulse/xmalloc.h>
#include <pulse/gccmacro.h>