Commit graph

6195 commits

Author SHA1 Message Date
Evgeniy Khramtsov 4d064a3718 meson: prefer libintl on FreeBSD
FreeBSD does not have gettext in libc.
It is implemented in the third-party library.
2021-04-23 22:57:51 +03:00
Evgeniy Khramtsov 097510cffe examples: depend on libinotify on FreeBSD
FreeBSD does not have inotify in the base.
It is implemented in the third-party library.
2021-04-23 21:00:44 +03:00
Evgeniy Khramtsov 7888be6eb3 alsa: depend on epoll-shim and libinotify on FreeBSD
FreeBSD does not have epoll or inotify in the base.
They are implemented in third-party libraries.
2021-04-23 20:52:24 +03:00
Wim Taymans 962d3b9127 modules: don't add CLIENT_ID when lingering
Because the object is not destroyed when the client is destroyed
and so the client.id might become invalid.
2021-04-23 11:19:25 +02:00
Wim Taymans d560628e2a module-loopback: copy name and description
Also copy name and description to streams when speficified globally.
2021-04-23 11:00:47 +02:00
Wim Taymans ab7bc6ed27 pulse-server: add remap sink and source modules 2021-04-22 20:44:55 +02:00
Jonas Holmberg 1e6b7b8a83 module-protocol-native: Handle pending connect
Do not return an error immediately if connect() fails with EAGAIN. Check
if it completed successfully with getsockopt() when the socket becomes
writable instead.

This is the way to handle non-blocking connect() by the book but after
testing it seems that the case when connect() fails with EAGAIN is when
the listen backlog is full on the server side and in that case the
server socket is closed. So even though connect() completes successfully
according to getsockopt() the client socket is no longer usable
(on_remote_data() will get both SPA_IO_OUT and SPA_IO_HUP in mask on the
first call after connect() returned EAGAIN).
2021-04-22 17:46:00 +00:00
Wim Taymans 330e694e63 module-loopback: handle per stream channels and positions
Make it possible to specify different channels and positions
per stream so that we can do remapping as well.
Make sure we only copy available input channels and set the remaining
channels empty.
2021-04-22 18:38:16 +02:00
Wim Taymans 74430871fb pulse-server: implement the loopback module with module-loopback 2021-04-22 17:26:04 +02:00
Wim Taymans 115be6d5fc module-loopback: cancel pending work items when destroying 2021-04-22 17:24:59 +02:00
Wim Taymans c52637f783 pw-loopback: implement with the module
Implement pw-loopback by loading the module-loopback.

Fixes #1061
2021-04-22 16:16:21 +02:00
Wim Taymans 7d79c71178 module-loopback: parse node.latency 2021-04-22 15:46:09 +02:00
Wim Taymans 93d1c8f31d modules: improve loopback module
Handle error when loading and fix leaks.
Mark streams as virtual if nothing else is specified.
Try to reuse an existing core connection if possible.
unload the module when the core is in error or when it is destroyed.
2021-04-22 15:34:21 +02:00
Wim Taymans 3b021cc4ed modules: add module-loopback
Add a new loopback module that can also create virtual-sink and
virtual-source.
2021-04-22 13:08:20 +02:00
Wim Taymans 0e8e1de17d media-session: make sample-rate optional in policy-node
When deciding on the number of channels to use for the node,
ignore parsing the sample rate. This makes it possible to activate the
node with a missing rate property, like when the node can do all
possible rates.
2021-04-22 13:07:19 +02:00
Wim Taymans 3fd8f62e21 acp: sync with pulseaudio
Remove our custom hack to work around missing duplex and use
upstream fix.
2021-04-22 12:25:48 +02:00
Wim Taymans f0fc4f7fc6 0.3.26 2021-04-22 11:58:59 +02:00
Huang-Huang Bao 8129b6658e bluez5: rename 'bluez5.reconnect-profiles' property to 'bluez5.auto-connect'
Avoid confusion with 'ReconnectUUIDs' in bluez policy config. See #1081.
2021-04-22 07:36:47 +00:00
Huang-Huang Bao f44d00424f bluez5: don't clear dynamic node flag from node id in volume changed handler
It causes transport state handler don't emit node removing info.
Fixes #1080.
2021-04-22 07:34:02 +00:00
Jonas Holmberg 0ddfbc0f62 systemd: Increase backlog for unix sockets
Use the default backlog size, SOMAXCONN (128), which is the same as for
the unix socket in module-protocol-native. If the backlog queue gets
full incoming connections will be closed before they can be accepted.
This causes connect() to fail with EAGAIN on the client side and since
the server socket is closed it will not be possible to use the client
socket further.
2021-04-22 07:30:51 +00:00
Jonas Holmberg ad0d7ef9f2 spa: Fix build without v4l2
libudev_dep was not required if only alsa was enabled.
2021-04-22 07:27:14 +00:00
haval0 0c6016c0c0 fix tools > tool typo 2021-04-21 14:40:56 +00:00
Wim Taymans 8294a4f42c Add vm.overrides property in pipewire and pulse-server
Apply vm.override properties when running in a VM. Increase the
default quantum to 1024 when running in a VM to cause less
dropouts.
2021-04-21 15:58:30 +02:00
Wim Taymans fbd6a62b73 pulse-server: cancel items from work-queue
Make sure we cancel any pending work-queue items for the object before
we destroy the object.
2021-04-21 13:23:13 +02:00
Wim Taymans 639e6ea644 pulse-server: use the work-queue to unload modules
This avoids allocating an eventfd for each module.
2021-04-21 13:17:28 +02:00
Wim Taymans fee8bf69dd pulse-server: make method to schedule module unload 2021-04-21 13:11:16 +02:00
Wim Taymans cd224942c7 protocol-simple: use work-queue for client cleanup 2021-04-21 13:03:08 +02:00
Wim Taymans c70a5de526 pulse-server: use a work-queue to schedule destroy
Use the context work queue to schedule destroys from callbacks.
This is better because we can pass the destroyed object around and
implement just the action we need to do on it.
2021-04-21 12:55:49 +02:00
Wim Taymans 5041c44937 link-factory: destroy lingering error links
When a link is lingering and in error, use a work queue to destroy it
automatically.
2021-04-21 12:17:53 +02:00
Wim Taymans 0a3d44ac53 context: add method to get a work_queue
Make a method to get a work-queue from the context. There is one
work-queue to use and the context will allocate it when requested
and free when destroyed.

