Pierre Ossman
0ef2d7eb77
Support reversed endian floats. ( closes #28 ) ( closes #35 )
...
git-svn-id: file:///home/lennart/svn/public/pulseaudio/trunk@1412 fefdeb5f-60dc-0310-8127-8f9354f1896f
2006-11-08 13:03:35 +00:00
Pierre Ossman
55c25c657e
Check correct variable for return value. Closes #37 .
...
git-svn-id: file:///home/lennart/svn/public/pulseaudio/trunk@1411 fefdeb5f-60dc-0310-8127-8f9354f1896f
2006-11-08 12:56:26 +00:00
Pierre Ossman
8dc6214276
Revert r1404 and keep it on a development branch until it is fully tested.
...
git-svn-id: file:///home/lennart/svn/public/pulseaudio/trunk@1409 fefdeb5f-60dc-0310-8127-8f9354f1896f
2006-11-06 13:06:01 +00:00
Lennart Poettering
d210ebbb09
rework memory block management to be thread-safe and mostly lock-free.
...
pa_memblock is now an opaque structure. Access to its fields is now done
through various accessor functions in a thread-safe manner.
pa_memblock_acquire() and pa_memblock_release() are now used to access the
attached audio data. Why? To allow safe manipulation of the memory pointer
maintained by the memory block. Internally _acquire() and _release() maintain a
reference counter. Please do not confuse this reference counter whith the one
maintained by pa_memblock_ref()/_unref()!
As a side effect this patch removes all direct usages of AO_t and replaces it
with pa_atomic_xxx based code.
This stuff needs some serious testing love. Especially if threads are actively
used.
git-svn-id: file:///home/lennart/svn/public/pulseaudio/trunk@1404 fefdeb5f-60dc-0310-8127-8f9354f1896f
2006-09-26 23:50:56 +00:00
Lennart Poettering
5ad143b3ab
upgrade refcnt.h to make use of our new pa_atomic_xxx() API
...
git-svn-id: file:///home/lennart/svn/public/pulseaudio/trunk@1403 fefdeb5f-60dc-0310-8127-8f9354f1896f
2006-09-26 23:42:08 +00:00
Lennart Poettering
736de36f68
add asynchronous inter-thread notification API
...
git-svn-id: file:///home/lennart/svn/public/pulseaudio/trunk@1402 fefdeb5f-60dc-0310-8127-8f9354f1896f
2006-09-26 23:41:20 +00:00
Pierre Ossman
772645922a
Fix up build structure for platform dependent modules. Also add implementation
...
on Win32 for pa_once().
git-svn-id: file:///home/lennart/svn/public/pulseaudio/trunk@1395 fefdeb5f-60dc-0310-8127-8f9354f1896f
2006-09-11 07:56:03 +00:00
Lennart Poettering
0e96d8b7bc
make pa_mutex_new() and pa_cond_new() succeed in all cases. Similar behaviour to pa_xmalloc().
...
git-svn-id: file:///home/lennart/svn/public/pulseaudio/trunk@1389 fefdeb5f-60dc-0310-8127-8f9354f1896f
2006-09-09 23:55:58 +00:00
Lennart Poettering
d0dcde060b
rework pa_once once again, because the once function needs to have terminated before pa_once returns, regardless whether the local call executes it or another thread does.
...
With the previous code it might happen that an long-running initializing in a once function is not terminated yet when another thread thinks it already is.
git-svn-id: file:///home/lennart/svn/public/pulseaudio/trunk@1387 fefdeb5f-60dc-0310-8127-8f9354f1896f
2006-09-09 23:54:19 +00:00
Lennart Poettering
6d532029ea
update for newer APIs: replace direct usage of libatomic_ops by usage of our own atomic.h; remove pa_once implementation; always use our pa_once implementation instead of the POSIX version
...
git-svn-id: file:///home/lennart/svn/public/pulseaudio/trunk@1386 fefdeb5f-60dc-0310-8127-8f9354f1896f
2006-09-09 22:59:17 +00:00
Lennart Poettering
3426a399cc
implement trival pa_once API based on atomic operations
...
git-svn-id: file:///home/lennart/svn/public/pulseaudio/trunk@1385 fefdeb5f-60dc-0310-8127-8f9354f1896f
2006-09-09 22:55:51 +00:00
Lennart Poettering
c89cb6a00f
add static initializer PA_ATOMIC_INIT()
...
git-svn-id: file:///home/lennart/svn/public/pulseaudio/trunk@1384 fefdeb5f-60dc-0310-8127-8f9354f1896f
2006-09-09 22:54:11 +00:00
Lennart Poettering
ee40a3439f
implement a simple lock-free free list
...
git-svn-id: file:///home/lennart/svn/public/pulseaudio/trunk@1382 fefdeb5f-60dc-0310-8127-8f9354f1896f
2006-09-09 21:05:31 +00:00
Lennart Poettering
bfaa358458
add a tiny wrapper around libatomic_ops: pa_atomic_int_t and pa_atomit_ptr_t.
...
Reasoning:
This wrapper fixes a few API issues I found with atomic_ops:
* AO_t is an int, which can be written to with "=". pa_tomic_int_t however is
a struct which due to type-safety enforces proper access with
pa_atomic_xx(). (Inspired by the way the Linux kernel handles this)
* AO_load()'s parameter is lacking a "const"
* Explicitly choosing the proper memory barrier for each call is very
difficult and especially hard to debug because most CPUs support only two
different barrier types which the eight types defined by atomic_ops are
mapped to. Most other software (i.e. glib, Linux kernel) which provides
atomic variable access usually do a full barrier in all cases and so should
we. Eventually we might choose to add additional memory barrier calls, in
which case we can add special versions of the current function with special
suffixes.
* The function names are unnecesarily long
* Atomic pointer accesses are only supported with manual casts.
The new pa_atomic_xxx interface borrows heavily from the GLib and Linux kernel
atomicity API, though it is different from both of them.
In addition this abstract API makes it easy to port PA to different atomicty
APIs, if libatomic_ops should ever become out-of-fashion or if the system OS
supports atomic primitives anyway.
git-svn-id: file:///home/lennart/svn/public/pulseaudio/trunk@1381 fefdeb5f-60dc-0310-8127-8f9354f1896f
2006-09-08 15:43:44 +00:00
Lennart Poettering
791bbd8e0e
don't maintain a list of allocated mempool slots, we don't use it anyway
...
git-svn-id: file:///home/lennart/svn/public/pulseaudio/trunk@1380 fefdeb5f-60dc-0310-8127-8f9354f1896f
2006-09-07 20:17:25 +00:00
Lennart Poettering
1728e3ac98
make pa_stream thread-safe: use new refcounting system, protect access using mutexes
...
git-svn-id: file:///home/lennart/svn/public/pulseaudio/trunk@1379 fefdeb5f-60dc-0310-8127-8f9354f1896f
2006-09-07 19:08:19 +00:00
Lennart Poettering
ead67cda48
fix indentation
...
git-svn-id: file:///home/lennart/svn/public/pulseaudio/trunk@1375 fefdeb5f-60dc-0310-8127-8f9354f1896f
2006-09-06 22:19:11 +00:00
Lennart Poettering
6bbfb43f2a
add accessor functions for the userdata attached to a pa_thread object
...
git-svn-id: file:///home/lennart/svn/public/pulseaudio/trunk@1371 fefdeb5f-60dc-0310-8127-8f9354f1896f
2006-09-04 22:15:15 +00:00
Lennart Poettering
3be920d9ae
fix pa_thread_is_running() for foreign threads; fix a memory leak for foreign threads
...
git-svn-id: file:///home/lennart/svn/public/pulseaudio/trunk@1370 fefdeb5f-60dc-0310-8127-8f9354f1896f
2006-09-04 22:04:33 +00:00
Lennart Poettering
8e7c2a3b0c
make pa_thread_self() return a sensible pointer on foreign threads
...
git-svn-id: file:///home/lennart/svn/public/pulseaudio/trunk@1368 fefdeb5f-60dc-0310-8127-8f9354f1896f
2006-09-04 21:28:34 +00:00
Pierre Ossman
647ef180c3
Fix call to pa_mutex_new().
...
git-svn-id: file:///home/lennart/svn/public/pulseaudio/trunk@1358 fefdeb5f-60dc-0310-8127-8f9354f1896f
2006-09-01 19:06:44 +00:00
Pierre Ossman
f84c65ed86
Add pthread_once() equivalent support.
...
git-svn-id: file:///home/lennart/svn/public/pulseaudio/trunk@1357 fefdeb5f-60dc-0310-8127-8f9354f1896f
2006-09-01 18:39:55 +00:00
Pierre Ossman
3571bf1699
Thread implementation for Win32.
...
git-svn-id: file:///home/lennart/svn/public/pulseaudio/trunk@1356 fefdeb5f-60dc-0310-8127-8f9354f1896f
2006-09-01 18:16:55 +00:00
Pierre Ossman
6e9706bcbc
Also wrap yield functionality so that it can be platform independent.
...
git-svn-id: file:///home/lennart/svn/public/pulseaudio/trunk@1353 fefdeb5f-60dc-0310-8127-8f9354f1896f
2006-08-31 16:13:07 +00:00
Lennart Poettering
aee4a3738e
define AO_REQUIRE_CAS in the Makefile instead of each source file, effectively reversing r1348
...
git-svn-id: file:///home/lennart/svn/public/pulseaudio/trunk@1351 fefdeb5f-60dc-0310-8127-8f9354f1896f
2006-08-31 15:20:43 +00:00
Lennart Poettering
2f6cc4f8fa
fix handling of "running" variable
...
git-svn-id: file:///home/lennart/svn/public/pulseaudio/trunk@1349 fefdeb5f-60dc-0310-8127-8f9354f1896f
2006-08-30 17:12:35 +00:00
Pierre Ossman
ad0535beef
Add AO_REQUIRE_CAS as we do.
...
git-svn-id: file:///home/lennart/svn/public/pulseaudio/trunk@1348 fefdeb5f-60dc-0310-8127-8f9354f1896f
2006-08-30 17:01:10 +00:00
Lennart Poettering
b2c341f935
add a threading primitive API
...
git-svn-id: file:///home/lennart/svn/public/pulseaudio/trunk@1344 fefdeb5f-60dc-0310-8127-8f9354f1896f
2006-08-29 19:51:14 +00:00
Lennart Poettering
5264d235d2
make pa_mempool_stat thread-safe/lock-free
...
git-svn-id: file:///home/lennart/svn/public/pulseaudio/trunk@1343 fefdeb5f-60dc-0310-8127-8f9354f1896f
2006-08-29 02:01:39 +00:00
Lennart Poettering
327e0cd8e1
modify memory block reference counting to use the new reference counting API
...
git-svn-id: file:///home/lennart/svn/public/pulseaudio/trunk@1342 fefdeb5f-60dc-0310-8127-8f9354f1896f
2006-08-29 01:16:47 +00:00
Lennart Poettering
9948cb09a3
add lock-free reference counting macros, based on libatomic-ops
...
git-svn-id: file:///home/lennart/svn/public/pulseaudio/trunk@1341 fefdeb5f-60dc-0310-8127-8f9354f1896f
2006-08-29 01:15:51 +00:00
Lennart Poettering
a633944820
fix an misdesigned assert()
...
git-svn-id: file:///home/lennart/svn/public/pulseaudio/trunk@1339 fefdeb5f-60dc-0310-8127-8f9354f1896f
2006-08-28 19:16:00 +00:00
Pierre Ossman
2575b44637
fix typo
...
git-svn-id: file:///home/lennart/svn/public/pulseaudio/trunk@1328 fefdeb5f-60dc-0310-8127-8f9354f1896f
2006-08-23 07:58:07 +00:00
Pierre Ossman
7bf2540778
Fall back to creating a "normal" memory pool if unable to get a shared one.
...
git-svn-id: file:///home/lennart/svn/public/pulseaudio/trunk@1321 fefdeb5f-60dc-0310-8127-8f9354f1896f
2006-08-22 12:51:29 +00:00
Pierre Ossman
26bfce6281
Improve error messages a bit.
...
git-svn-id: file:///home/lennart/svn/public/pulseaudio/trunk@1320 fefdeb5f-60dc-0310-8127-8f9354f1896f
2006-08-22 12:46:05 +00:00
Pierre Ossman
cf7b401ac6
Fix up portability of memory pool handling a bit.
...
git-svn-id: file:///home/lennart/svn/public/pulseaudio/trunk@1319 fefdeb5f-60dc-0310-8127-8f9354f1896f
2006-08-22 12:45:43 +00:00
Pierre Ossman
10bbc4b7c9
Fix detection of shared memory support and proper fallback.
...
git-svn-id: file:///home/lennart/svn/public/pulseaudio/trunk@1316 fefdeb5f-60dc-0310-8127-8f9354f1896f
2006-08-22 11:41:14 +00:00
Pierre Ossman
d964459a64
Fix detection of page size for non-POSIX systems.
...
git-svn-id: file:///home/lennart/svn/public/pulseaudio/trunk@1312 fefdeb5f-60dc-0310-8127-8f9354f1896f
2006-08-22 07:41:23 +00:00
Lennart Poettering
bffde5da05
If a client leaves the sink/source for a stream unspecified by passing NULL as
...
sink/source name sink/source we should pass NULL to
pa_sink_input_new()/pa_source_output_new() as too. This allows
hooks to change the sink/source device only if it is left unspecified by the client
git-svn-id: file:///home/lennart/svn/public/pulseaudio/trunk@1303 fefdeb5f-60dc-0310-8127-8f9354f1896f
2006-08-19 23:06:45 +00:00
Lennart Poettering
bf62e77f71
fix a bad memory access
...
git-svn-id: file:///home/lennart/svn/public/pulseaudio/trunk@1302 fefdeb5f-60dc-0310-8127-8f9354f1896f
2006-08-19 23:04:04 +00:00
Lennart Poettering
c0b3e8b346
when transferring large memory chunks of a pa_pstream, split them up
...
git-svn-id: file:///home/lennart/svn/public/pulseaudio/trunk@1300 fefdeb5f-60dc-0310-8127-8f9354f1896f
2006-08-19 18:57:33 +00:00
Lennart Poettering
3e0f00f93d
if MAP_ANONYMOUS is not supported use posix_memalign if possible to allocate the memory pool
...
git-svn-id: file:///home/lennart/svn/public/pulseaudio/trunk@1296 fefdeb5f-60dc-0310-8127-8f9354f1896f
2006-08-19 17:27:27 +00:00
Lennart Poettering
c6ca9a85c3
print per-type memory block statistics on "stat"
...
git-svn-id: file:///home/lennart/svn/public/pulseaudio/trunk@1294 fefdeb5f-60dc-0310-8127-8f9354f1896f
2006-08-19 16:25:41 +00:00
Lennart Poettering
57f0b08cc1
generate per-type memory block statistics
...
git-svn-id: file:///home/lennart/svn/public/pulseaudio/trunk@1293 fefdeb5f-60dc-0310-8127-8f9354f1896f
2006-08-19 16:25:15 +00:00
Lennart Poettering
af87c7d21b
rework the resample to allocate temporary memory with pa_memblock_new() instead of pa_xrealloc()
...
git-svn-id: file:///home/lennart/svn/public/pulseaudio/trunk@1291 fefdeb5f-60dc-0310-8127-8f9354f1896f
2006-08-19 02:23:52 +00:00
Lennart Poettering
206ac6f3ee
allow importing of external shm data blocks unconditionally, even when local SHM support is disabled
...
git-svn-id: file:///home/lennart/svn/public/pulseaudio/trunk@1283 fefdeb5f-60dc-0310-8127-8f9354f1896f
2006-08-19 01:16:38 +00:00
Lennart Poettering
046bdd9b30
deal properly with pa_mempool_new() failing
...
git-svn-id: file:///home/lennart/svn/public/pulseaudio/trunk@1282 fefdeb5f-60dc-0310-8127-8f9354f1896f
2006-08-19 01:15:48 +00:00
Lennart Poettering
8c9bdb838c
fix allocation of anonymous memory
...
git-svn-id: file:///home/lennart/svn/public/pulseaudio/trunk@1281 fefdeb5f-60dc-0310-8127-8f9354f1896f
2006-08-19 01:15:22 +00:00
Lennart Poettering
c2db5f8864
fix a memory leak
...
git-svn-id: file:///home/lennart/svn/public/pulseaudio/trunk@1280 fefdeb5f-60dc-0310-8127-8f9354f1896f
2006-08-19 01:14:59 +00:00
Lennart Poettering
e33abc3089
activate SHM support on the server side only when new client supports it and when client and server have the same UID.
...
git-svn-id: file:///home/lennart/svn/public/pulseaudio/trunk@1277 fefdeb5f-60dc-0310-8127-8f9354f1896f
2006-08-18 23:44:35 +00:00