Commit graph

3341 commits

Author SHA1 Message Date
Wim Taymans
108bf82a10 context: improve param debug
Make it possible to log more info in the param debug functions
2020-06-18 15:29:21 +02:00
Wim Taymans
6495199a7a pw-mon: debug param id names 2020-06-18 12:54:17 +02:00
Wim Taymans
6160711723 stream: change serial when the param changed
Observers check the flags to see if there is a change. The serial
can be used to toggle a change when no other flags change.
2020-06-18 12:53:23 +02:00
Wim Taymans
8ee91bd738 examples: don't hardcode dimensions for crop info 2020-06-18 11:43:34 +02:00
Wim Taymans
389b4a72f8 context: keep passive links negotiated
Always make sure passive links are prepared so we can follow them
and use them to activate nodes.
2020-06-17 14:09:42 +02:00
Wim Taymans
741a2b3dcc link: variables are already set in update_state 2020-06-17 13:18:52 +02:00
Wim Taymans
16d61e98e8 link: implement passive links again
Check if a driver is only connected to other nodes with passive
links, if that's the case, set the driver and all followers in
IDLE.
2020-06-17 12:22:58 +02:00
Wim Taymans
2a11e66417 client-node: clear array fields 2020-06-16 21:22:06 +02:00
Simon McVittie
b852b58f82 Optionally install examples and tests
This makes it easier to test PipeWire in its "as-installed" state,
for example in an OS distribution.

The .test metadata files in ${datadir}/installed-tests/${package} are
a convention taken from GNOME's installed-tests initiative, allowing a
generic test-runner like gnome-desktop-testing to discover and run tests
in an automatic way.

The installation path ${libexecdir}/installed-tests/${package} is also
a convention borrowed from GNOME's installed-tests initiative.

In addition to the automated tests, I've installed example executables
in the same place, for manual testing. They could be separated into
a different directory if desired, but they seem like they have more
similarities with the automated tests than differences: both are there
to test that PipeWire works correctly, and neither should be relied on
for production use. Some examples are installed in deeper subdirectories
to avoid name clashes.

Signed-off-by: Simon McVittie <smcv@debian.org>
2020-06-16 17:58:02 +00:00
Wim Taymans
3859b14adf client-node: dynamically allocate the mix structs 2020-06-16 18:21:58 +02:00
Wim Taymans
eac046a86b client-node: place invalid mix at begin instead of end
..so that we can resize the array later.
2020-06-16 17:52:39 +02:00
Wim Taymans
fb1ea646f5 client-node: remove unused field, add some debug 2020-06-16 17:41:54 +02:00
Wim Taymans
cd7a56a71c gst: fix proxy leaks 2020-06-16 11:02:16 +02:00
Wim Taymans
61c1fe546e client-node: fix buffer size calculation
Calculate the size of the buffer as the difference between the first
byte and the last byte. This takes into account the alignment.
2020-06-15 20:44:08 +02:00
Wim Taymans
fd0ebdd74a stream: only set MAPPED flag when mmaped 2020-06-15 17:54:37 +02:00
Wim Taymans
4743a423e8 stream: only remove buffer when added 2020-06-15 17:40:29 +02:00
Wim Taymans
8ecae0785b stream: don't reset flags
Or else we lose the MAPPED flag and we don't unmap (not that it's
a problem because it gets unmapped when we close the fd).
2020-06-15 17:39:33 +02:00
Wim Taymans
d3f29f048f meson: use join_paths to join paths 2020-06-10 13:28:15 +02:00
Wim Taymans
baf11b22d4 meson: use the right config file 2020-06-10 13:24:21 +02:00
Florian Klink
d1162f28ef pipewire.conf.in: use absolute path to pipewire-media-session
So pipewire daemon is able to find pipewire-media-session from the
location it's installed to, even when it's not in $PATH.

