Commit graph

1432 commits

Author SHA1 Message Date
Lennart Poettering
b93fedd49c add a test program for the free list
git-svn-id: file:///home/lennart/svn/public/pulseaudio/trunk@1383 fefdeb5f-60dc-0310-8127-8f9354f1896f
2006-09-09 21:09:55 +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
0669c99fb6 add missing channel names (fixes a segfault when parsing invalid channel maps)
git-svn-id: file:///home/lennart/svn/public/pulseaudio/trunk@1378 fefdeb5f-60dc-0310-8127-8f9354f1896f
2006-09-07 13:31:53 +00:00
Lennart Poettering
40f18d97f6 fix alsa-sink example
git-svn-id: file:///home/lennart/svn/public/pulseaudio/trunk@1377 fefdeb5f-60dc-0310-8127-8f9354f1896f
2006-09-07 13:29:59 +00:00
Lennart Poettering
40ecf869d0 don't hit an assert in the client if posix shm is not available
git-svn-id: file:///home/lennart/svn/public/pulseaudio/trunk@1376 fefdeb5f-60dc-0310-8127-8f9354f1896f
2006-09-06 22:19:54 +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
66ec460845 fix a bogus debug line
git-svn-id: file:///home/lennart/svn/public/pulseaudio/trunk@1374 fefdeb5f-60dc-0310-8127-8f9354f1896f
2006-09-06 21:37:09 +00:00
Lennart Poettering
6569199778 implement a few more ioctl()s, including a subset of SNDCTL_DSP_GETOPTR. Just enough to make JavaSound work.
git-svn-id: file:///home/lennart/svn/public/pulseaudio/trunk@1373 fefdeb5f-60dc-0310-8127-8f9354f1896f
2006-09-06 19:47:53 +00:00
Lennart Poettering
e00ba020cb remove yet another occurence of pthread_yield() by pa_thread_yield()
git-svn-id: file:///home/lennart/svn/public/pulseaudio/trunk@1372 fefdeb5f-60dc-0310-8127-8f9354f1896f
2006-09-04 22:38:41 +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
813e95f3b8 port the threaded mainloop to our new abstract mutex/thread API
git-svn-id: file:///home/lennart/svn/public/pulseaudio/trunk@1369 fefdeb5f-60dc-0310-8127-8f9354f1896f
2006-09-04 21:29:17 +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
Lennart Poettering
6db6c835ec add missing g_type_init()
git-svn-id: file:///home/lennart/svn/public/pulseaudio/trunk@1367 fefdeb5f-60dc-0310-8127-8f9354f1896f
2006-09-02 15:18:56 +00:00
Lennart Poettering
2536ba9279 rework handling of srcdir != builddir (patch from Flameeyes)
git-svn-id: file:///home/lennart/svn/public/pulseaudio/trunk@1366 fefdeb5f-60dc-0310-8127-8f9354f1896f
2006-09-02 14:59:12 +00:00
Lennart Poettering
e504e807ce include PTRHEAD_LIBS in pkg-config file (patch from Flameeyes)
git-svn-id: file:///home/lennart/svn/public/pulseaudio/trunk@1365 fefdeb5f-60dc-0310-8127-8f9354f1896f
2006-09-02 14:57:50 +00:00
Lennart Poettering
b01fabff65 update acx_pthread.m4
git-svn-id: file:///home/lennart/svn/public/pulseaudio/trunk@1364 fefdeb5f-60dc-0310-8127-8f9354f1896f
2006-09-02 14:56:41 +00:00
Lennart Poettering
6528b6b19e allow building when srcdir != builddir (patch from Flameeyes)
git-svn-id: file:///home/lennart/svn/public/pulseaudio/trunk@1363 fefdeb5f-60dc-0310-8127-8f9354f1896f
2006-09-02 12:51:44 +00:00
Lennart Poettering
a00c3cb9af fix a few autoconf warnings (patch by Flameeyes)
git-svn-id: file:///home/lennart/svn/public/pulseaudio/trunk@1362 fefdeb5f-60dc-0310-8127-8f9354f1896f
2006-09-02 12:45:53 +00:00
Lennart Poettering
11b6c451b8 fix esdcompat for non-gnu systems
git-svn-id: file:///home/lennart/svn/public/pulseaudio/trunk@1361 fefdeb5f-60dc-0310-8127-8f9354f1896f
2006-09-02 12:28:40 +00:00
Lennart Poettering
161c2c0c45 make esdcompat executable
git-svn-id: file:///home/lennart/svn/public/pulseaudio/trunk@1360 fefdeb5f-60dc-0310-8127-8f9354f1896f
2006-09-02 12:28:17 +00:00
Lennart Poettering
5fa9cdb6b4 Merge FreeBSD compatibility patch (from Flameeyes)
git-svn-id: file:///home/lennart/svn/public/pulseaudio/trunk@1359 fefdeb5f-60dc-0310-8127-8f9354f1896f
2006-09-02 12:03:18 +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
Lennart Poettering
97202d1b2d fix a race condition with stream connection vs. latency measuremtn (found by theBear)
git-svn-id: file:///home/lennart/svn/public/pulseaudio/trunk@1355 fefdeb5f-60dc-0310-8127-8f9354f1896f
2006-09-01 00:24:32 +00:00
Pierre Ossman
6e3de3dbe5 Make sure libatomic_ops.a isn't included in win32 builds as libtool doesn't
like static libs in dlls. Everything is in the headers anyway, so we do not
need it.


