Commit graph

584 commits

Author SHA1 Message Date
Barnabás Pőcze
5218afc7e8 pw-link: pass false instead of NULL for bool parameter 2024-02-27 08:32:56 +00:00
Barnabás Pőcze
d84101d97f pw-link: free target_link objects at the end 2024-02-27 08:32:56 +00:00
Ruben Gonzalez
15bdab89c3 logger: minor performance improvement to avoid syscall done by isatty 2024-02-17 11:42:12 +00:00
Julian Bouzas
0e5bbea36c pw-dot: group nodes by node.link-group 2024-02-13 16:38:48 +00:00
Julian Bouzas
20de0ab96a pw-dot: truncate escaped string values to 128
This avoids objects in the graph being too big if one of their properties has
a long value (Eg 'pipewire.sec.label' in the client objects).
2024-02-13 16:38:48 +00:00
Wim Taymans
efd22efff8 pw-link: improve port and node names
don't leave the port and node names blank but fill in some defaults that
include the node/port id.
2024-02-12 17:14:33 +01:00
Julian Bouzas
64eaaf27ab pw-dot: fix modules not being linked correctly
This fixes a regression caused by commit 0b5cdf3f
2024-02-09 10:54:21 -05:00
Julian Bouzas
02050ae812 pw-dot: support properties with quotes
If a pipewire property has quotes, the DOT graph fails to be generated because
they are not escaped. This patch fixes this by escaping the quotes from a
pipewire property value before adding it to the graph
2024-02-09 14:46:40 +00:00
Julian Bouzas
0b5cdf3fd8 pw-dot: improve allocation of the DOT data string
This changes avoids constantly reallocating the DOT data string every time
someting is added. We now always allocate a DOT data string of size 2048, and
we only reallocate by size * 2 if we need more data.
2024-02-09 14:46:40 +00:00
Wim Taymans
27dbbd40c9 tools: improve indentation 2024-02-09 10:24:34 +01:00
Wim Taymans
8657caa0ac pw-cli: set quit flag on -EPIPE
When the server closes the connection in non-interactive mode, we need
to set the quit flag to avoid going into second mainloop_run() that will
just block forever.

See #3837
2024-02-06 11:10:27 +01:00
Théo Lebrun
28df14859a pw-link: handle link proxy removal 2024-02-01 13:35:30 +01:00
Théo Lebrun
ecffe3cbd6 pw-link: handle link proxy destruction
If for some reason the proxy gets destroyed, we make sure to remove
listeners and forget the proxy pointer. We do not however delete the
target_link; we consider the proxy destruction as an error.

If another definitive state occured on the link (got to paused state,
got an error), then that event will be ignored. Else we consider it an
error.
2024-02-01 12:08:15 +01:00
Théo Lebrun
7ebc1b05d2 pw-link: --wait: allow linking with nodes
Previously, on new node event, we registered a core sync. Linking was
attempted at core sync done  but the node did not yet have time to
register its ports.

Only listen to new ports. This delays the linking attempt to when nodes
have had time to create their ports.
2024-02-01 10:47:49 +00:00
Théo Lebrun
6a7d83f051 pw-link: listen to link info events to detect link creation
Stop using sync for link creation detection. Instead, listen to link
events.

We still listen to errors, link info events are not enough. For example,
if a link already exists, we only get a proxy error and no link info
event.
2024-02-01 10:47:49 +00:00
Théo Lebrun
5169941908 pw-link: add --wait option
Now that we have a create_link_proxies() that looks for our matching
nodes/ports and creates proxies if they exist, implementing --wait is
easy.

We move the call to create_link_proxies() the core done event. If it
finds no potential nodes/ports, we keep running our loop, monitoring
new objects.
2024-02-01 10:47:49 +00:00
Théo Lebrun
54662ad209 pw-link: refactor do_link_ports() to not run the event-loop
Make do_link_ports() only create proxies. Previously it ran the event
loop once per attempted link to detect link creation errors. Rename it
to create_link_proxies() to make things clear.

Created proxies are stored into a list (data->link_targets).
create_link_proxies() returns the number of link proxies created. This
can be zero when the two matching nodes have zero ports.

Refactor main() to use create_link_proxies(), ask for a sync then run
the event loop. It will stop on sync done, and we will have received
all potential link proxy errors.

Cleanup all proxies and listeners at the end of main().
2024-02-01 10:47:49 +00:00
Théo Lebrun
e8d104f7bc pw-link: move output/input option checking before main event loop run 2024-02-01 10:47:49 +00:00
Wim Taymans
a769a014e0 stream: rename requested to size in pw_time
Now that both the expected input and output of the resampler is placed
in the rate_match, rename the 'requested' field in pw_time to 'size'
and update the docs.

See #3750
2024-01-16 15:11:08 +01:00
Wim Taymans
1bbaf270f8 stream: add resample size to pw_time
Now that the resampler input size is set in the io_rate field when we
start we can add it to the pw_time struct as well.

This way we can know the required resampler input without having
to dequeue a buffer. This can be handy when the stream is a driver
and needs to know how much data to accumulate before starting the graph.

See #3750
2024-01-15 15:35:33 +01:00
Barnabás Pőcze
d8ab51a9fc pw-top: use media.name as display name
Try to use `media.name` as the display name for a node
when none of the other keys are found in its properties.

