Commit graph

1460 commits

Author SHA1 Message Date
Jyri Sarha
5391daf8df core: Add infrastructure for synchronizing HW and SW volume changes
To make concurrent use of SW and HW volume glitchles their application
needs to be synchronized. For accurate synchronization the HW volume
needs to be applied in IO thread. This patch adds infrastructure to
delay the applying of HW volume to match with SW volume timing. To
avoid synchronization problems this patch moves many of the volume and
mute related functions from main thread to IO thread. All these
changes become active only if the sync volume flag for a sink has been
set. So, for this patch to have any effect it needs to be taken into
use by sink implementor.

Signed-off-by: Jyri Sarha <jyri.sarha@nokia.com>
Reviewed-by: Tanu Kaskinen <tanu.kaskinen@digia.com>
Reviewd-by: Colin Guthrie <cguthrie@mandriva.org>
2010-10-16 11:53:38 +01:00
Arun Raghavan
0edbb2c6aa cli: Validate volume before setting
This causes an error to be generated if an invalid volume is provided to
commands that set sink/sink-input/source volume.
2010-10-15 01:10:00 +05:30
Arun Raghavan
1d2ef7923d volume: Use a macro to check if a volume is valid
This adds a PA_VOLUME_IS_VALID() macro for checking if a given
pa_volume_t is valid. This makes changes to the volume ranges simpler
(just change PA_VOLUME_MAX, for example, without needing to modify any
other code).
2010-10-15 01:10:00 +05:30
David Henningsson
4d84a00b49 SSE/MMX/ARM: Fix high frequency noise with unusual number of channels
In the assembly optimized versions of SSE, a noise could occur when the
number of channels were 3,5,6 or 7. For MMX and ARM, this could occur
when the number of channels were 3.

Signed-off-by: David Henningsson <david.henningsson@canonical.com>
2010-10-13 14:52:03 +01:00
Colin Guthrie
3de129f3ac introspect: Include whether a stream is corked in the info callback. 2010-10-06 09:17:01 +01:00
Colin Guthrie
b6be95ef53 sink-input: Fix comment 2010-10-01 01:39:35 +01:00
Colin Guthrie
d195a54979 suspend: Do not assert when checking for device suspended status and a stream is not linked.
When looping through the streams on a given device checking to see if the
stream is 'active' there should be no assert if the stream is not linked, it
should simply be ignored.

This assert can be hit if a sink and a sink input are both created and setup
but the final put calls are left to the end as is done in module-ladspa-sink.

While the order of the calls in module-ladspa-sink could be altered, we should
deal gracefully with the way it is now and not complain about ending up
in this state.

A trigger case was trivial:
 1. Load a ladspa-sink.
 2. Play a stream and move it to it.
 3. Unload the module, then reload it.
 4. Due to module-stream-restore and module-suspend-on-idle, the hook callbacks
    will ultimately hit this assert.

Thanks to Kim Therkelsen for highlighting this issue.
2010-10-01 01:39:35 +01:00
Arun Raghavan
ab4223e9cf cpu: Add CPU information to pa_core
This retains CPU information (processor type and supported features) in
pa_core, so that this information can be used by modules at init time to
figure out what optimisations may be used.
2010-09-23 17:17:03 +05:30
Colin Guthrie
f73e9c19f7 x11: Use the default screen for X11 properties.
This commit restores the functionality originally included in 65e807
by Leszek Koltunski.
2010-09-18 12:05:38 +01:00
Colin Guthrie
c0e045d003 xcb: xcb_get_setup() can return 0, so make sure we check it before using 2010-09-18 12:05:26 +01:00
Colin Guthrie
38778117f8 x11: Partially convert to XCB.
This commit mostly converts the X11 handling to XCB. There are still
some uses of XLib to deal with the X11 session handling modules, however all
client-side code should now be free of XLib and thus this should fix Bug #799

Note that this removes the screen-based changes by Leszek Koltunski
in 65e80, however this will be restored in due course.
2010-09-18 12:04:09 +01:00
Wim Taymans
2ee7cd15b3 smoother: avoid losing precision
Avoid losing precision by subtracting uint64 values before converting them to
doubles.
2010-09-07 12:07:24 +02:00
Colin Guthrie
d0f91b1cf7 cli: Allow .include on directories as well as files.
When .including a directory, all files with the extension '.pa'
in that folder will be parsed in alphabetical order.
2010-09-04 17:07:23 +01:00
Tanu Kaskinen
7ba22276d2 core: New function: pa_module_update_proplist(). 2010-08-19 12:10:01 +03:00
Pierre-Louis Bossart
9b6c84ad6e AC3 passthrough support
Second version after Tanu's feedback

