Commit graph

6266 commits

Author SHA1 Message Date
Wim Taymans
07ff967285 client: call find_permission only once 2019-05-13 10:14:08 +02:00
Wim Taymans
2d3f30fb96 introspect: fix enum 2019-05-13 10:12:33 +02:00
Wim Taymans
795b14f48b protocol-native: also handle 0 recvmsg as EOF
When recvmsg returns 0, also handle it like an EOF and close to
connection otherwise we keep spinning forever.
2019-05-13 10:10:41 +02:00
Wim Taymans
a2bf4ce96e protocol: add security label to a client
Don't pass the ucred to the client construct, just set the properties
in the protocol.
Use the client properties to get ucred.
Add the security label to the client properties (from SO_PEERSEC)
2019-05-10 13:28:18 +02:00
Wim Taymans
4e70cddf1d core: don't remove client resource in hello
Keep the client resource of a client around and make sure we don't
destroy it in hello.
2019-05-10 12:36:28 +02:00
Wim Taymans
a804b71267 core: destroy all resources on hello
Destroy all resources (except the core) for a client when it
does a hello. This typically needs to be done after passing the
connection fd from one client to another.
2019-05-10 11:56:30 +02:00
Wim Taymans
1a7fcaf9c6 Fix cleanup 2019-05-10 11:15:48 +02:00
Wim Taymans
35c2aca706 remote: only remove the proxy id when it existed 2019-05-07 17:53:57 +02:00
Wim Taymans
9a842e4643 pipewiresrc: actually use the fd when set 2019-05-07 14:53:53 +02:00
Wim Taymans
5ac383e7f7 alsa: improve capture slave resync
When we underrun, send out a buffer of 0 samples and catch up next
time.
Detect discont in the master and resync.
2019-04-29 10:00:42 +02:00
Wim Taymans
9ec3e3ab6d private: set min quantum to 32
Going as low as 32 is possible now with the better clock rate
estimation.
2019-04-25 13:04:44 +02:00
Wim Taymans
be5e79831c introspect: remove unused RUNNING state for a link 2019-04-25 12:56:17 +02:00
Wim Taymans
9bfffc009d core: only follow active nodes 2019-04-25 12:55:31 +02:00
Wim Taymans
f8513029a1 node: cleanup, rename slave list 2019-04-24 16:56:18 +02:00
Wim Taymans
9b1da77bfc node: remove obsolete enabled state
We will create/destroy nodes instead of enabled/disable
2019-04-24 15:39:29 +02:00
Wim Taymans
3b513fa7ae floatmix: remove some unused code 2019-04-23 17:37:46 +02:00
Wim Taymans
8dabd52807 audio-dsp: use audioconvert to get a resampler 2019-04-23 17:37:22 +02:00
Wim Taymans
bb3da2fcc1 remote-node: reuse activation logic in pw_node
Set the received eventfd as the node eventfd and let existing
logic take care of scheduling the node.
2019-04-17 15:23:11 +02:00
Wim Taymans
8b1e5fedc9 core: clear driver on unassigned nodes 2019-04-11 16:40:16 +02:00
Wim Taymans
affc641c71 node: set master flag
Set the master flag when a node is selected as master.
Recalc graph when a node is destroyed
2019-04-11 16:38:24 +02:00
Wim Taymans
092a0c660d make bitfields unsigned
Remove driver property from client-node of client-stream.
2019-04-10 17:52:42 +02:00
Wim Taymans
787900e8bf v4l2: map all jpeg formats to video/mjpeg 2019-04-10 17:10:34 +02:00
Wim Taymans
0db5817ed7 client-stream: Don't allow DYNAMIC_DATA
We don't want to use dynamic data for the remote nodes, the buffers
need to keep pointing to the memfd memory.
2019-04-10 16:35:28 +02:00
Wim Taymans
32f039e2e5 core: rework how nodes are added to a driver
Add a function to recalculate all nodes associated with a driver by
iterating the graph for each driver node. We used to do this in an
incremental way, which is easy to join graph but expensive to
split.

A full scan simplifies some things and we can't avoid it when we
need to calculate latencies later. It will also simplifies assigning
master and slave roles to drivers when the graphs are joined/split.

