Commit graph

4981 commits

Author SHA1 Message Date
Wim Taymans
4f0f5fccc9 pulse-server: keep metadata for the routes
Pass all metadata objects to the pulse-server and keep track of
some. Keep route restore info in properties.
2020-11-23 10:44:12 +01:00
Wim Taymans
1f73280c52 media-session: fix parsing of booleans and null
Reorder the json file a bit
2020-11-23 10:10:59 +01:00
Wim Taymans
77b8959df5 pulse-server: clear info in destroy to avoid segfault
Fixes #400
2020-11-23 09:43:40 +01:00
Wim Taymans
7ca8491be3 media-session: store values as json
Save settings as jason and use a small json compatible tokenizer to
load settings instead of our own less flexible format.
Save settings with a prefix and filter out entries without prefix
Listen for changes in restore.stream metadata and update properties.
2020-11-22 10:00:58 +01:00
Wim Taymans
b922f99293 restore-stream: expose stream restore info in metadata 2020-11-20 18:01:20 +01:00
Wim Taymans
5af2efdaa6 media-session: expose metadata method
Expose a method to create an export metadata with a certain name.
2020-11-20 17:58:08 +01:00
Wim Taymans
d822a0b1d0 pw-metadata: make it possible to select metdata by name 2020-11-20 17:47:21 +01:00
Wim Taymans
d5680a119f pulse-server: Fix REQUEST missing bytes
Also count the amount of underrun bytes as missing so that we request
them from the client.

Provide one fragment of minreq when we underrun instead of the full
buffer size.

Fixes #395
2020-11-20 14:57:18 +01:00
Wim Taymans
dae64bd2b5 policy-node: keep track how many times we link a node
Nodes that are marked as DONT_RECONNECT are only linked once.
Fixes a problem where a clients makes a DONT_RECONNECT stream but
without a specific sink.

See #395
2020-11-20 14:54:37 +01:00
Wim Taymans
00ac94ab9b fix compilation 2020-11-20 12:51:51 +01:00
Wim Taymans
b3aa346063 handle core error better
Use the PW_ID_CORE constant
Quit the mainloop when server disconnected in the tools

See #395
2020-11-20 12:29:51 +01:00
Wim Taymans
387009e0d6 return ENOENT for unknown resources
Fix some other errors as well, ENOSYS for invalid interface, ENOTSUP
for unimplemented methods.
2020-11-20 12:11:37 +01:00
Wim Taymans
12d831fc39 pulse-server: request dbus name
Request the org.pulseaudio.Server dbus name. This makes gnome-shell
reconnect automatically.
2020-11-20 11:52:57 +01:00
Wim Taymans
fc2b0b20ad hook: zero hooks before adding them
Clear the hook before adding it so that we are sure the removed
callback doesn't contain garbage and cause a crash on disconnect.

Mark the removed and priv fields as private. Make sure to add the
removed callback after adding the hook.

Fixes a crash in kwin
2020-11-20 09:40:24 +01:00
Wim Taymans
4d085816ef pulse-server: improve debug 2020-11-19 17:45:19 +01:00
Wim Taymans
09d373f094 0.3.16 2020-11-19 16:27:20 +01:00
Wim Taymans
55982c75db pulse-server: make sure we always have 1 profile
Synthesize an off profile and make it the active profile if
we don't have any profiles.

See #393
2020-11-19 13:27:21 +01:00
Wim Taymans
fb44d3428c jack: block some cases
Refuse to run when we run in the daemon, we can't really do a blocking
connect to the daemon from its main thread.

Also refuse to run when we detect an old pipewire libaray. Blocks the
case where some app linked against 0.2 wants to use the replacement
libjack.so.
2020-11-19 12:37:10 +01:00
Wim Taymans
6a244592a0 main: set PIPEWIRE_INTERNAL env
So that we can detect if we running in the daemon
2020-11-19 12:36:14 +01:00
Wim Taymans
d2c2edb7ce protocol-native: rework resume of busy client
If a client becomes unbusy again, signal a resume event so that the
messages are processed in the next mainloop iteration. This gives the
current iteration time to perform cleanups if needed.

Remove the look hook and always do flushing with an IO_OUT event. Rework
some things so that we can flush right after processing input without
having to go through a loop iteration.

See #298
2020-11-19 11:57:36 +01:00
Wim Taymans
505ae98b0f pulse-server: fix sink-input mute 2020-11-19 11:56:51 +01:00
Wim Taymans
7434986452 context: return -ENOENT for destroyed globals
Set the destroyed flag on globals and make sure they are not
available anymore during the signal emissions. One such instance
is where a global is destroyed, the resources are destroyed,
a waiting client is resumed, the clients asks to bind to the
global and causes an error.

