Commit graph

283 commits

Author SHA1 Message Date
Lennart Poettering
52e3628c3e Yes, yet another evil all-in-one commit of intervowen changes. I suck.
* Drop "state" directory, fold that into "runtime directory"
* No longer automatically rewind when a new stream connects
* Rework sound file stream, to cause a rewind on initialisation, shorten _pop() code a bit
* Fix reference counting of pa_socket_server in the protocol implementations
* Rework daemon initialization code to be compatible with non-SUID-root setups where RLIMIT_RTPRIO is non-zero
* Print warning if RT/HP is enabled in the config, but due to missing caps, rlimits, policy we cannot enable it.
* Fix potential memory leak in pa_open_config_file()
* Add pa_find_config_file() which works much like pa_open_config_file() but doesn't actually open the config file in question. Just searches for it.
* Add portable pa_is_path_absolute()
* Add pa_close_all() and use it on daemon startup to close leaking file descriptors (inspired from what I did for libdaemon)
* Add pa_unblock_sigs() and use it on daemon startup to unblock all signals (inspired from libdaemon, too)
* Add pa_reset_sigs() and use it on daemon startup to reset all signal handlers (inspired from libdaemon as well)
* Implement pa_set_env()
* Define RLIMIT_RTTIME and friends if not defined by glibc
* Add pa_strempty()
* rename state testing macros to include _IS_, to make clearer that they are no states, but testing macros
* Implement pa_source_output_set_requested_latency_within_thread() to be able to forward latency info to sources from within the IO thread
* Similar for sink inputs
* generelize since_underrun counter in sink inputs to "playing_for" and "underrun_for". Use only this for ignore potential rewind requests over underruns
* Add new native protocol message PLAYBACK_STREAM_MESSAGE_STARTED for notification about the end of an underrun
* Port native protocol to use underrun_for/playing_for which is maintained by the sink input anyway
* Pass underrun_for/playing_for in timing info to client
* Drop pa_sink_skip() since it breaks underrun detection code
* Move PID file and unix sockets to the runtime dir (i.e. ~/.pulse). This fixes a potention DoS attack from other users stealing dirs in /tmp from us so that we cannot take them anymore)
* Allow setting of more resource limits from the config file. Set RTTIME by default
* Streamline daemon startup code
* Rework algorithm to find default configuration files
* If run in system mode use "system.pa" instead of "default.pa" as default script file
* Change ladspa sink to use pa_clamp_samples() for clamping samples
* Teach module-null-sink how to deal with rewinding
* Try to support ALSA devices with no implicit channel map. Synthesize one by padding with PA_CHANNEL_POSITION_AUX channels. This is not tested since I lack hardware with these problems.
* Make use of time smoother in the client libraries.
* Add new pa_stream_is_corked() and pa_stream_set_started_callback() functions to public API
* Since our native socket moved, add some code for finding sockets created by old versions of PA. This should ease upgrades


git-svn-id: file:///home/lennart/svn/public/pulseaudio/branches/glitch-free@2329 fefdeb5f-60dc-0310-8127-8f9354f1896f
2008-05-01 19:51:05 +00:00
Lennart Poettering
caf742a076 define minimal and maximal wakeup/sleep times; check for underrun condition only once during buffer fillup
git-svn-id: file:///home/lennart/svn/public/pulseaudio/branches/glitch-free@2312 fefdeb5f-60dc-0310-8127-8f9354f1896f
2008-04-23 23:22:51 +00:00
Lennart Poettering
067a68abf9 fix build for auxiliary modules
git-svn-id: file:///home/lennart/svn/public/pulseaudio/branches/glitch-free@2310 fefdeb5f-60dc-0310-8127-8f9354f1896f
2008-04-23 19:22:56 +00:00
Lennart Poettering
76031df4a4 Big pile of interdependant changes:
* Fix a deadlock when an asyncq overflows and an RT thread needed to wait until space became available again while the main thread was waiting for a operation to complete and thus didn't free any new items. Now, if the asyncq overflows, queue those items temporarily, and return immediately. Then, when the queue becomes writable again, flush it.
* Modify pa_thread_mq_init() to also set up pa_rtpoll events properly for the MQ
* Some more pa_bool_t'ization
* Unify more common code between alsa-sink and alsa-source
* The upper limit for the tsched watermark is max_use minus one frame
* make module-alsa-source work
* make the alsa modules use pa_alsa_build_pollfd() now
* fix detection of dB scale for alsa-source


