Commit graph

4826 commits

Author SHA1 Message Date
Greg V 90ade199e6 Provide a strndupa implementation when it is absent
strndupa is a glibc exclusive, not even musl implements it
2020-11-09 11:14:20 +00:00
Greg V cc0386e1c5 media-session: ifdef Linux-specific file option 2020-11-09 11:14:20 +00:00
Greg V fba8cd9f56 protocol-pulse: ifdef Linux-specific errnos and socket opts 2020-11-09 11:14:20 +00:00
Wim Taymans bd57c1a457 pulse-server: improve under and overrun handling 2020-11-09 12:06:44 +01:00
Wim Taymans 8abb648ec3 pulse-server: Improve timing reporting
Use the same logic as pulseaudio to improve the timing reporting
and improve compatibility with vlc.
2020-11-09 11:13:06 +01:00
Wim Taymans 18c57efb39 pulse-server: take type from info 2020-11-09 09:42:53 +01:00
Wim Taymans b6efcd90a7 pulse-server: improve message debug, add offset 2020-11-09 09:42:15 +01:00
Sergey Bugaev d7d4f094a8 pipewire: load journald logging when available
See https://gitlab.freedesktop.org/pipewire/pipewire/-/issues/358

Signed-off-by: Sergey Bugaev <bugaevc@gmail.com>
2020-11-06 15:51:24 +00:00
Sergey Bugaev c101ff2057 support: add a journald logger implementation
Closes https://gitlab.freedesktop.org/pipewire/pipewire/-/issues/358

Signed-off-by: Sergey Bugaev <bugaevc@gmail.com>
2020-11-06 15:51:24 +00:00
Sergey Bugaev 28af82e6d9 meson: rename HAVE_SYSTEMD_DAEMON to HAVE_SYSTEMD
This variable describes whether we have systemd and libsystemd,
not just <systemd/sd-daemon.h>

While at it, sneak in a fix for the warning message:
"systemd should never ever be capitalized".

Signed-off-by: Sergey Bugaev <bugaevc@gmail.com>
2020-11-06 15:51:24 +00:00
Wim Taymans 1507f40eb0 pulse-server: keep on reading commands until we hit EAGAIN
Only log a warning for anything else than EAGAIN
2020-11-06 16:37:19 +01:00
Wim Taymans 24280928a9 pulse-server: improve debug 2020-11-06 16:30:05 +01:00
Wim Taymans 65289a2185 pulse-sever: increase socket priority 2020-11-06 16:13:05 +01:00
Wim Taymans 96599f74e7 pulse-server: use invalid id for unused connect_tag
Because 0 happens to be the first tag and can cause confusion.
2020-11-06 16:09:41 +01:00
Wim Taymans a2549fc638 clean the hook lists
Make sure the hook lists are emptied so that the removed callbacks
are called. The callers should really remove the hook they installed
themselves but this is a last chance to fix things up.
2020-11-06 15:55:33 +01:00
Wim Taymans 1570e62635 remove hooks from objects
Remove the hooks we installed on objects in the destroy/free event
or before calling _destroy. This is not really needed but it is
a nice thing to do because it calls the hook removed callbacks.
2020-11-06 15:53:32 +01:00
Wim Taymans 6317bc4deb module-spa: remove the listeners correctly
In the module destroy, remove the module listener and in the
factory_destroy, the factory_listener.
2020-11-06 15:37:58 +01:00
Wim Taymans 42319e32be pulse-server: handle NULL registry 2020-11-06 15:35:44 +01:00
Wim Taymans 06bfbe55d3 proxy: also clean the object_listeners
Fixes #366
2020-11-06 15:34:13 +01:00
Wim Taymans 80967e88ad utils: add function to clean hook list 2020-11-06 15:32:49 +01:00
Wim Taymans cd71b05fd0 tests: zero test data
hooks need to be zeroed or else they causes crashes on _remove when the
remove callback is called.

Fixes #368
2020-11-06 09:30:21 +01:00
Wim Taymans 3fe31862ef proxy: remove hooks in _destroy
Callers of _destroy should be able to reply on the fact that no
more events will be emited on the proxy whitout being required to
remove the hooks themselves.

Because of the refcount in the proxy, it can stay alive after the
_destroy and being used to emit events, like emit an error in
protocol-native.

Fixes #366
2020-11-05 20:22:57 +01:00
Georges Basile Stavracas Neto a362889712 pulse-server: Implement module load and unload
Implement a minimal version of the LOAD_MODULE and UNLOAD_MODULE
stream commands. The only supported module for now is the null
sink.

Modules are stored on a per-client bases, so that when clients
are disconnected, the modules they loaded is removed too.