See #298
2020-11-19 11:34:44 +01:00
Wim Taymans
908dc6b10f pulse-server: don't add queued samples
It makes things worse
2020-11-18 20:21:14 +01:00
Wim Taymans
3eca7557f8 pulse-server: fix timestamp in latency query
We are supposed to place the current timeofday as the timestamp
in the reply.
2020-11-18 20:15:20 +01:00
Wim Taymans
38763da20f pipewire: also set journal log level 2020-11-18 17:43:24 +01:00
Wim Taymans
04aa5472d3 journal: make it possible to set level from info 2020-11-18 17:42:47 +01:00
Wim Taymans
cb203e38c3 pulse-server: make sure active_profile_name is not NULL
Fixes #390
2020-11-18 17:19:17 +01:00
Wim Taymans
1908c88cfc manager: notify of changed sink/source
When the Route param changes on the card, find the associated
device and mark it as modified. Fixes volume changes in gnome-shell
and pavucontrol.

See #377
See #298
2020-11-18 17:07:03 +01:00
Wim Taymans
f7162799f6 message: add module-stream-restore.id property
This should contain the key used to restore the stream volumes and
setting and is used by pavucontrol and gnome-volume-control to
ignore event streams. Fixes slider in pavucontrol and maybe also
the weird volumes in gnome-shell.

See #377
2020-11-18 15:51:40 +01:00
Wim Taymans
4cc466ad64 pulse-server: filter out redundant subscribe messages 2020-11-18 15:00:38 +01:00
Wim Taymans
935851a6a6 spa: add safe_reverse function 2020-11-18 15:00:01 +01:00
Wim Taymans
89cb39badd pipewire-pulse: fix help string 2020-11-17 21:04:02 +01:00
Wim Taymans
7ac23c8b82 improve some docs about options
See #387
2020-11-17 21:00:17 +01:00
Wim Taymans
c50b5bb072 pulse-server: implement flush for record stream 2020-11-17 17:39:30 +01:00
Wim Taymans
8c0f27c016 audioadapter: emit xrun when source can't produce data 2020-11-17 17:18:14 +01:00
Wim Taymans
79fb95bf90 stream: implement Flush
Flush out pending samples in the resampler
Set the io area status to _OK so that buffers are recycled and
new buffers produced.
2020-11-17 17:15:26 +01:00
Wim Taymans
cd25a1e5e7 pulse-server: PLAY_SAMPLE does not need a valid sink id or name 2020-11-17 17:14:28 +01:00
Wim Taymans
01b473e695 protocol-native: handle peersec errors better
Only warn if something is really wrong otherwise just log with
info and don't set the property.

Fixes #385
2020-11-17 13:22:04 +01:00
Wim Taymans
14f68565ad protocol-native: refactor handle client errors
So that we don't spam the log with warnings

See #385
2020-11-17 13:09:49 +01:00
Wim Taymans
813af52072 pulse-server: play the sample on the right sink 2020-11-17 12:59:09 +01:00
Wim Taymans
ff1b49eb81 pulse-server: add skeleton extension for stream-restore
Makes the system-volume slider show up again in pavucontrol
and gnome-control-setting. Does not work yet, though.
2020-11-17 12:33:09 +01:00
Wim Taymans
11a57c9302 pulse-server: add debug level to message_dump 2020-11-17 12:33:09 +01:00
Wim Taymans
f818da96fc pulse-server: use define for monitor flags 2020-11-17 12:33:09 +01:00
Wim Taymans
242cddd371 pulse-server: add support for proplist value conversion 2020-11-17 12:33:09 +01:00
Wim Taymans
573e2afd5e bluez5: fix compilation of fallback Hsphfpd backend 2020-11-16 20:27:55 +01:00
Frédéric Danis
6308c5d806 bluez5: backend-hsphfpd: Add mSBC support
mSBC can be enabled by passing "bluez5.msbc-support=true" parameter to
pipewire-media-session.
mSBC is automatically selected if remote device supports it.
2020-11-16 18:15:39 +01:00
Frédéric Danis
7d28b51713 bluez5: Add mSBC support to sco-source
This has been tested with a UART Bluetoth chipset, on a Raspberry Pi 3.
It may work with USB Bluetoot chipset/dongle.
2020-11-16 18:15:39 +01:00
Frédéric Danis
1759aa834f bluez5: Add mSBC support to sco-sink
This has been tested with a UART Bluetoth chipset, on a Raspberry Pi 3.
It doesn't seem to work with USB Bluetooth chipset/dongle.
2020-11-16 18:15:39 +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