For the `pw-ininstalled.sh` and `make run` invocations, provide a
`src/daemon/pipewire-uninstalled.conf` that still uses the relative
path, but isn't installed.
2020-06-10 13:20:25 +02:00
Wim Taymans
014e48c1f1 protocol: add workaround for bad v0 clients
Fix up clients that say they have fixed properties while in fact
they are not. Assume that when there are alternatives, the property
was in fact not fixed.
2020-06-09 13:22:07 +02:00
Wim Taymans
62dd58a604 client: remove busy state from client in resource destroy
When a resource is doing an operation that sets the client in the busy
state, make sure we unblock the client again when the resource is
destroyed before we could complete the operation or else the client
is stuck forever.
2020-06-09 10:59:58 +02:00
Wim Taymans
f278ded975 example: use thread loop in example 2020-06-08 17:14:36 +02:00
Wim Taymans
180f2b0f20 client-node0: clean up resource 2020-06-08 17:14:36 +02:00
Wim Taymans
d566c8858c port: don't send reuse_buffer on node again
When we get a reuse_buffer on the input mixer we should find the
linked mixer and send the reuse_buffer to that one, not the node
itself.
2020-06-08 14:19:13 +02:00
Wim Taymans
dac60d4e5b avoid some leaks and NULL pointer derefs 2020-06-08 11:15:53 +02:00
Wim Taymans
2fd64f1591 connection: dup and close fds
dup the fd when added to the outgoing buffer and close it againç
when sent. This ensures the fd remains valid in the buffer. A
quick add/remove of memory before a buffer flush could close the
fd before we can send it and then we get a bad fd and disconnect
the client.
2020-06-05 17:36:03 +02:00
Wim Taymans
aaaa541775 stream: don't destroy proxy twice
When the proxy was removed, we remove the event listener and don't
set the proxy to NULL because the destroy event is not called anymore.
If we then call disconnect twice, we try to destroy the proxy again
and assert.
2020-06-05 17:34:16 +02:00
Wim Taymans
2462cac4f2 add some more debug 2020-06-05 16:44:35 +02:00
Wim Taymans
51ae60b0c4 portal: fix small leak 2020-06-05 15:49:39 +02:00
Wim Taymans
0efadbb297 client-node: free old mem after setting new mem 2020-06-05 13:04:43 +02:00
Wim Taymans
972a790cf2 client-node: send error when node_set_io fails 2020-06-05 13:03:16 +02:00
Wim Taymans
bf4ccc00bf stream: destroy proxy
When our proxy is removed or when we destroy it, remove our listeners
and go to the unconnected state.

Destroy the proxy in all cases.
2020-06-05 12:43:26 +02:00
Wim Taymans
969377b079 client-node: simplify cleanup
Remove the extra proxy to the node, it's awkward and not needed.
pw_core_export() returns a handle to the remote object with the
interface of the factory.

If the node is destroyed, make sure the proxy doesn't access
it anymore.

If the handle is removed or destroyed, make sure we remove the
proxy related info around the node. Never destroy the proxy
ourselves, this is something the app needs to do when it is
ready.
2020-06-05 12:43:26 +02:00
Wim Taymans
ade5bcb58d local-v4l2: fix leaks 2020-06-05 12:43:26 +02:00
Wim Taymans
cecbf3191b example: use bound event to find node id 2020-06-05 12:43:26 +02:00
Wim Taymans
ef770f9ccf proxy: debug more errors 2020-06-04 20:58:39 +02:00
Wim Taymans
1b4b8a9322 gst: check for NULL stream
The stream can already be closed when the buffers are recycled.

Fixes: #243
2020-06-04 20:29:41 +02:00
George Kiagiadakis
1c86ed8263 resource: fix errno printout in error message
res holds the real error code at this point in the code,
errno needs to be set so that %m can work below
2020-06-04 18:13:33 +00:00
Wim Taymans
ed31ca30cd media-session: improve cleanup of objects
Don't try to use the proxy destroy event to destroy the objects.
It is not called automatically anymore, only when we call
pw_proxy_destroy() ourselves.

Destroy the proxy objects when we destroy the session managed
object instead, either when the global is removed or when we
explicitly call _destroy()

Add an object free signal to clean up final resources after the
proxies have been destroyed, like closing libraries.

Track and destroy our link proxies.
2020-06-04 17:41:01 +02:00
Wim Taymans
47ae56df7d core: improve debug 2020-06-04 17:31:29 +02:00
Wim Taymans
4abd02be4b proxy: debug bound id 2020-06-04 17:31:02 +02:00
Wim Taymans
5d5bb23e2b proxy: add pw_proxy_ref() private method 2020-06-04 17:30:41 +02:00
Wim Taymans
5ad8491371 pipewire: make pw_init() work after pw_deinit() 2020-06-04 17:29:32 +02:00
Wim Taymans
eb74b2bf94 buffers: fix warning 2020-06-04 16:59:14 +02:00
Wim Taymans
d69ff4514d tools: fix leaks 2020-06-04 12:49:15 +02:00
Wim Taymans
49619f2b1e tools: fix leaks 2020-06-04 12:41:56 +02:00
Wim Taymans
fa04d2ee1b profiler: fix some leaks 2020-06-04 12:37:56 +02:00
Wim Taymans
30571d4706 tools: fix some leaks 2020-06-04 12:35:16 +02:00
Wim Taymans
0ee7d8119c core: only warn about leaked proxies
Only give a warning about the leaked proxies and set the core
pointer to NULL. Make sure the proxy handles the NULL pointer in
destroy.
2020-06-04 12:33:16 +02:00