George Kiagiadakis
917cef25d8
policy: don't crash if some node properties are not set
...
- sanitize printing properties with tostring(), which will properly
convert nil values to the string "nil"
- ensure some properties become empty strings if they are nil
2021-06-04 18:36:19 +03:00
George Kiagiadakis
47ed9bb527
monitors: sanitize device names like media-session does
2021-06-03 18:58:49 +03:00
George Kiagiadakis
ee87161d29
default-routes: re-implement the default-routes module in lua
...
using the logic from the default-routes of pipewire-media-session
Fixes : #28 , #30
Related: !156
2021-06-03 16:26:28 +03:00
Julian Bouzas
35c7196454
policy: destroy node if defined target was not found and reconnect is false
...
Avoids number of PulseAudio Volume Control nodes to keep growing each time a
new client node is linked.
2021-06-02 16:42:15 +00:00
George Kiagiadakis
7c8b91c94e
policy-{node,endpoint-client}: do not crash if media.class is nil
2021-05-28 18:44:11 +03:00
Julian Bouzas
7741c2e43a
policy-endpoint-device: wait until previous links are activated
...
Makes sure links are activated before starting scanning again.
2021-05-24 11:07:59 -04:00
Julian Bouzas
bd90783398
m-si-standard-link: remove unused manage.lifetime configuration property
2021-05-24 11:07:59 -04:00
George Kiagiadakis
fd7b68dfd7
scripts: remove static-sessions
2021-05-21 19:57:31 +03:00
Julian Bouzas
b3b10db529
policy: don't link endpoints on startup
...
Sometimes the default device node might not exist when reevaluating endpoints
for the first time on startup, so the policy would link endpoints to another
device node. Then, the default device node appears and the policy moves the
endpoints to the default device node while the previous link has not finish its
activation yet. This race condition can cause endpoint links to fail when being
activated. Delaying the reevaluation of endpoint links until the first client
link is created avoids this issue.
2021-05-20 11:18:19 -04:00
Julian Bouzas
0ff0ef77f2
policy: reevaluate all linkables if one linkable was removed
...
Allows relinking client nodes to other devices if the current device has been
removed. This allows audio to keep playing in a different device if a bluetooth
device is disconnected.
2021-05-20 11:18:15 -04:00
Julian Bouzas
b8030e138d
alsa-monitor: activate BOUND feature in JACK device
2021-05-17 15:23:24 -04:00
Julian Bouzas
f0166d6b3c
policy: fix removing of item links when linkable is removed
2021-05-13 08:46:02 -04:00
Julian Bouzas
d68636f9b3
si-interfaces: rename WpSiPortInfo to WpSiLinkable
2021-05-11 10:56:44 -04:00
Julian Bouzas
ee121e3093
scripts: cleaned and improved policy scripts
...
The policy scripts can handle now client nodes that want to be linked with other
client nodes. This is needed for nodes created by the Pulse Audio Volume Control
to monitor audio comming from other application client nodes.
2021-05-10 15:24:40 -04:00
Julian Bouzas
b46a907df4
create-item.lua: always enable monitor ports by default
2021-05-10 15:19:25 -04:00
George Kiagiadakis
fc5aa7db1f
lua: rename Plugin() to Plugin.find()
...
Plugin() is confusing because it's not a constructor, it just finds
an existing instance of a plugin object. All other camel-case
functions are constructors in the current lua API.
2021-05-07 11:53:47 +03:00
George Kiagiadakis
272022b8ea
policy-node: accept node names or paths in a stream's node.target property
2021-05-05 18:26:16 +03:00
Julian Bouzas
48b4f00d8c
policy-endpoint-client-links.lua: consider 'suspend.playback' metadata
2021-05-04 19:52:14 -04:00
George Kiagiadakis
4f79bccbe8
policy-endpoint: implement volume ducking
2021-04-26 18:31:19 +03:00
George Kiagiadakis
42e75028d2
access: add a more generic "default" access policy script
...
Configurable. Replaces the "flatpak" access policy.
2021-04-26 16:56:17 +03:00
George Kiagiadakis
d1da39b4f6
policy-endpoint-client: remove handling of move & follow and endpoint priorities
...
These don't make much sense here. In the endpoint policy we want
the clients to be linked to the endpoint that matches their role
and never move.
Also, endpoint priorities are useless. If no endpoint matches the
role, then just ignore the client.
2021-04-15 18:14:25 +03:00
George Kiagiadakis
155ad32212
scripts: add policy for links between clients and endpoints
...
This script takes links that are created by policy-endpoint-client
and activates only the ones that should be active based on role
priorities
2021-04-13 19:37:06 +03:00
George Kiagiadakis
7d65dc2a09
static-endpoints: avoid capturing session item reference in the activate closure
2021-04-12 16:04:34 +03:00
George Kiagiadakis
45e0ad1092
policy: export endpoints, do not export endpoint links
...
As with endpoint streams, there is not much use for endpoint links
in this updated design. This will be re-evaluated.
2021-04-12 12:48:48 +03:00
Julian Bouzas
5c6d484d08
src: scripts: rename policy-endpoint.lua to policy-endpoint-client.lua
2021-04-09 14:21:03 -04:00
Julian Bouzas
5c781db216
m-audio-endpoint: remove target property
...
Links between endpoints and device nodes are done externally in LUA
2021-04-09 14:19:25 -04:00
Julian Bouzas
b93f84897a
static-endpoints.lua: don't export endpoints, only activate them
2021-04-09 14:18:05 -04:00
Julian Bouzas
12b1226b37
src: scripts: add policy-endpoint.lua script
...
Links items with media role set to existing endpoints. The target of the
endpoints is also configured.
2021-04-08 14:45:54 -04:00
Julian Bouzas
7482a05ca2
policy-node.lua: do not handle items with media role if endpoints exist
2021-04-08 14:41:06 -04:00
Julian Bouzas
941da10c28
policy-node.lua: clean up findTarget function
2021-04-08 14:38:31 -04:00
Julian Bouzas
9f77b98b10
src: scripts: add static-endpoints.lua script
2021-04-08 14:07:05 -04:00
Julian Bouzas
cc51bdb75e
create-item.lua: only create items for client and device nodes
2021-04-08 14:07:05 -04:00
Julian Bouzas
f0960a38b2
policy-item.lua: only handle si-audio-adapter and si-nodes links
2021-04-08 14:07:05 -04:00
Julian Bouzas
c5d28031e5
src: scripts: remove unneeded policy-endpoint.lua
2021-04-08 14:07:05 -04:00
Julian Bouzas
debef67f3f
policy-node.lua: fix param name typo when finding target
...
Fixes unespected issues when finding first available target
2021-04-06 09:48:01 -04:00
George Kiagiadakis
a1923d8152
policy-node: properly remove links between apps and capture devices
...
the previous logic was flawed and would only work for links between
app node <-> device sink node
2021-04-06 16:07:14 +03:00
Julian Bouzas
fb1daa0bf2
modules: use dots instead of dashes for session item properties
...
Keeps consistency with PipeWire
2021-04-02 11:22:22 -04:00
Julian Bouzas
e86ed8e763
policy-node.lua: support config.move and config.follow
2021-03-31 12:44:49 -04:00
George Kiagiadakis
0ecefcb55d
policy-node: use default-nodes-api plugin
2021-03-31 13:10:13 +03:00
Julian Bouzas
cb3445c077
policy-node.lua: fix type mismatch when comparing session item Ids
2021-03-30 14:52:42 -04:00
George Kiagiadakis
fd2ddffdd7
lua: s/Feature.Object.ALL/Features.ALL/
...
It looks nicer to have groups of features in 'Features.'
instead of 'Feature.'
2021-03-29 18:35:35 +03:00
Julian Bouzas
b7e347d92c
modules: remove endpoint impl on si-node, si-audio-convert and si-audio-adapter
2021-03-26 16:16:02 -04:00
Julian Bouzas
e3cc3c330d
src: scripts: add policy-node.lua to link port info session items
2021-03-26 16:16:02 -04:00
Julian Bouzas
f6ed14f997
src: scripts: add create-item.lua and remove create-endpoint.lua
2021-03-26 16:16:02 -04:00
George Kiagiadakis
95bb22efe2
monitor-alsa: add api.alsa.card.* properties on nodes
...
Useful for rule matching on nodes where the rules are also matching
properties of the card.
2021-03-26 17:29:25 +02:00
George Kiagiadakis
dd887a7b3e
bluez5: autoconnect bluetooth stream nodes
2021-03-25 18:13:47 +02:00
George Kiagiadakis
5c84f58b9e
bluez5: use api.bluez5.connection-info
...
This creates devices earlier, allowing the use of per-device
codec configuration via the standard rules
See pipewire/pipewire!509
2021-03-25 18:12:41 +02:00
Julian Bouzas
340213272e
m-si-adapter: rename to si-audio-adapter
...
Because it is only meant to be used with audio nodes
2021-03-18 14:47:22 -04:00
Julian Bouzas
120aab04ae
session-item: refactor and inherit from WpObject
...
This adds WP_SESSION_ITEM_FEATURE_ACTIVE and WP_SESSION_ITEM_FEATURE_EXPORTED
features, so _activate and _export APIs have been removed. Modules and unit
tests have also been updated.
2021-03-18 14:30:05 -04:00
Julian Bouzas
2747d21de2
m-si-monitor-endpoint: rename to si-monitor
2021-03-18 12:10:37 -04:00