mirror of
https://gitlab.freedesktop.org/pulseaudio/pulseaudio.git
synced 2025-11-11 13:30:02 -05:00
Merge branch 'master' into dbus-work
This commit is contained in:
commit
c266595058
12 changed files with 155 additions and 86 deletions
|
|
@ -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"); */
|
||||
|
|
|
|||
|
|
@ -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"))) {
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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>
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue