Wim Taymans
242cddd371
pulse-server: add support for proplist value conversion
2020-11-17 12:33:09 +01:00
Wim Taymans
5849bd7c60
pulse-server: try to flush immediately
...
When we queued new data and were not flushing already, try to flush
the data immediately.
2020-11-16 17:05:11 +01:00
Wim Taymans
0fada77433
pulse-server: delay flushing messages
...
Delay flush of messages to better match pulseaudio. We can later
also filter duplicates and redundant events.
2020-11-16 16:59:55 +01:00
Wim Taymans
55bd34c9e7
pulse-server: always ask for tlength samples after flush
2020-11-16 15:47:13 +01:00
Wim Taymans
dcda6c259f
pulse-server: send drain only once
2020-11-16 15:42:04 +01:00
Wim Taymans
af41e3423d
pulse-server: handle recv of 0 bytes
...
0 bytes from recv means EOS and we can disconnect the client instead
of looping forever.
2020-11-16 15:36:51 +01:00
Wim Taymans
9f9be7d7f2
pulse-server: clean up killed and errored streams
...
Make a stream in error or unconnected as done and run the cleanup
loop to destroy them. Fixes leaks caused by pavucontrol.
2020-11-16 13:31:15 +01:00
Wim Taymans
78ab2c3cad
pulse-server: pass right object to TAG_PROPLIST
2020-11-16 11:10:41 +01:00
Wim Taymans
0ff7321a65
pulse-server: send right id in PLAY_SAMPLE reply
...
Also handle errors.
2020-11-15 21:02:49 +01:00
Wim Taymans
80e063c6bc
pulse-server: add duration to sample
2020-11-14 13:36:26 +01:00
Wim Taymans
8f1eed6ab1
pulse-server: implement sample introspection
2020-11-14 13:31:07 +01:00
Wim Taymans
827d3ff271
pulse-server: set refcount on sample
2020-11-14 13:30:35 +01:00
Wim Taymans
13a1049abf
pulse-server: also handle @DEFAULT_*@ in GET_*_INFO
2020-11-13 20:20:33 +01:00
Wim Taymans
b7b7c3817e
pulse-server: use cleanup event
...
Signal event to trigger cleanup from places where we are not allowed
to destroy objects, like from their signals.
2020-11-13 19:33:12 +01:00
Wim Taymans
b447167339
pulse-server: actually play the sample from the cache
2020-11-13 18:19:56 +01:00
Wim Taymans
1d8bef1133
pulse-server: fix check type, then check info
...
If the object is not of the right type, the info might not be of
the right type and we should not deref it.
2020-11-13 17:38:23 +01:00
Wim Taymans
8b9d398df6
pulse-server: implement sample cache
2020-11-13 13:28:46 +01:00
Wim Taymans
22cec7823e
pulse-server: skip objects being created
...
Skip iterating over objects that still have pending updates.
Make sure we have all info and properties before we process
objects.
Fixes #376
2020-11-13 09:52:02 +01:00
Wim Taymans
10207456f0
media-session: don't start pulse-bridge automatically
...
Don't start the pulse-bridge automatically because we don't
know what socket to listen on.
Also, listen by default on a safe socket, not used by pulseaudio.
2020-11-12 16:50:24 +01:00
Wim Taymans
024b9dc0ca
pulse-server: remove unused code
...
We already checked the systemd sockets above and never call is_stale
for them.
2020-11-12 15:58:42 +01:00
Wim Taymans
044876b51c
pulse-server: improve error message
2020-11-12 15:44:05 +01:00
Wim Taymans
4eb3cc37ea
pulse-server: add socket activation
2020-11-12 15:35:35 +01:00
Wim Taymans
5bfc3b90ef
pulse-server: improve error log
2020-11-12 15:13:33 +01:00
Wim Taymans
34cc13a60c
pulse-server: set the right error when socket is busy
2020-11-12 14:54:58 +01:00
Wim Taymans
5ebb95a346
pulse-server: improve debug, add client name
2020-11-12 13:33:25 +01:00
Wim Taymans
593c183166
pulse-server: improve stale socket detection
...
Only declare stale when ECONNREFUSED and not socket activated.
2020-11-12 13:02:18 +01:00
Wim Taymans
6e2ab9973b
pulse-server: alsa safely make native socket
...
Only make the native socket when it's not there or when it appears
dead when we can't seem to connect to it.
- When the socket is not found, we take it.
- When an existing pulseaudio is running we won't unlink and take
over the socket because we can connect to it
- When a crashed pulseaudio leaves a stale socket, we fail to
connect and then we unlink and take over.
2020-11-12 12:17:12 +01:00
Wim Taymans
c368768b93
pulse-server: append remote name to native socket
...
This way we don't interfere with the pulseaudio daemon in any way
and we can implement fallback to pulse-server in the pulseaudio
client library config file.
2020-11-12 11:01:57 +01:00
Wim Taymans
6c7a84a0ff
pulse-server: rate limit the underrun warnings
2020-11-12 10:17:19 +01:00
Wim Taymans
239615f5ae
pulse-server: improve some debug
2020-11-09 16:53:18 +01:00
Wim Taymans
99fcc95d18
pulse-server: don't leak formats
2020-11-09 16:51:34 +01:00
Wim Taymans
ecf10e0b1c
pulse-server: remove useless allocation
2020-11-09 15:51:58 +01:00
Wim Taymans
a0b2e5b498
pulse-server: improve stream cleanup
...
Make sure we finish processing of the pending messages before
destroying the stream.
2020-11-09 15:35:50 +01: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
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
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
b659fa580a
pulse-server: improve error reporting
2020-11-04 10:24:39 +01:00
Wim Taymans
12cefd2461
pulse-server: handle no_remix flag
2020-11-03 21:01:24 +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
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
dd45a27d86
pulse-server: improve error message
...
See #356
2020-11-02 09:08:42 +01:00