git-svn-id: file:///home/lennart/svn/public/pulseaudio/trunk@1354 fefdeb5f-60dc-0310-8127-8f9354f1896f
2006-08-31 16:39:53 +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
0f6098bf64 work around bug in firefox which apparently misuses access() as NULL pointer test. Original patch by "alon". (Closes #27)
git-svn-id: file:///home/lennart/svn/public/pulseaudio/trunk@1352 fefdeb5f-60dc-0310-8127-8f9354f1896f
2006-08-31 15:31:33 +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
7ce39d35c6 update todo
git-svn-id: file:///home/lennart/svn/public/pulseaudio/trunk@1350 fefdeb5f-60dc-0310-8127-8f9354f1896f
2006-08-31 15:17:40 +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
Pierre Ossman
a6b99d5196 Make sure the libatomic_ops lib is included.
git-svn-id: file:///home/lennart/svn/public/pulseaudio/trunk@1347 fefdeb5f-60dc-0310-8127-8f9354f1896f
2006-08-30 16:55:37 +00:00
Pierre Ossman
c4e47c63b7 Remove check for libatomic_ops library as some systems have no (zero, nada)
symbols in it.


git-svn-id: file:///home/lennart/svn/public/pulseaudio/trunk@1346 fefdeb5f-60dc-0310-8127-8f9354f1896f
2006-08-30 14:44:15 +00:00
Pierre Ossman
078420a9d2 We need to have a callback when changing volume or we might deadlock.
git-svn-id: file:///home/lennart/svn/public/pulseaudio/trunk@1345 fefdeb5f-60dc-0310-8127-8f9354f1896f
2006-08-30 13:02:29 +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
91d8025823 add libatomic-ops to hard dependencies
git-svn-id: file:///home/lennart/svn/public/pulseaudio/trunk@1340 fefdeb5f-60dc-0310-8127-8f9354f1896f
2006-08-29 01:15:09 +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
5ecbd9edee Add PulseAudio logo to tree.
git-svn-id: file:///home/lennart/svn/public/pulseaudio/trunk@1338 fefdeb5f-60dc-0310-8127-8f9354f1896f
2006-08-28 06:25:41 +00:00
Pierre Ossman
cd4767305c update todo
git-svn-id: file:///home/lennart/svn/public/pulseaudio/trunk@1337 fefdeb5f-60dc-0310-8127-8f9354f1896f
2006-08-28 05:15:46 +00:00
Lennart Poettering
1ed33478e5 increase operation timeout
git-svn-id: file:///home/lennart/svn/public/pulseaudio/trunk@1336 fefdeb5f-60dc-0310-8127-8f9354f1896f
2006-08-27 13:04:56 +00:00
Lennart Poettering
bc87a5869d bump version and sonames
git-svn-id: file:///home/lennart/svn/public/pulseaudio/trunk@1334 fefdeb5f-60dc-0310-8127-8f9354f1896f
2006-08-26 19:22:14 +00:00
Lennart Poettering
b8ea488b76 fix module-combine when used on top of a tunnel sink
git-svn-id: file:///home/lennart/svn/public/pulseaudio/trunk@1333 fefdeb5f-60dc-0310-8127-8f9354f1896f
2006-08-26 19:00:22 +00:00