Commit graph

4961 commits

Author SHA1 Message Date
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
George Kiagiadakis
5c749cf7c3 alsa-acp: bind the acp log func to the spa_log object directly
When the acp-device impl struct is passed to the log func, it is
possible that when this device is removed, another device using acp
is going to crash while logging a message
2020-11-02 08:10:29 +00:00
Wim Taymans
dd45a27d86 pulse-server: improve error message
See #356
2020-11-02 09:08:42 +01:00
Wim Taymans
94dbd4f9b8 warn about and fix some -Wpointer-sign warnings 2020-11-02 09:03:53 +01:00
Oschowa
92c541ea03 pipewire-alsa: Make sure to always fill the pipewire buffers with
silence on process if there is not enough data.
This fixes noise with the retroarch alsa backend on pause, which doesn't
actually pause the device.
2020-11-01 19:28:38 +01:00
Oschowa
86acbabe8f pipewire-alsa: implement pause 2020-11-01 19:04:37 +01:00
Oschowa
d960724dfc pipewire-alsa: fix inconsistent formating (tabs vs. spaces) 2020-11-01 18:38:46 +01:00
Wim Taymans
165ad6e758 pulse-server: don't ever block
Handle EAGAIN and EWOULDBLOCK and go back into the poll loop instead
of blocking.
2020-10-31 21:21:00 +01:00
Wim Taymans
4bb859fb82 pulse-server: use name if description not set 2020-10-31 21:20:39 +01:00
Wim Taymans
98b1b8090d pulse-server: don't underrun when draining 2020-10-31 15:22:32 +01:00
Wim Taymans
3960a88478 0.3.14 2020-10-30 15:35:26 +01:00
Wim Taymans
12b4d6d965 impl-client: finish register when updating properties
Also handle client client registration when old clients
update the properties.
2020-10-30 12:56:58 +01:00
Wim Taymans
21bda3102b connection: do version check only once 2020-10-30 12:56:37 +01:00
Wim Taymans
0ef41252bd access: debug access control some more 2020-10-30 11:54:39 +01:00
Wim Taymans
58cc4848f2 client: do access check after receiving properties
After we receive the properties from the client, do the access check
and then pause client messages until the session manager sets
client permissions.

Without this we would do access control right after creating the
client which would block the client messages, which would then never
register the global of the client, which would leave the client
blocked forever because the session manager doesn't see the client
and can't configure permissions.

Fixes #352
2020-10-30 11:02:08 +01:00
Wim Taymans
3f24333315 module-access: update client permissions with full access
Set the current-client to NULL while updating the permissions of
a new client.
2020-10-30 11:00:37 +01:00