Commit graph

3989 commits

Author SHA1 Message Date
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
64fc8dda20 stream: check for NULL context
If a stream was killed, the context is cleared. Disconnecting a killed
stream should not crash but return BADSTATE.
2020-06-08 11:58:32 +02:00
Wim Taymans
65798ca566 context: only set TERMINATED when -EPIPE
Other errors don't cause the connection to terminate.
2020-06-08 11:57:51 +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
c13c028ebb bluez5: fix leaks 2020-06-05 15:49:39 +02:00
Wim Taymans
51ae60b0c4 portal: fix small leak 2020-06-05 15:49:39 +02:00
Simon McVittie
e493be3844 scripts: Use special ${LIB} token for architecture-independence
On GNU/Linux systems, the literal string '${LIB}' in dynamic linker
paths expands to "lib", a biarch libQUAL directory such as "lib64", or
a Debian-style multiarch directory such as "lib/x86_64-linux-gnu".
If we're installing libraries to such a directory, and we have both
word-sizes' compatibility libraries available, then pw-pulse can
use LD_LIBRARY_PATH='/usr/${LIB}/pipewire-0.3/pulse' to make both
i386 and x86_64 programs load the correct version.

Signed-off-by: Simon McVittie <smcv@debian.org>
2020-06-05 13:40:50 +00:00
Simon McVittie
96eb6e4df8 scripts: Don't add an empty entry to LD_LIBRARY_PATH
LD_LIBRARY_PATH="/path/to/lib:" is interpreted as equivalent to
LD_LIBRARY_PATH="/path/to/lib:.", loading libraries from the current
working directory, which could lead to malicious libraries being loaded
if the current working directory is untrusted. To avoid this, only add
the current LD_LIBRARY_PATH to the new LD_LIBRARY_PATH if it is
actually set.

This commit also single-quotes the interpolated @VARIABLES@ so that
their values can contain shell special characters (other than single
quotes).

Signed-off-by: Simon McVittie <smcv@debian.org>
2020-06-05 13:40:50 +00: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
6ee9853133 jack: free old mem after we configure new mem 2020-06-05 13:02:56 +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
ee5d6b4451 pulse: add more checks 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
Martin Koch
2ae621c975 fix warning: passing argument 1 of ‘pa_proplist_iterate’ discards ‘const’ qualifier
in pipewire-pulseaudio/src/proplist.c
	for pulseaudio version < 13.0

Signed-off-by: Martin Koch <martin.koch@ese.de>
2020-06-04 18:11:52 +00:00
Martin Koch
77860ef348 add version requirement for vulkan library dependency
due to usage of VK_ERROR_OUT_OF_POOL_MEMORY, VK_ERROR_INVALID_EXTERNAL_HANDLE,
	VK_API_VERSION_1_1 and VK_EXTERNAL_MEMORY_HANDLE_TYPE_DMA_BUF_BIT_EXT
	introduced in version 1.1.69

Signed-off-by: Martin Koch <martin.koch@ese.de>
2020-06-04 18:11:48 +00:00
Wim Taymans
549431e8f3 pulse: fix leaks 2020-06-04 18:26:36 +02: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
814b74265c jack: stop the thread loop before we destroy objects 2020-06-04 13:08:39 +02:00
Wim Taymans
253e304124 jack: destroy link proxy
Destroy the link proxy immediately so that we don't leak it.
The link is marked as 'linger' and will thus keep on living
even when our proxy is gone.
2020-06-04 12:59:55 +02:00
Wim Taymans
38cfa2d71d jack: fix leaks 2020-06-04 12:59:20 +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
Wim Taymans
f1e7e86bee buffers: add support for multiple data blocks
Support multiple data blocks in a buffer.
2020-06-04 12:31:17 +02:00
Wim Taymans
704d504a44 media-session: mark enabled modules with * 2020-06-04 10:51:03 +02:00
Wim Taymans
0b47b47b6c libcamera: disable by default
Until it is at least more comon available in distros.
2020-06-04 10:50:54 +02:00
raghu447
39974903df Rebasing 2020-06-04 10:36:39 +02:00
raghu447
0d8e030c6e Removed datas field 2020-06-04 10:36:39 +02:00
raghu447
d93870fdeb Removed redundant logs 2020-06-04 10:36:39 +02:00
raghu447
af263187ea Reverting redundant changes 2020-06-04 10:36:39 +02:00
raghu447
9024cc4444 Integrating libcamera 2020-06-04 10:36:39 +02:00
Wim Taymans
ee1b79c4cd stream: setting a format always clears buffers 2020-06-04 10:18:13 +02:00
Wim Taymans
8292c556e9 client-node: first set param, then clear buffers
Because setting the param might still access the buffer to do
cleanup.
2020-06-04 10:15:37 +02:00
Wim Taymans
33cd2495b8 examples: add signal handler for clean exit 2020-06-04 10:10:08 +02:00