Commit graph

6622 commits

Author SHA1 Message Date
Peter Meerwald
ea5cbec0b7 iochannel: Remove unnecessary zero-initialization
Signed-off-by: Peter Meerwald <pmeerw@pmeerw.net>
2014-11-09 22:38:29 +01:00
Peter Meerwald
8bbdae0ae8 alsa: Precompute maximum frames per block
frames_per_block is the mempool's maximum block size in frames

v2 (thanks David Henningson)
* rename max_frames to frames_per_block

Signed-off-by: Peter Meerwald <pmeerw@pmeerw.net>
2014-11-09 22:36:39 +01:00
Peter Meerwald
101092465d core: Replace assert()s with pa_assert()s
Signed-off-by: Peter Meerwald <pmeerw@pmeerw.net>
2014-11-09 22:14:33 +01:00
Peter Meerwald
59334021d3 log: Cleanup
Signed-off-by: Peter Meerwald <pmeerw@pmeerw.net>
2014-11-09 22:14:02 +01:00
Peter Meerwald
b9aafdd736 mix: Make use of pa_cvolume_is_norm/muted() macros
Signed-off-by: Peter Meerwald <pmeerw@pmeerw.net>
2014-11-09 22:13:34 +01:00
David Henningsson
aec811798c alsa-mixer: Add support for "Headphone+LO" and "Speaker+LO"
These two control names are currently being added to the HDA driver,
so let's support them in PulseAudio as well.

Signed-off-by: David Henningsson <david.henningsson@canonical.com>
2014-11-06 16:29:48 +01:00
Peter Meerwald
8ce2bfa4d0 pstream: Duplicate assignment, write.data is always NULL
Signed-off-by: Peter Meerwald <pmeerw@pmeerw.net>
2014-11-06 10:20:05 +01:00
Peter Meerwald
7bb708d953 asyncmsgq: Drop weird assert
Signed-off-by: Peter Meerwald <pmeerw@pmeerw.net>
2014-11-06 10:15:13 +01:00
Peter Meerwald
70973d58e6 resampler: Drop pointless remix variable
Signed-off-by: Peter Meerwald <pmeerw@pmeerw.net>
2014-11-06 10:12:39 +01:00
Peter Meerwald
6d1fd4d1aa pactl: Remove deprecated 'stat' behaviour
the stat command should only output statistics, not info

behaviour was deprecated anno 2011 in 8ace9185 "pactl: Make stat backwards
compatible" -- fix this now

v2: (thanks Tanu Kaskinen):
* adjust shell completion

Signed-off-by: Peter Meerwald <pmeerw@pmeerw.net>
2014-11-04 22:22:19 +01:00
Peter Meerwald
31d5acdc78 rtpoll: typo
Signed-off-by: Peter Meerwald <pmeerw@pmeerw.net>
2014-11-04 21:57:48 +01:00
Colin Guthrie
7276faca72 launch: Disable autospawn by default when systemd daemon support is enabled.
When enabled, this method is prefered over pulseaudio's built in
systems so we should try our best to ensure that it cannot be spawned
outside of the mechanisms desired.

Packagers should call 'systemctl --global enable pulseaudio.socket' to
enable the socket for all users, or alternatively ship an enabling
symlink in /usr/lib/systemd/user/sockets.target.wants/ folder. It may
also make sense for distributions to add in a ConditionNNN= line to the
socket unit if they have a downstream mechanism for enabling or
disabling pulseaudio.

If individual users wish to opt out of this vendor (or administrator)
decision, they can call 'systemctl --user mask pulseaudio.socket'
2014-11-03 12:32:23 +00:00
Colin Guthrie
e542e81004 launch: Add systemd units for launching pulseaudio user instances 2014-11-03 12:32:23 +00:00
Colin Guthrie
42156d2b5a launch: Avoid specifically starting PA and rely on autospawn/socket activation
This --start is patched out in several downstreams to allow users to easily
disable PA by simply disabling autospawn.

If autospawn is enabled, then the first pactl command will start it and if not
it will fail and the script will exit.

When switching to systemd socket activation, we very much do not want to
start PA manually here. We could replace it with a
  systemctl --user start pulseaudio