This is enough to allow GNOME Network Displays to register a sink.
2020-11-05 11:57:12 -03:00
Wim Taymans 2a5087a51e pulse-server: set client id 2020-11-05 10:46:19 +01:00
Wim Taymans b472abe65b pulse-server: improve GET_SERVER_INFO
We don't need to bind to the core object again, we can just use the
events on the manager core.
We don't actually have info when the Core is added so don't try to
use it to get defaults for the client.
Use the manager core info in server info.
2020-11-05 10:36:13 +01:00
Wim Taymans 5a98a9b1cd alsa: reload alsa configuration
Fixes #332
2020-11-05 10:00:25 +01:00
Wim Taymans 17e3087397 bluez5: fix some whitespace and indent 2020-11-05 09:46:11 +01:00
Wim Taymans 38bcab4610 jack: handle connect errors
Listen on the proxy for errors and report this to the caller. This
avoids hanging in jack_connect.
2020-11-04 21:05:45 +01:00
Wim Taymans 6444147a12 pulse: protect context
Make sure the context is READY when calling function
Protect pa_operation_sync against disconnected context

Fixes #365
2020-11-04 19:27:17 +01:00
Wim Taymans 7a43769648 pulse: guard against NULL core
See #365
2020-11-04 17:41:40 +01:00
Wim Taymans b8c7b36d3b protocol-native: do version check on HELLO
Always do the version check on HELLO because the connection could
have been moved from a v3 portal to a v0 client (like chrome)

Fixes #270
2020-11-04 16:13:53 +01:00
Wim Taymans 16872549e3 0.3.15 2020-11-04 10:43:40 +01:00
Wim Taymans b659fa580a pulse-server: improve error reporting 2020-11-04 10:24:39 +01:00
Wim Taymans 9d598cde63 policy-node: always up or downmix to device format
Always remix the channels to match the ones on the device even if
that means upmixing.

This will make mono streams go to all inputs of the device instead
of just one.

Fixes #355
2020-11-04 09:47:20 +01:00
Wim Taymans 4ea95abd90 rtkit: improve error message 2020-11-04 09:42:33 +01:00
Wim Taymans 12cefd2461 pulse-server: handle no_remix flag 2020-11-03 21:01:24 +01:00
Wim Taymans 4f2b1c7684 media-session: avoid recursive rescan
A rescan can trigger a new rescan and with a blocking rountrip this
can recursively never end. Catch a rescan while rescanning and queue
it for when we end the current scan.

Fixes #364
2020-11-03 20:25:51 +01:00
Wim Taymans 8ca71060eb improve some debug 2020-11-03 18:04:42 +01:00
Wim Taymans aeed0e3ea4 impl-node: fix cancel of previous state
Force a state change completed when canceled so that we can
perform the new state change. Fixes some hangs with fast pause/play.
2020-11-03 18:02:43 +01:00
Wim Taymans efafb41525 pulse-server: debug messages when connection debug enabled 2020-11-03 12:22:35 +01:00
Wim Taymans bba24b9ff8 pulse-server: return length of TAG_ARBITRARY
So that we don't have to know the length beforehand but can still
check it.
2020-11-03 12:14:09 +01:00
Wim Taymans bc46ead017 client: emit check access in global context
Drop the current client context to check permissions. This restores the
previous behaviour and fixes the permissions set by the portal module.
This fixes screen sharing again.

Fixes #362
2020-11-03 09:35:51 +01:00
Wim Taymans 6962c27af9 media-session: disable bluez5 and pulse-bridge by default
Some distros don't patch this up which interferes with the pulseaudio
server.

Fixes #360
2020-11-03 09:11:20 +01:00
Wim Taymans b63ea11834 pulse-server: create runtime directory if needed
Check if the pulse directory exists and create it if not.

Fixes #356
2020-11-02 20:05:18 +01:00
Wim Taymans a7d522c743 protocol: fix sign in error checks
Our errors are -errno
2020-11-02 16:46:13 +01:00
Wim Taymans b59eff4c29 pulse: handle EINTR from the custom poll function 2020-11-02 16:45:49 +01:00
Wim Taymans c43026d93e don't handle EINTR and EAGAIN as the same
EAGAIN means a non-blocking operation would block and we should not
try again right away but leave the loop and wait instead.

See #358
2020-11-02 16:43:56 +01:00
Wim Taymans e094640c7b handle EINTR and EAGAIN
Just do the call again instead of failing or logging an error.

Fixes #358
2020-11-02 14:51:07 +01:00
Wim Taymans 395a30b5d6 a2dp: fix sign of out_decoded 2020-11-02 09:16:59 +01:00
Grzegorz Uriasz c1530ba171 Use RegisterApplication in bluez5 for A2DP if possible 2020-11-02 09:14:37 +01:00