git-svn-id: file:///home/lennart/svn/public/pulseaudio/branches/glitch-free@2308 fefdeb5f-60dc-0310-8127-8f9354f1896f
2008-04-23 18:26:48 +00:00
Lennart Poettering
998ed8ede1 add missing header definitions for last commit
git-svn-id: file:///home/lennart/svn/public/pulseaudio/branches/glitch-free@2304 fefdeb5f-60dc-0310-8127-8f9354f1896f
2008-04-23 18:13:11 +00:00
Lennart Poettering
3f57d3aab2 add new function pa_alsa_build_pollfd() to alsa-util to unify a bit more common code from the sink and the source
git-svn-id: file:///home/lennart/svn/public/pulseaudio/branches/glitch-free@2303 fefdeb5f-60dc-0310-8127-8f9354f1896f
2008-04-23 18:12:46 +00:00
Lennart Poettering
5e6aacdbe2 * don't increase tsched_watermark on underrun without limits
* fix the watermark when we change the latency
* fix latency measurement
* move rewinding code into its own function
* make use of new function pa_alsa_recover_from_poll() were applicable


git-svn-id: file:///home/lennart/svn/public/pulseaudio/branches/glitch-free@2299 fefdeb5f-60dc-0310-8127-8f9354f1896f
2008-04-22 02:50:55 +00:00
Lennart Poettering
69f6bdf155 add new function pa_alsa_recover_from_poll() to merge common core from module-alsa-sink and module-alsa-source
git-svn-id: file:///home/lennart/svn/public/pulseaudio/branches/glitch-free@2294 fefdeb5f-60dc-0310-8127-8f9354f1896f
2008-04-22 02:44:25 +00:00
Lennart Poettering
e16a1987a3 - Change meaning of special values of latency request: 0 -> "minimal latency, please"; (pa_usec_t)-1 -> "don't care"
- Remove "source" word from monitor source description
- Increase default tsched watermark to 20ms again
- For the first iteration after snd_pcm_start() halve the sleep time as workaround for USB devices with quick starts


git-svn-id: file:///home/lennart/svn/public/pulseaudio/branches/glitch-free@2291 fefdeb5f-60dc-0310-8127-8f9354f1896f
2008-04-22 01:04:27 +00:00
Lennart Poettering
8181db182b initialize properties for ALSA sinks/sources more elaborately, re #277
git-svn-id: file:///home/lennart/svn/public/pulseaudio/branches/glitch-free@2287 fefdeb5f-60dc-0310-8127-8f9354f1896f
2008-04-20 21:50:57 +00:00
Lennart Poettering
62e7bc17c4 Big pile of dependant changes:
* Change pa_memblockq to carry silence memchunk instead of memblock and adapt all users
* Add new call pa_sink_input_get_silence() to get the suitable silence block for a sink input
* Implement monitoring sources properly by adding a delay queue to even out rewinds
* Remove pa_{sink|source}_ping() becaused unnecessary these days and not used
* Fix naming of various rewind related functions. Downstream is now _request_rewind(), upstream is _process_rewind()
* Fix volume adjustments for a single stream in pa_sink_render()
* Properly handle prebuf-style buffer underruns in pa_sink_input
* Don't allow rewinding to more than the last underrun
* Rework default buffering metrics selection for native protocol
* New functions pa_memblockq_prebuf_active(), pa_memblockq_silence()
* add option "mixer_reset=" to module-alsa-sink
* Other cleanups