but really it just makes sense to rely on the socket activation as this
should apply equally to non-systemd setups which use PA's own autospawn.
2014-11-03 12:32:23 +00:00
Colin Guthrie
467b4b9bee socket-server: Add support for systemd socket activation.
This adds support to module-native-protocol-unix to take over already
listening sockets passed in via socket activation (e.g. from systemd)

Most of the code is isolated to socket-server but some cleanup code also
had to be tweaked to ensure we do not overzealously close open fds.
2014-11-03 12:32:23 +00:00
Colin Guthrie
fb1ca6f0c1 build-sys: Add support for newer systemd without compatibility libs
In newer versions of systemd some libraries were combined for the sake of
general simplicity.

This change checks against the newer name first and avoids separate pkgconfig
checks if it's found. We probably want to keep support for the older library
names for some time. systemd does allow for the shipping of compatibility
pkgconfig files to not break downstream code like ourselves which is why this
likely hasn't been "fixed" until now.

With this change we no longer rely on systemd having been built with those
compatibility pkgconfig files.
2014-11-03 12:32:23 +00:00
Colin Guthrie
f7da58b73f build-sys: Clarify some systemd sub-component variable/define names.
We currently use the term SYSTEMD when referring to libsystemd-login
and JOURNAL when referring to libsystemd-journal.

I will be shortly adding support for libsystemd-daemon and in
preparation I figured it would be a good idea to clarify the names
used currently before adding another!
2014-11-03 12:32:23 +00:00
Tanu Kaskinen
9b87baf58a socket-server: Improve readability 2014-11-03 11:23:25 +02:00
Sjoerd Simons
66f97c35bd alsa-mixer: Disable line-out if headphone jack is plugged
Line-out gets muted when headphones are plugged in on HDA cards, encode
this in the line-out path so pulse can match that state.
2014-11-03 08:52:09 +01:00
Tanu Kaskinen
717834086c alsa-mixer: Ignore some elements in the analog-output path
The analog-output path should be suppressed when there are more
specific paths available. Currently that usually doesn't happen. The
suppression can be done with the path subset detection, and this patch
makes that work (another approach would be to mark the elements as
required-absent, like analog-input does, but I like the subset
suppression more, because it requires less stuff in the configuration
files). The problem with listing the now-removed elements in
analog-output.conf was that if the sound card had e.g. a Speaker
element, then the switch behaviour was different between analog-output
and analog-output-speakers, so analog-output was not considered a
subset of analog-output-speakers.

BugLink: https://bugs.freedesktop.org/show_bug.cgi?id=74609
2014-10-31 14:30:22 +02:00
Arun Raghavan
5dfa83385c bluetooth: Fix some native backend command sending
We weren't writing out one character from the "OK" response, and the
"AT" part of the "+VGS" and "+VGM" commands was missing. Also, the spec
says that the command is terminated by only a CR and not an LF (probably
doesn't hurt, but let's adhere to the spec for now).
2014-10-31 10:47:56 +05:30
Wim Taymans
34a5c754a9 backend-native: implement volume control
Parse the gain changed AT commands from the headset and fire 2 new
hooks as a result. The device will connect to those hooks and change the
source/sink volumes.

When the source/sink volume changes, set the gain on the microphone or
speaker respectively. Make sure we do nothing if the transport can not
handle the gain changes.
2014-10-31 10:46:10 +05:30
Wim Taymans
7d4a497b3d backend-native: add a new native headset backend
Add a simple native headset backend that implements support for the
blutooth HSP profile.
This allows pulseaudio to output audio to a Headset using the HSP profile.

Make the native backend the default.
2014-10-31 10:46:10 +05:30
Wim Taymans
d7199bafea bluez5-util: add destroy function
Add a destroy function to the transport that is called before freeing
the transport. Useful for cleaning up extra userdata.
2014-10-31 10:46:10 +05:30
Wim Taymans
2251085dda bluez5-device: use get_profile_direction
Use the get_profile_direction() helper function to decide when to add a
source and a sink instead of enumerating profiles.
2014-10-31 10:46:10 +05:30
Arun Raghavan
8718496d14 creds: Rename pa_ancil to pa_cmsg_ancil_data
Makes the purpose of the structure clearear.
2014-10-31 10:46:10 +05:30
Peter Meerwald
72e5671ece tests: Be careful with data types to avoid cast
use unsigned and size_t for counters and packet length, resp.