When we link/unlink or add/remove nodes, recalc the graph.
2019-04-10 16:19:10 +02:00
George Kiagiadakis
40a5063b9f module-link-factory: fix wrong goto label
harmless, but leads to a wrong error message being printed
2019-04-02 23:26:17 +02:00
George Kiagiadakis
7a7a12138f module-access: don't leak the fd in check_cmdline 2019-04-02 23:26:05 +02:00
Wim Taymans
5c896fedd5 connection: stop refill when 0 bytes read 2019-04-02 23:02:58 +02:00
Wim Taymans
e7ef13e310 audioconvert: add avx optimizations 2019-03-28 16:45:57 +01:00
Wim Taymans
5a2ccee1ff Add FASTPATH trace log
Add a trace_fp that can be optimized away when FASTPATH is defined.
2019-03-21 11:31:53 +01:00
Wim Taymans
036ca89c0e audioconvert: mark ports and buffers as DYNAMIC
Only passthrough buffer data when the buffer and ports are
marked as DYNAMIC.
Use extra buffer for nodes that keep a ref on buffers (resample).
2019-03-21 10:45:24 +01:00
Wim Taymans
c2cb74a146 protocol-native: fix indentation 2019-03-20 15:57:34 +01:00
Wim Taymans
70e62aacd7 protocol-native: pass a message around
Pass a message around to make things more extensible later.
Keep fds per message if we ever want to write individual
messages.
Pass number of fds in the message header. We might need this to
close the fds when the proxy is gone.
2019-03-19 16:15:20 +01:00
Wim Taymans
30747942ac connection: add more test 2019-03-19 11:58:46 +01:00
Wim Taymans
a3e4726ea6 connection: add test and fix a bug
Add a unit test for the connection

When we consumed all packets in a buffer, try to get more data instead
of failing right away.
2019-03-19 11:44:23 +01:00
Wim Taymans
ca051282a4 port: add port subscribe_params 2019-03-18 16:34:07 +01:00
Wim Taymans
ae7e60d790 interfaces: add subscribe params method
Add a node subscribe params method that automatically emits the new
params when they change so that we can avoid an enum_params.
Use this in the stream object.

Remove the control messages to update controls in stream, use the
set_param. This is more overhead but allows for notifications to other
clients.

Make it possible to update many controls in one go.
2019-03-18 16:12:27 +01:00
Wim Taymans
b163dc9114 private: define max params 2019-03-18 16:10:36 +01:00
Wim Taymans
3049964031 stream: parse PropInfo and make controls
Parse the PropInfo params and make pw_stream_control elements.
Only emit control changes when something changed.
2019-03-18 11:19:08 +01:00
Wim Taymans
a23be2b0d8 export-source: fix example 2019-03-15 21:16:58 +01:00
Wim Taymans
6e17b38658 test: fix test 2019-03-15 21:04:49 +01:00
Wim Taymans
9245c81227 client-node: add get_node method
Make a get node method that binds to the server side node of the
client-node immediately. use this in the remote_export and always
return a node proxy.

Use the node proxy to get property updates and signal those in the
stream.
2019-03-15 20:29:34 +01:00
Wim Taymans
33afa18621 client-node: don't make add_listener async
It is not really async, the init is async.
2019-03-15 20:28:42 +01:00
Wim Taymans
1ab00fae6d client-stream: make PropInfo visible 2019-03-15 20:25:21 +01:00
Wim Taymans
7675141cb9 monitor: improve param handling
When we receive a param change and the param is unreadable,
remove the params.

When we get a param update, always remove the old params.
2019-03-14 16:42:59 +01:00
Wim Taymans
3fb9fa06a9 client-stream: emit property change events
Emit a property (param) change event when the volume or mute is
changed on a stream.
2019-03-14 16:40:17 +01:00
Wim Taymans
8b2b7c3053 params: only emit callback for requested seq 2019-03-14 16:37:58 +01:00
Wim Taymans
132dd760ee client-stream: only add link once 2019-03-14 12:28:01 +01:00
Wim Taymans
24117b33c7 control: make control links many to many
Output controls can be linked to many input controls and many input
controls can receive input from many output controls. Keep the control
link information inside the link.
2019-03-14 12:04:20 +01:00
Wim Taymans
7b3e7e2813 proxy: call core_proxy_delete in pw_proxy_destroy
Destroying a local proxy will also attempt to destroy the remote
resource unless the server already did that and told us to remove
the proxy.

Fix some cleanups.
2019-03-13 16:24:33 +01:00
Wim Taymans
7b2f96ae75 global: don't destroy resources when unregistering
We can unregister the global without having to destroy the
resources. We always destroy the resources when the global is
destroyed.
2019-03-13 16:23:26 +01:00