git-svn-id: file:///home/lennart/svn/public/pulseaudio/branches/glitch-free@2283 fefdeb5f-60dc-0310-8127-8f9354f1896f
2008-04-20 20:16:55 +00:00
Lennart Poettering
78368db54f redirect alsa errors to normal PA log system; export buffer settings in device props
git-svn-id: file:///home/lennart/svn/public/pulseaudio/branches/glitch-free@2246 fefdeb5f-60dc-0310-8127-8f9354f1896f
2008-04-11 16:33:33 +00:00
Lennart Poettering
1c5f66519d make use of new alsa SND_PCM_NO_AUTO_xxx flags; redirect alsa errors to normal PA log system
git-svn-id: file:///home/lennart/svn/public/pulseaudio/branches/glitch-free@2245 fefdeb5f-60dc-0310-8127-8f9354f1896f
2008-04-11 16:32:03 +00:00
Lennart Poettering
e084e4b5de add new module module-device-restore
git-svn-id: file:///home/lennart/svn/public/pulseaudio/branches/glitch-free@2236 fefdeb5f-60dc-0310-8127-8f9354f1896f
2008-04-11 16:22:37 +00:00
Lennart Poettering
cc1e2654d3 init min/max latency properly; fix avail_min updating
git-svn-id: file:///home/lennart/svn/public/pulseaudio/branches/glitch-free@2227 fefdeb5f-60dc-0310-8127-8f9354f1896f
2008-04-09 01:18:05 +00:00
Lennart Poettering
b3b8a63c50 call snd_pcm_hwsync() expclicitly before we access any of the status fields, since this seems to be necessary. try to find the right mixer device via the card index
git-svn-id: file:///home/lennart/svn/public/pulseaudio/branches/glitch-free@2221 fefdeb5f-60dc-0310-8127-8f9354f1896f
2008-04-07 17:19:51 +00:00
Lennart Poettering
98b0152d7c add utility functions to dump alsa PCM state
git-svn-id: file:///home/lennart/svn/public/pulseaudio/branches/glitch-free@2219 fefdeb5f-60dc-0310-8127-8f9354f1896f
2008-04-07 16:46:13 +00:00
Lennart Poettering
b9c10f2c56 propery calculate min_avail in frames instead of bytes. don't use device_id= parameter in alsa modules if parameter wasn't specified
git-svn-id: file:///home/lennart/svn/public/pulseaudio/branches/glitch-free@2218 fefdeb5f-60dc-0310-8127-8f9354f1896f
2008-04-04 16:06:47 +00:00
Lennart Poettering
cdfcf6654c - deprecate autoload stuff
- allow setting of the requested latency of a sink input/source output before _put() is called
- allow sinks/sources to have a "minimal" latency which applies to all requested latencies by sink inputs/source outputs
- add new client library flags PA_STREAM_ADJUST_LATENCY, PA_STREAM_START_MUTED
- allow client library to fill in 0 to buffer_attr fields
- update module-alsa-source following module-alsa-sink
- other cleanups and fixes