Signed-off-by: Peter Meerwald <pmeerw@pmeerw.net>
2014-10-28 17:36:22 +01:00
Peter Meerwald
974fd3bcfd tests: Make global variables static in srbchannel-test
Signed-off-by: Peter Meerwald <pmeerw@pmeerw.net>
2014-10-28 17:36:22 +01:00
Peter Meerwald
b7e763bab4 alsa-sink: Check for after-avail is redundant
after-avail is always false at this point

Signed-off-by: Peter Meerwald <pmeerw@pmeerw.net>
2014-10-28 17:36:22 +01:00
Peter Meerwald
e798969fd5 modules: Fix )== typos
add a space between ) and ==

Signed-off-by: Peter Meerwald <pmeerw@pmeerw.net>
2014-10-28 17:36:22 +01:00
Peter Meerwald
ab37729147 mainloop: Fix typo
Signed-off-by: Peter Meerwald <pmeerw@pmeerw.net>
2014-10-28 17:36:22 +01:00
Peter Meerwald
f390e6e974 Cleanup !! for bool
!!x makes no sense if x is bool (this is a leftover from the
convertion pa_bool_t -> bool, d806b197)

Signed-off-by: Peter Meerwald <pmeerw@pmeerw.net>
2014-10-28 17:36:22 +01:00
Tanu Kaskinen
052316e419 alsa-mixer: Merge analog-output-desktop-speaker with analog-output-speaker(-always)
According to David[1], it's unlikely that there are any sound cards
that would have separate "speaker" and "desktop speaker" paths, so
let's remove the unnecessary distinction.

[1] http://thread.gmane.org/gmane.comp.audio.pulseaudio.general/20915/focus=21193
2014-10-28 12:29:43 +02:00
David Henningsson
cc7c626e69 module-card/device-restore: Do not legacy load an empty entry
There is no use in trying to load data in legacy format, if we
already know that there is no data at all.
Also clarify in the debug message whether there is invalid data
or no data at all.

Signed-off-by: David Henningsson <david.henningsson@canonical.com>
2014-10-28 10:33:31 +01:00
David Henningsson
356e133357 pstream-util: Fix build on freebsd
The previous fix was not entirely complete.

Signed-off-by: David Henningsson <david.henningsson@canonical.com>
2014-10-26 08:23:36 +01:00
David Henningsson
22827a5e1e protocol-native: Fail if trying to push unaligned memblock into queue
We will just ignore the memblock if this happens. We already have
a check for this in the client library, so this one is just for
security reasons.

Signed-off-by: David Henningsson <david.henningsson@canonical.com>
2014-10-24 15:01:13 +02:00
David Henningsson
150ace90f3 stream: Fail on client submitting non-frame-aligned memblocks
If somebody tries to push a non-frame-aligned memblock onto the
memblockq, then we should fail the write. Otherwise the daemon will
crash, see https://bugs.freedesktop.org/show_bug.cgi?id=77595