The work queue is handy to delay execution of some logic for later,
either in the next iteration of the main-loop or when an async
operation completed.

Export some work-queue methods.
2021-04-21 12:17:53 +02:00
Wim Taymans bf5d40434d impl-link: don't clear ouput buffers in all cases
When we can't set the allocated buffers on the input port, don't
clear the buffers because they might be in use by the output port.

Fixes #1078
2021-04-21 12:17:53 +02:00
Huang-Huang Bao 01f2c91b89 bluez5: fix HSP HS profile enumeration
HSP don't supports codec switching.
2021-04-21 08:58:48 +00:00
Huang-Huang Bao 30e4e56852 bluez5: enable HSP HS volume control
It's only enabled for HSP AG previously.
2021-04-21 08:54:10 +00:00
Huang-Huang Bao f56d08297d bluez5: correct RFCOMM command to set HSP HS volume 2021-04-21 08:54:10 +00:00
Huang-Huang Bao 0dde4f8774 bluez5: cache a2dp volumes activation info
So we don't get a sudden boost on soft volumes when switching profile/codec.
2021-04-21 08:54:10 +00:00
Nicolai Syvertsen 51c3290d11 Update Norwegian Nynorsk translation 2021-04-21 08:53:21 +00:00
Wim Taymans 7031471807 pulse-server: add property to make virtual nodes
Make a property to mark virtual nodes and use it to hide the client
id from the sink-input/source-output info in pulse-server.
2021-04-20 21:05:59 +02:00
Wim Taymans 0e91233569 impl-client: fix crash when updating permissions
After ensure_permissions, the default permission might be moved to a
different memory location. Get the new default permission in case it
moved.
2021-04-20 17:56:28 +02:00
Wim Taymans 5240850bc1 bluez: set device description to the bluez alias
Just like how PulseAudio does it.

Fixes #1064
2021-04-20 16:57:44 +02:00
Wim Taymans 648c9b432c pulse-server: set monitor.channel-volumes=true by default
Make a null-sink with monitor.channel-volumes=true by default if not
defined otherwise. This ensures the volume of the null-sink is
always transfered to the monitor ports.

Also only set the object.linger flag when undefined.
2021-04-20 09:36:14 +02:00
Peter Hutterer 1201795c46 Makefile.in: replace the various @foo@ with $(foo) variables
This leaves us with the actual meson replacements at the top and, at least
IMO, makes the file easier to read - in part because $(foo) is
syntax-highlighted so variables stick out more.
2021-04-20 07:11:06 +00:00
Peter Hutterer 83ed03d4cf Remove .gitignore files in subdirectories
With meson we no longer have generated files messing up the tree, so we no
longer need these files.
2021-04-20 07:10:15 +00:00
Peter Hutterer d068cc2bcf INSTALL: use builddir, not build for the meson directory
builddir is slightly more self-explanatory than using "build" which could be
a command as well
2021-04-20 07:08:58 +00:00
scootergrisen 6f000124cb Update danish translation 2021-04-19 18:50:07 +00:00
Yuri Chornoivan 8061cb66bf po: Update Ukrainian translation 2021-04-19 15:37:43 +00:00
Wim Taymans 575163e644 pulse-server: use args_to_audioinfo to parse channels 2021-04-19 16:49:25 +02:00
Wim Taymans 649d21ac02 pipewire-pulse: improve channels and channel_map parsing
If we have channels and channelmap, make sure they match.
If we have only channel_map, use this to derive channels instead of
taking the default number of channels and then ending up with a
mismatch.
If we have only channels, use this to generate a channelmap from
predefined maps or just unknown channels instead of taking the default
channel map.
If neither channels or channelmap is defined, use the defaults.
2021-04-19 16:41:14 +02:00
Wim Taymans 66e37f6bb7 pw-cli: free properties in create_ functions 2021-04-19 16:37:05 +02:00
Wim Taymans 50bae0a209 pipewire: free i18n domain in deinit() 2021-04-19 16:34:49 +02:00
Wim Taymans a9b8aa27c1 media-session: improve bluetooth icon name
Move the icon we get from bluez to a separate property, it is not
a good icon to show.
Copy form factor from device to node properties.
Set device.bus in the device properties and copy it to the node
properties.
Use form factor and bus to make a nice icon-name for the node and
device.

Fixes #1064
2021-04-19 13:21:32 +02:00