TODO:
    - notify client that volume control is disabled
    - change sink rate in passthrough mode if needed
    - automatic detection of passthrough mode instead of hard
    coded profile names

Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@intel.com>
2010-08-12 18:20:27 +01:00
Tanu Kaskinen
5012dc8450 dbus: Fix slightly messed up assertions. 2010-05-10 14:33:16 +03:00
Tanu Kaskinen
63c24fa49a dbus: Use a struct as the hashmap items for listening_signals.
Previously we used libdbus's memory as keys in listening_signals, which caused
that the memory of the hashmap keys got overwritten, which led to that signals
weren't sent properly.
2010-05-10 14:29:30 +03:00
Tanu Kaskinen
acaeb71cf8 dbus: Fix segfault when receiving a property access call that isn't permitted. 2010-05-10 14:10:09 +03:00
Tanu Kaskinen
2dcf378741 cli: Increase the command maximum length from 1024 to 2048. 2010-05-10 14:08:04 +03:00
Jez Austin
74591da68b socket-client: properly handle asyncns failures
We fail to detect when people disable IPv6 in there kernels. This patch
makes sure we don't ignore this error condition.

http://pulseaudio.org/ticket/752
https://bugzilla.mozilla.org/show_bug.cgi?id=533470
http://bugs.freedesktop.org/show_bug.cgi?id=25742
2010-05-08 14:21:01 +01:00
Kees Cook
87fdbb544b core-util: ensure that we chmod only the dir we ourselves created 2010-05-08 14:19:08 +01:00
Lennart Poettering
cdc2769162 thread: name all threads so that the names appear in /proc/$PID/task/$TID/comm 2010-05-07 23:58:59 +02:00
Lennart Poettering
87cc741d0e memblockq: implement new call pa_memblockq_peek_fixed_size() 2010-02-25 02:10:45 +01:00
Lennart Poettering
616a8997b3 core: rework how stream volumes affect sink volumes 2010-02-23 18:41:18 +01:00
Lennart Poettering
c970131094 esd,simple: use pa_memblockq_pop_missing()
We need to use pa_memblockq_pop_missing() for all request handling,
including the initial request, because otherwise the counters will be
stay off during the entire runtime.

This should fix:

https://bugzilla.redhat.com/show_bug.cgi?id=559467
2010-02-23 01:24:01 +01:00
Lennart Poettering
dbdc666fb6 various modernizations 2010-02-23 01:23:41 +01:00
Lennart Poettering
028aa734f8 iochannel: remove fd from poll() when we don't care from events
This should make it unlikely that we loop on SIGHUP indefinitely.

Also, this makes it possible for callbacks not to process all events and
still not busy loop.
2010-02-23 01:20:25 +01:00
Lennart Poettering
b5e30764c4 native: improve logging for buffer_attrs 2010-02-22 04:57:21 +01:00
Lennart Poettering
0c7c9653b1 conf-parser: make use of pa_strip() wherever applicable 2010-02-21 22:00:16 +01:00
Lennart Poettering
f1af7a02d1 core-util: introduce generic function pa_strip() 2010-02-21 21:59:53 +01:00
Matthijs Kooijman
f8aceafb13 http: support HTTP HEAD
http://pulseaudio.org/ticket/781
2010-02-21 21:46:06 +01:00
Lennart Poettering
ea29b11097 scache: when playing a sample from the cache make sure not queue them up when the sink is suspended
libcanberra already sets the appropriate flags for uncached sample
streams, we now need to make sure to set them for cached samples too.
2010-02-21 17:48:55 +01:00
Lennart Poettering
3f1c90b9d7 sample-cache: use the sample name as unmodified fallback in the properties when playing a sample from the cache 2010-02-21 17:48:50 +01:00
Lennart Poettering
c2079d792c shm: don't complain about missing SHM segments
If two clients try to cleanup the SHM directory at the same time, they
might want to open and then delete the same segment at the same time, in
which case one client might win, the other one lose. In this case, don't
warn about ENOENT.
2010-02-21 17:48:17 +01:00
Lennart Poettering
b9bcc7c733 fdsem: be more verbose when reading from eventfd fails.
Apperently reading from an eventfd can fail, which results in an assert
to be hit. I am not sure about the reason for the failure, but in
attempt to track down the issue the next time is hit this prints a more
useful log message.