Signed-off-by: David Henningsson <david.henningsson@canonical.com>
2014-10-24 15:00:56 +02:00
David Henningsson
6434853b04 memblockq: Do not allow non-frame indices in the memblock queue
Since we don't allow lengths that are not frame aligned,
it does not make sense to allow indices that are not frame aligned
either.
Also, allowing such a thing to be added causes the daemon to crash
later instead (see https://bugs.freedesktop.org/show_bug.cgi?id=77595 ).

Also drop _se from assert (there is no side effect).

Signed-off-by: David Henningsson <david.henningsson@canonical.com>
2014-10-24 14:59:31 +02:00
Tanu Kaskinen
4971dc9ed6 tunnel-sink-new: Fix requested latency check
This fixes a bug in latency configuration. The wrong type in the cast
caused UINT64_MAX being not treated as special, so the configured
latency was set to UINT64_MAX usecs, which of course is absurdly huge
latency.
2014-10-19 14:16:41 +03:00
Tanu Kaskinen
0df4d56cf8 bluetooth: Move stuff to pa_bluetooth_transport_put/unlink()
This should not have any effect on behaviour. The goal is to align
with the pattern that I think we should follow:

Object initialization:
 - put() is the place to create references from other objects to the
   newly created object. In this case, adding the transport to
   discovery->transports was moved from new() to put, and adding the
   transport to device->transports was moved from set_state() to
   put().

Object destruction:
 - unlink() undoes put() and removes all references from other objects
   to the object being unlinked. In this case setting the
   device->transports pointer to NULL was moved from set_state() to
   unlink(), and setting the discovery->transports pointer to NULL was
   moved from free() to unlink().
 - free() undoes new(), but also calls unlink() so that object owners
   don't need to remember to call unlink() before free().
2014-10-19 14:04:46 +03:00
Arun Raghavan
2e754b1e78 pulse: Initalise pa_threaded_mainloop with zeroes 2014-10-17 10:56:01 +02:00
Felipe Sateler
93c698c9fc util: Try finding out application name using dladdr if available
This fixes getting the binary name in the Hurd, or any other port using
the GNU C library, but only in the case where the library is directly
linked to. Opening with dlopen will not work.

Change in v3: reorder header includes and definitions
Change in v2: use a weak reference to main, so that we
don't crash when main cannot be found.
2014-10-16 15:57:21 +02:00
David Henningsson
c45c0b1490 connect-stress-test: Fix number of streams per sink to "20"
This test broke when PA_MAX_INPUTS_PER_SINK was increased from 32 to 256.
Because we currently don't have time to figure out why, let's just set
NSTREAMS to 20 in the meantime.

Signed-off-by: David Henningsson <david.henningsson@canonical.com>
2014-10-16 12:25:49 +02:00
Tanu Kaskinen
9c135b998c tunnel-sink-new: Limit the maximum latency to 200 ms
The default maximum latency is 10 seconds, which is not good,
especially since the tunnel sink doesn't support rewinding. Due to the
lack of rewinding, e.g. volume changes take a long time with large
latencies.
2014-10-09 15:45:07 +03:00
Ricardo Salveti de Araujo
9dd4e8df3e module-stream-restore: use entry_write when filling up the database
It seems at some point the code migrated to use the entry_write calls,
but fill_db is still using the old syntax, causing the entry to be
invalid.

The crash happens when clean_up_db gets called, which then calls
entry_read, causing the crash.

Signed-off-by: Ricardo Salveti de Araujo <ricardo.salveti@canonical.com>
2014-10-06 15:50:03 +02:00
Tanu Kaskinen
8fb5e7c32a switch-on-connect: Initialize userdata contents to zero
This fixes userdata.only_from_unavailable being uninitialized in case
the user doesn't give the value in modargs.
2014-10-06 13:30:35 +03:00
David Henningsson
8bfd38d6ca module-mmkbd-evdev: Don't crash on failure to close fd
If the keyboard is unplugged, it looks like the kernel is reporting
back -ENODEV when trying to close the fd. This is probably a kernel
error, but still, it's better to complain than to crash.

Buglink: https://bugs.freedesktop.org/show_bug.cgi?id=80867
Reported-by: Stelios Bounanos
Signed-off-by: David Henningsson <david.henningsson@canonical.com>
2014-10-03 14:23:59 +02:00
Tanu Kaskinen
f04e31dc5e core-util: Add pa_unset_env()
Since we already have pa_set_env(), it's nice to also have a
corresponding function for unsetting environment variables.
2014-10-02 12:14:09 +03:00
Hui Wang
0e44b127d0 module-switch-on-port-available: make the output more accurate
It is possible that the chosen active_port doesn't equal
new_data->active_port, using p->name is more accurate.

Please refer to sink_new_hook_callback()

Signed-off-by: Hui Wang <hui.wang@canonical.com>
2014-09-28 13:55:20 +03:00
Pali Rohár
380a7fc240 bluetooth: bluez4: Add profile name to sinks and sources
Now a2dp and hsp sinks and sources will have different names which means that
applications and other modules can use sink/source to distinguish selected
profile.

Module module-device-restore uses sink/source name and port name as identifier,
so if different profiles have different names module-device-restore can store
volume settings for each profile.

So with this patch it is possible to configure different volume settings for
a2dp and hsp profiles.

This patch does not change port names so gnome applications will be happy.

Note that similar patch is needed also for bluez5, but I'm not using bluez5
so I cannot write or test it.

Signed-off-by: Pali Rohár <pali.rohar@gmail.com>
2014-09-28 13:34:27 +03:00