git-svn-id: file:///home/lennart/svn/public/pulseaudio/branches/glitch-free@2215 fefdeb5f-60dc-0310-8127-8f9354f1896f
2008-04-03 13:40:55 +00:00
Lennart Poettering
ecf6439661 catch up with trunk HEAD (i.e. 2118:2213)
git-svn-id: file:///home/lennart/svn/public/pulseaudio/branches/glitch-free@2214 fefdeb5f-60dc-0310-8127-8f9354f1896f
2008-03-31 23:08:01 +00:00
Lennart Poettering
b5c5064a59 commit glitch-free work
git-svn-id: file:///home/lennart/svn/public/pulseaudio/branches/glitch-free@2125 fefdeb5f-60dc-0310-8127-8f9354f1896f
2008-03-15 15:24:36 +00:00
Lennart Poettering
d6bd152b4d commit glitch-free work
git-svn-id: file:///home/lennart/svn/public/pulseaudio/branches/glitch-free@2124 fefdeb5f-60dc-0310-8127-8f9354f1896f
2008-03-15 15:21:41 +00:00
Lennart Poettering
86b9ef8c96 deal with a possibly failing pa_channel_map_init_auto() correctly
git-svn-id: file:///home/lennart/svn/public/pulseaudio/trunk@2105 fefdeb5f-60dc-0310-8127-8f9354f1896f
2008-02-13 22:13:44 +00:00
Sjoerd Simons
02f49a24f4 Implement opcodes in the tunnel modules that were added in version 12 of
the protocol. Based on a patch by coling. (fixes #193)


git-svn-id: file:///home/lennart/svn/public/pulseaudio/trunk@2096 fefdeb5f-60dc-0310-8127-8f9354f1896f
2008-01-04 14:57:31 +00:00
Tanu Kaskinen
1e74aa977e Add a missing pa_xfree.
git-svn-id: file:///home/lennart/svn/public/pulseaudio/trunk@2094 fefdeb5f-60dc-0310-8127-8f9354f1896f
2008-01-03 22:27:58 +00:00
Tanu Kaskinen
4e771768e3 The previous commit introduced a new bug: giving too many values in the "control" argument wasn't detected any more. Fixed.
git-svn-id: file:///home/lennart/svn/public/pulseaudio/trunk@2093 fefdeb5f-60dc-0310-8127-8f9354f1896f
2008-01-03 21:53:46 +00:00
Tanu Kaskinen
39ba68bcf4 Fix the parsing of trailing default values in the "control" module argument.
git-svn-id: file:///home/lennart/svn/public/pulseaudio/trunk@2092 fefdeb5f-60dc-0310-8127-8f9354f1896f
2008-01-03 21:07:11 +00:00
Tanu Kaskinen
dccf411469 Downgraded the priority of a message, because it's really quite uninteresting.
git-svn-id: file:///home/lennart/svn/public/pulseaudio/trunk@2091 fefdeb5f-60dc-0310-8127-8f9354f1896f
2008-01-02 13:08:52 +00:00
Diego Petteno
b94a6bc5b8 Add a configure switch to enable the per-user ESounD socket path, but default to vanilla ESounD's path. This way distributions and users can configure PulseAudio according to their ESounD library.
git-svn-id: file:///home/lennart/svn/public/pulseaudio/trunk@2083 fefdeb5f-60dc-0310-8127-8f9354f1896f
2007-12-06 19:30:16 +00:00
Lennart Poettering
14a9b80afb - Check process name when dealing with PID files
- Add new PA_STREAM_FIX_CHANNELS, FIX_RATE, FIX_FORMAT, DONT_MOVE, VARIABLE_RATES to pa_sream_flags_t adn implement it
- Expose those flags in pacat
- Add notifications about device suspend/resume to the protocol and expose them in libpulse
- Allow changing of buffer_attr during playback
- allow disabling for remixing globally
- hookup polkit support


git-svn-id: file:///home/lennart/svn/public/pulseaudio/trunk@2067 fefdeb5f-60dc-0310-8127-8f9354f1896f
2007-11-21 01:30:40 +00:00
Lennart Poettering
4ac6b53478 minor typo fix
git-svn-id: file:///home/lennart/svn/public/pulseaudio/trunk@2066 fefdeb5f-60dc-0310-8127-8f9354f1896f
2007-11-21 01:21:53 +00:00
Lennart Poettering
9b75b9de56 add missing pa_boolization
git-svn-id: file:///home/lennart/svn/public/pulseaudio/trunk@2056 fefdeb5f-60dc-0310-8127-8f9354f1896f
2007-11-14 16:09:03 +00:00
Lennart Poettering
7462ab1aca Rework ALSA mixer channel detection code. This time we actually care about the channel names the ALSA mixer exports for us
git-svn-id: file:///home/lennart/svn/public/pulseaudio/trunk@2055 fefdeb5f-60dc-0310-8127-8f9354f1896f
2007-11-13 23:42:15 +00:00
Lennart Poettering
d17bb53d3e Completely rework ALSA device selection code: choose the device to open depending on the requested number of channels and channel map. In most cases it will now suffice to set default-channels=6 to enable 5.1 sound for all devices that support it
git-svn-id: file:///home/lennart/svn/public/pulseaudio/trunk@2050 fefdeb5f-60dc-0310-8127-8f9354f1896f
2007-11-13 17:37:44 +00:00
Lennart Poettering
5054f3623f add new fun module that automatically mutes your audio devices when you leave with your bluetooth phone, and unmutes when you come back
git-svn-id: file:///home/lennart/svn/public/pulseaudio/trunk@2048 fefdeb5f-60dc-0310-8127-8f9354f1896f
2007-11-11 23:18:19 +00:00
Lennart Poettering
e8092bede9 Port module-gconf to make use of the new API pa_start_child_for_read()
git-svn-id: file:///home/lennart/svn/public/pulseaudio/trunk@2047 fefdeb5f-60dc-0310-8127-8f9354f1896f
2007-11-11 23:01:44 +00:00
Lennart Poettering
e313fe1b3d tag modules that may only be loaded once at most especially, and enforce that in the module loader
git-svn-id: file:///home/lennart/svn/public/pulseaudio/trunk@2043 fefdeb5f-60dc-0310-8127-8f9354f1896f
2007-11-09 18:25:40 +00:00
Lennart Poettering
c1985c2acc replace a few CLAMPs by PA_CLAMP_UNLIKELY
git-svn-id: file:///home/lennart/svn/public/pulseaudio/trunk@2040 fefdeb5f-60dc-0310-8127-8f9354f1896f
2007-11-09 14:20:12 +00:00
Lennart Poettering
7e0f547f2f add support for 32bit integer samples
git-svn-id: file:///home/lennart/svn/public/pulseaudio/trunk@2037 fefdeb5f-60dc-0310-8127-8f9354f1896f
2007-11-09 02:45:07 +00:00
Lennart Poettering
961ce33b5e fix two alignment issues found by the debian buildd gcc on sparc
git-svn-id: file:///home/lennart/svn/public/pulseaudio/trunk@2022 fefdeb5f-60dc-0310-8127-8f9354f1896f
2007-11-04 16:51:26 +00:00
Lennart Poettering
faf1fd76a9 pa_boolization
git-svn-id: file:///home/lennart/svn/public/pulseaudio/trunk@2021 fefdeb5f-60dc-0310-8127-8f9354f1896f
2007-11-04 16:50:23 +00:00
Lennart Poettering
7bfd1b2f01 make rtprio and nice level actually configurable
git-svn-id: file:///home/lennart/svn/public/pulseaudio/trunk@2014 fefdeb5f-60dc-0310-8127-8f9354f1896f
2007-11-01 02:58:26 +00:00
Lennart Poettering
641d1fa964 drop rt scheduling before we start our helper process
git-svn-id: file:///home/lennart/svn/public/pulseaudio/trunk@2013 fefdeb5f-60dc-0310-8127-8f9354f1896f
2007-11-01 02:55:06 +00:00
Lennart Poettering
72817f9d9d rename stream names too, when the sink name changes
git-svn-id: file:///home/lennart/svn/public/pulseaudio/trunk@1997 fefdeb5f-60dc-0310-8127-8f9354f1896f
2007-10-30 02:35:00 +00:00
Lennart Poettering
201dff7b2e ignore updates not relevant to us
git-svn-id: file:///home/lennart/svn/public/pulseaudio/trunk@1996 fefdeb5f-60dc-0310-8127-8f9354f1896f
2007-10-30 02:05:53 +00:00
Lennart Poettering
1e0454eb74 rework the tunnel naming scheme, and make it follow the description changes of the underlying devices; never check for tagstruct eof, to ease later extensions
git-svn-id: file:///home/lennart/svn/public/pulseaudio/trunk@1995 fefdeb5f-60dc-0310-8127-8f9354f1896f
2007-10-30 01:50:22 +00:00
Lennart Poettering
bb2e1afd51 initialize userdata struct with 0
git-svn-id: file:///home/lennart/svn/public/pulseaudio/trunk@1994 fefdeb5f-60dc-0310-8127-8f9354f1896f
2007-10-30 00:49:50 +00:00
Lennart Poettering
2d265a91cc deal properly with signals interrupting us when we wait for data from gconf helper
git-svn-id: file:///home/lennart/svn/public/pulseaudio/trunk@1992 fefdeb5f-60dc-0310-8127-8f9354f1896f
2007-10-30 00:17:21 +00:00
Lennart Poettering
f1be9312cb keep track of configured tunnels and make sure to unload them when they disappear from zeroconf again
git-svn-id: file:///home/lennart/svn/public/pulseaudio/trunk@1991 fefdeb5f-60dc-0310-8127-8f9354f1896f
2007-10-29 23:55:23 +00:00
Lennart Poettering
e406bbaa62 don't announce monitor sources
git-svn-id: file:///home/lennart/svn/public/pulseaudio/trunk@1990 fefdeb5f-60dc-0310-8127-8f9354f1896f
2007-10-29 23:54:46 +00:00