https://bugzilla.redhat.com/attachment.cgi?id=386380
2010-02-21 17:47:40 +01:00
Lennart Poettering
ac76dbde63 dbus: first restart timer, then dispatch it
This makes sure that we don't access the timer after it might have been
destroyed already from the dbus timeout callback.

https://bugzilla.redhat.com/attachment.cgi?id=389952
2010-02-21 17:47:36 +01:00
Lennart Poettering
66cfa72eb4 native: rework handling of seeks that depend on variables the client does not know anything about
All seeks/flushes that depend on the playback buffer read pointer cannot
be accounted for properly in the client since it does not know the
actual read pointer. Due to that the clients do not account for it at
all. We need do the same on the server side. And we did, but a little
bit too extreme. While we properly have not applied the changes to the
"request" counter we still do have to apply it to the "missing" counter.
This patch fixes that.
2010-02-09 22:45:59 +00:00
Lennart Poettering
54025c96a7 cpu: check for CMOV flag before using this intsruction in assembly
http://pulseaudio.org/ticket/776
2010-02-09 22:32:39 +00:00
Lennart Poettering
f732c23d95 log: add an easy way to disable log rate limiting
Should help with debuggin bugs like:

https://bugzilla.redhat.com/show_bug.cgi?id=554405
2010-02-09 22:31:55 +00:00
Lennart Poettering
7f7455b1be once: make once related variables volatile 2010-02-09 22:31:30 +00:00
Lennart Poettering
345547853b core: make sure we always return a valid memblock in sink_input_pop() callbacks
https://bugzilla.redhat.com/show_bug.cgi?id=553607
2010-02-09 22:29:38 +00:00
Lennart Poettering
699233fb47 native: fix request counter miscalculations
Do not subtract bytes the client sends us beyond what we requested from
our missing bytes counter.

This was mostly a thinko that caused servers asking for too little data
when the client initially sent more data than requested, because that
data sent too much was accounted for twice.

This commit fixes this miscalculation.

http://bugzilla.redhat.com/show_bug.cgi?id=534130
2010-02-09 22:29:20 +00:00
Colin Guthrie
cd559553a0 core: Fix macro typo - PA_SINK_IS_LINKED -> PA_SINK_INPUT_IS_LINKED 2010-02-09 21:59:55 +00:00
Lennart Poettering
f250179b4e shm: explicitly mark shm seg for MAP_NORESERVE to request overcommiting no matter what 2010-02-02 09:01:04 +01:00
Lennart Poettering
76089b11eb native: fallback to another port if the default port is taken
Unless the port number is explicitly configured we will now fallback to
a kernel picked port if the one we'd like by default we cannot get.

http://pulseaudio.org/ticket/773
2010-01-14 00:13:13 +01:00
Tanu Kaskinen
25435bf373 sink-input: Replace a tab indentation with spaces. 2010-01-06 11:03:19 +02:00
Tanu Kaskinen
cc82553d7e idxset: Fix _get_by_data() comment. 2010-01-06 10:48:32 +02:00
huan zheng
aa9348441d core: volume ramping fix
Hi,
I found that volume ramping is inside PA now.
there's a minor fix here, it is a bug i found after the patch is submitted:

line 1781 of sink-input.c :
if ((i->thread_info.ramp_info.envelope_dying - nbytes) <= 0) {
need to be changed to
if ((i->thread_info.ramp_info.envelope_dying - (ssize_t) nbytes) <= 0) {

otherwise this argument will never be negative since nbytes is of type
size_t which is unsigned.
Please change it when you have time, sorry if bring any inconvenience.  :)
2010-01-06 00:22:23 +01:00
Lennart Poettering
6dfb1ee27e Merge remote branch 'zonque/topic/osx' 2010-01-05 22:52:57 +01:00
Daniel Mack
937c587e77 fix a number of warnings
most of them were due to missing #ifdefs or wrong printf format type for
[s]size_t.
2010-01-05 22:46:13 +01:00