For example, `pw_stream_new_simple()` only sets `media.name`
on the created node object by default.
2024-01-12 02:12:55 +01:00
Barnabás Pőcze
9d439bac06 pw-top: update name when it changes
Recalculate the display name for a given node after its properties change.
2024-01-12 01:47:05 +01:00
Barnabás Pőcze
e2d3f9140b pw-reserve: fix potential DBusMessage memory leak
Our reference to the message must always be dropped,
even if `dbus_connection_send()` fails.
2024-01-08 10:55:02 +00:00
Barnabás Pőcze
72d5417857 pw-reserve: use arg0namespace for dbus match rule
Only names in the `org.freedesktop.ReserveDevice1` namespace
are interesting for the purposes of device reservation, so
use `arg0namespace` in the dbus match rule to filter out others.
2024-01-08 10:55:02 +00:00
Wim Taymans
94f898ddc5 stream: check requested before use
It can be 0 and so we should fill the complete buffer.

Fixes #3683
2023-11-30 11:10:47 +01:00
Pauli Virtanen
b12119da28 pw-reserve: require valid name + check rd_reserve_new errors
Empty name in rd_device_new triggers assert inside DBus, so bail out
before that.
2023-11-28 10:26:43 +00:00
Théo Lebrun
38157a8937 pw-top: fix version constant used for pw_node_events
This changes the value declared (3 currently versus 0 following this
patch). I have not seen code checking this version number.

Signed-off-by: Théo Lebrun <theo.lebrun@bootlin.com>
2023-11-02 12:42:50 +01:00
Pauli Virtanen
963ea1f57c tools: make pw-dump/mon/top try to connect to the default manager socket
These tools are used for debugging, and should default to connecting to
the manager socket if present.
2023-10-24 07:08:07 +00:00
Wim Taymans
b3f8df6dfc pw-cat: don't overrun our param array 2023-10-11 13:34:18 +02:00
Wim Taymans
dcad1243a8 pw-cli: avoid NULL deref
info can be NULL so use the update instead.
2023-10-06 08:50:22 +02:00
Wim Taymans
53a4a124aa pw-cli: handle some allocation failures or NULL info 2023-10-05 11:16:57 +02:00
Wim Taymans
be1a60c5f9 pw-cat: add DFF file suppport 2023-10-02 16:51:37 +02:00
Barnabás Pőcze
436787d6ba treewide: try to use const char * for string literals 2023-09-16 17:47:35 +02:00
Simon Ruderich
615f950c2f pw-top: add missing options to man page and improve --help output 2023-09-11 18:50:24 +00:00
Stefan Ursella
cacdcc1b62 pw-mon: add filter param to hide props and/or params 2023-09-11 17:42:14 +00:00
Wim Taymans
ebeae802ad audioconvert: improve tag and latency handling
Don't just forward the tag and latency events to the follower but let
the audioconvert aggregate and emit the updated tag/latency event
that is then configured on the follower.

When using the DSP mode of the audioconvert, this results in an
accumulated latency/tag from all the DSP ports instead of just
the last DSP port param update.

Put properties with media. prefix in tags in pw-cat.
2023-09-07 15:27:21 +02:00
Wim Taymans
d7f7fd258d pw-cat: set default properties after setup
So that we can still set the MEDIA_NAME from the artist/title.
2023-09-07 10:05:15 +02:00
Peter Hutterer
26ecde20b9 pw-mon: check stdout, not stderr for tty
Commit afc88a12e5 changed pw-mon to use printf so we now need to check
stdout to know whether we need to print with colors.
2023-08-25 13:32:41 +00:00
Stefan Ursella
71653e04d2 pw-top: add 'batch-mode' and iterations known from top 2023-08-23 09:53:51 +00:00
Stefan Ursella
7f30621b86 pw-top: format 'show_help' and sort options 2023-08-23 09:53:51 +00:00
Wim Taymans
390f6c9cb8 perm: add a new L permissions
When a client has the L permission on the node, it can make links
between the node even if the owner of the node can't see the other node.
2023-07-28 11:01:43 +02:00
Wim Taymans
0ab6452b7e pw-cat: exit when we are unconnected
We get unconnected when the session manager kills us when it can't
make a link.

See #2731
2023-07-26 16:03:40 +02:00
Barnabás Pőcze
fe45786a5d treewide: add some examples for the spa_auto* macros 2023-07-11 14:23:53 +02:00
Wim Taymans
d5d8ebeaac pw-cat: only override properties when not already set
This makes it possible to override any of the properties with -P such as
the graph rate.
2023-06-30 16:24:13 +02:00
Wim Taymans
2d253de359 module-profiler: add per client xrun count in profiler data
So that pw-top can show the client xruns instead of the driver xruns
2023-06-02 13:23:55 +02:00
Wim Taymans
3f46044c39 impl-node: update xrun_count of late nodes
When the graph didn't complete, update the xrun_count in each node
that didn't complete.

We can then remove the code to simulate that from pw-top.
2023-05-22 10:24:51 +02:00
Wim Taymans
2ed65a7e36 profiler: improve profiler stats
The driver and follower signal times are currently the same timestamp
so allow a 0 difference between the driver and follower signal time
to calculate the scheduling delay.
2023-05-06 10:54:57 +02:00
Wim Taymans
181cbc5c99 pw-config: fix include for isatty 2023-04-20 10:40:47 +02:00
Wim Taymans
e90e948166 man: add pw-config man page 2023-04-20 10:24:29 +02:00
Wim Taymans
2d388c6908 properties: add color support for dumping properties 2023-04-20 10:02:08 +02:00