Skip to content

Commit

Permalink
Add pulseaudio-14.0 headers
Browse files Browse the repository at this point in the history
  • Loading branch information
fepitre committed Dec 2, 2020
1 parent f0f7d06 commit 1a5df71
Show file tree
Hide file tree
Showing 134 changed files with 11,701 additions and 2 deletions.
2 changes: 1 addition & 1 deletion archlinux/PKGBUILD
Original file line number Diff line number Diff line change
Expand Up @@ -71,7 +71,7 @@ install -D $srcdir/PKGBUILD-z-qubes-session.sh $pkgdir/etc/X11/xinit/xinitrc.d/z
package_qubes-vm-pulseaudio() {
pkgdesc="Pulseaudio support for Qubes VM"
depends=( 'alsa-lib' 'alsa-utils' 'pulseaudio-alsa' 'pulseaudio<14.0')
depends=('alsa-lib' 'alsa-utils' 'pulseaudio-alsa' 'pulseaudio<14.1')
install=PKGBUILD-pulseaudio.install
pa_ver=$((pkg-config --modversion libpulse 2>/dev/null || echo 0.0) | cut -f 1 -d "-")
Expand Down
21 changes: 21 additions & 0 deletions pulse/pulsecore-14.0/arpa-inet.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
#ifndef fooarpa_inethfoo
#define fooarpa_inethfoo

#if defined(HAVE_ARPA_INET_H)

#include <arpa/inet.h>

#elif defined(OS_IS_WIN32)

/* On Windows winsock2.h (here included via pulsecore/socket.h) provides most of the functionality of arpa/inet.h, except for
* the inet_ntop and inet_pton functions, which are implemented here. */

#include <pulsecore/socket.h>

const char *inet_ntop(int af, const void *src, char *dst, socklen_t cnt);

int inet_pton(int af, const char *src, void *dst);

#endif

#endif
81 changes: 81 additions & 0 deletions pulse/pulsecore-14.0/asyncmsgq.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,81 @@
#ifndef foopulseasyncmsgqhfoo
#define foopulseasyncmsgqhfoo

/***
This file is part of PulseAudio.
Copyright 2004-2006 Lennart Poettering
PulseAudio is free software; you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as
published by the Free Software Foundation; either version 2.1 of the
License, or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with PulseAudio; if not, see <http://www.gnu.org/licenses/>.
***/

#include <sys/types.h>

#include <pulsecore/asyncq.h>
#include <pulsecore/memchunk.h>
#include <pulsecore/msgobject.h>

/* A simple asynchronous message queue, based on pa_asyncq. In
* contrast to pa_asyncq this one is multiple-writer safe, though
* still not multiple-reader safe. This queue is intended to be used
* for controlling real-time threads from normal-priority
* threads. Multiple-writer-safety is accomplished by using a mutex on
* the writer side. This queue is thus not useful for communication
* between several real-time threads.
*
* The queue takes messages consisting of:
* "Object" for which this messages is intended (may be NULL)
* A numeric message code
* Arbitrary userdata pointer (may be NULL)
* A memchunk (may be NULL)
*
* There are two functions for submitting messages: _post and
* _send. The former just enqueues the message asynchronously, the
* latter waits for completion, synchronously. */

enum {
PA_MESSAGE_SHUTDOWN = -1/* A generic message to inform the handler of this queue to quit */
};

typedef struct pa_asyncmsgq pa_asyncmsgq;

pa_asyncmsgq* pa_asyncmsgq_new(unsigned size);
pa_asyncmsgq* pa_asyncmsgq_ref(pa_asyncmsgq *q);

void pa_asyncmsgq_unref(pa_asyncmsgq* q);

void pa_asyncmsgq_post(pa_asyncmsgq *q, pa_msgobject *object, int code, const void *userdata, int64_t offset, const pa_memchunk *memchunk, pa_free_cb_t userdata_free_cb);
int pa_asyncmsgq_send(pa_asyncmsgq *q, pa_msgobject *object, int code, const void *userdata, int64_t offset, const pa_memchunk *memchunk);

int pa_asyncmsgq_get(pa_asyncmsgq *q, pa_msgobject **object, int *code, void **userdata, int64_t *offset, pa_memchunk *memchunk, bool wait);
int pa_asyncmsgq_dispatch(pa_msgobject *object, int code, void *userdata, int64_t offset, pa_memchunk *memchunk);
void pa_asyncmsgq_done(pa_asyncmsgq *q, int ret);
int pa_asyncmsgq_wait_for(pa_asyncmsgq *a, int code);
int pa_asyncmsgq_process_one(pa_asyncmsgq *a);

void pa_asyncmsgq_flush(pa_asyncmsgq *a, bool run);

/* For the reading side */
int pa_asyncmsgq_read_fd(pa_asyncmsgq *q);
int pa_asyncmsgq_read_before_poll(pa_asyncmsgq *a);
void pa_asyncmsgq_read_after_poll(pa_asyncmsgq *a);

/* For the write side */
int pa_asyncmsgq_write_fd(pa_asyncmsgq *q);
void pa_asyncmsgq_write_before_poll(pa_asyncmsgq *a);
void pa_asyncmsgq_write_after_poll(pa_asyncmsgq *a);

bool pa_asyncmsgq_dispatching(pa_asyncmsgq *a);

#endif
64 changes: 64 additions & 0 deletions pulse/pulsecore-14.0/asyncq.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
#ifndef foopulseasyncqhfoo
#define foopulseasyncqhfoo

/***
This file is part of PulseAudio.
Copyright 2004-2006 Lennart Poettering
PulseAudio is free software; you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as
published by the Free Software Foundation; either version 2.1 of the
License, or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with PulseAudio; if not, see <http://www.gnu.org/licenses/>.
***/

#include <sys/types.h>
#include <pulse/def.h>
#include <pulsecore/macro.h>

/* A simple, asynchronous, lock-free (if requested also wait-free)
* queue. Not multiple-reader/multiple-writer safe. If that is
* required both sides can be protected by a mutex each. --- Which is
* not a bad thing in most cases, since this queue is intended for
* communication between a normal thread and a single real-time
* thread. Only the real-time side needs to be lock-free/wait-free.
*
* If the queue is full and another entry shall be pushed, or when the
* queue is empty and another entry shall be popped and the "wait"
* argument is non-zero, the queue will block on a UNIX FIFO object --
* that will probably require locking on the kernel side -- which
* however is probably not problematic, because we do it only on
* starvation or overload in which case we have to block anyway. */

typedef struct pa_asyncq pa_asyncq;

pa_asyncq* pa_asyncq_new(unsigned size);
void pa_asyncq_free(pa_asyncq* q, pa_free_cb_t free_cb);

void* pa_asyncq_pop(pa_asyncq *q, bool wait);
int pa_asyncq_push(pa_asyncq *q, void *p, bool wait);

/* 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 */
int pa_asyncq_read_fd(pa_asyncq *q);
int pa_asyncq_read_before_poll(pa_asyncq *a);
void pa_asyncq_read_after_poll(pa_asyncq *a);

/* For the writing side */
int pa_asyncq_write_fd(pa_asyncq *q);
void pa_asyncq_write_before_poll(pa_asyncq *a);
void pa_asyncq_write_after_poll(pa_asyncq *a);

#endif
Loading

0 comments on commit 1a5df71

Please sign in to comment.