Wim Taymans
776147c125
jack: also find port by aliases
...
one can also use the aliases to connect ports, qjackctl does this.
Fixes #527
2021-01-03 21:25:55 +01:00
Wim Taymans
2b507cbe79
jack: use the node activation position after connecting
...
Until we get assigned to a driver, use our own activation position
to report samplerate and buffer size.
2020-12-09 20:48:59 +01:00
Elliott Sales de Andrade
86fd6a0d3e
Fix some possible-NULL pointer usage.
2020-11-23 15:36:08 +00:00
Wim Taymans
fb44d3428c
jack: block some cases
...
Refuse to run when we run in the daemon, we can't really do a blocking
connect to the daemon from its main thread.
Also refuse to run when we detect an old pipewire libaray. Blocks the
case where some app linked against 0.2 wants to use the replacement
libjack.so.
2020-11-19 12:37:10 +01:00
Wim Taymans
f42da492f9
warn about lock just once
2020-11-14 21:21:20 +01:00
Wim Taymans
38bcab4610
jack: handle connect errors
...
Listen on the proxy for errors and report this to the caller. This
avoids hanging in jack_connect.
2020-11-04 21:05:45 +01:00
Wim Taymans
c43026d93e
don't handle EINTR and EAGAIN as the same
...
EAGAIN means a non-blocking operation would block and we should not
try again right away but leave the loop and wait instead.
See #358
2020-11-02 16:43:56 +01:00
Wim Taymans
e094640c7b
handle EINTR and EAGAIN
...
Just do the call again instead of failing or logging an error.
Fixes #358
2020-11-02 14:51:07 +01:00
Wim Taymans
acfb48e3da
pulse: improve debug
2020-10-27 16:46:12 +01:00
Wim Taymans
4dd1e02526
jack: return error when out of midi events
...
Fixes #334
2020-10-19 23:30:44 +02:00
Wim Taymans
68bff629b3
jack: optimize get_buffer
...
Keep track of global mix port.
Calculate the get_buffer function beforehand.
2020-09-30 11:59:41 +02:00
Wim Taymans
2a630dbecd
jack: move some debug to fastpath
2020-09-29 16:57:50 +02:00
Wim Taymans
136f556d79
jack: lock for accessing the globals
2020-09-22 13:10:58 +02:00
Wim Taymans
c979f181a5
jack: return useful version number (major version 3)
...
Also add the PipeWire string in there to give apps a chance to
report this.
2020-09-11 11:28:04 +02:00
Wim Taymans
dc2cfb2bd2
jack: only report latency for terminal ports
...
Only report latency for terminal ports for now and use the buffer
size as the latency.
2020-09-10 09:15:47 +02:00
Wim Taymans
d995df95f8
jack: small cleanup
2020-09-07 16:16:26 +02:00
Wim Taymans
0c04481ba7
metadata: improve default sink/source
...
Only check defaults when subject is PW_ID_CORE
Handle NULL keys: remove the defaults
2020-08-18 17:56:05 +02:00
Wim Taymans
759e1ccb6b
jack: fix default source and sink handling
2020-08-18 17:18:37 +02:00
Wim Taymans
8c893cbc4a
jack: improve debug
2020-08-18 16:52:27 +02:00
Wim Taymans
cc044b0e08
jack: don't overwrite any PIPEWIRE_PROPS values
2020-08-11 12:12:37 +02:00
Wim Taymans
f73a0c97e3
jack: use empty area when get_buffer frames is 0
...
Client that call port_get_buffer with 0 frames get the empty scratch
buffer because we can't know the final output size.
2020-08-11 12:09:50 +02:00
Wim Taymans
753af7c7b3
jack: improve buffer size callbacks
...
Make sure we emit the buffer callback either from the calling thread
or from the thread_loop. Mark the callback as pending and don't call
the process function until the callback has been handled.
2020-08-11 11:11:00 +02:00
Wim Taymans
e71936f870
Improve naming
...
master -> driving
priority_master -> priority_driver
segment_master -> segment_owner
2020-08-06 13:49:33 +02:00
Wim Taymans
3abd46b619
jack: Use out node name from the server
...
Get the node name from the global info when we see it.
Check if the name changed and set the right result flag for the app.
2020-08-05 12:26:59 +02:00
Wim Taymans
d76b509995
jack: prefer nick for node name
...
The nick is shorter and nicer for jack applications. We have the
full description in the port alias 2.
2020-08-03 18:13:31 +02:00
Wim Taymans
407ea74513
don't use qsort_r, it's not implemented everywhere
...
Fixes #260
2020-08-02 12:50:56 +02:00
Wim Taymans
2b3a58ed13
jack: improve client name
...
Only append app name and node name when they are different
Use / to separate app name from node name because : is used to
separate client name from port name.
2020-07-30 12:56:20 +02:00
Wim Taymans
f888c58b83
jack: fix client uuid
2020-07-30 12:10:46 +02:00
Wim Taymans
bb20e0646c
jack: parse varargs and use server name
...
Parse the varargs and use the server name as the remote
2020-07-23 13:18:14 +02:00
Wim Taymans
266e1301d2
use id to store default sink/source
...
This is easier to handle in general and we should not use the name
as a unique id. If the session manager wants to save things, it can
use whatever fields it wants from the object to create a unique
persistent name.
2020-07-23 11:59:13 +02:00
Wim Taymans
ca066fbf3b
jack: use PIPEWIRE_PROPS env to add properties to jack nodes
2020-07-21 16:50:45 +02:00
Wim Taymans
d4d80c16c1
jack: handle NULL keys
2020-07-21 16:47:58 +02:00
Wim Taymans
8b291ada27
jack: increase client name size
2020-07-21 15:41:52 +02:00
Wim Taymans
13492fd282
jack: include application name in client name
2020-07-20 16:54:38 +02:00
Wim Taymans
ee2c1f3882
jack: enforce unique port names as well
2020-07-20 16:27:26 +02:00
Wim Taymans
7711c98123
jack: use default sink/source to sort ports
2020-07-17 17:23:43 +02:00
George Kiagiadakis
a108752514
jack: fix crash on close when metadata are not available
2020-06-17 12:13:34 +00:00
Wim Taymans
0441653ce4
jack: use PIPEWIRE_LINK_PASSIVE environment var
...
Let the jack client make passive links when the PIPEWIRE_LINK_PASSIVE
variable is set. Makes it possible to start qsynth with passive links
so that it suspends when not in use.
2020-06-17 13:17:28 +02:00
Wim Taymans
660d77cff0
jack: allocate mix structure dynamically
2020-06-16 21:12:12 +02:00
Wim Taymans
c9d4c1ba95
jack: dynamically fill the port array
...
Don't preallocate ports, do so on demand to reduce memory
usage.
2020-06-16 20:57:52 +02:00
Wim Taymans
6ee9853133
jack: free old mem after we configure new mem
2020-06-05 13:02:56 +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
a898f21c87
improve debug
...
When we fail to read the eventfd, don't try to use the value.
2020-05-20 15:24:25 +02:00
Wim Taymans
e6ccc72feb
fix compiler warnings
2020-05-08 20:40:02 +02:00
Wim Taymans
c117ca0899
jack: fix unlock
2020-04-30 16:18:40 +02:00
Wim Taymans
420c186124
jack: also sync position area with data thread
2020-04-30 16:15:22 +02:00
Wim Taymans
0fd46d057e
remote: free io area after we set the new area
...
First set the new area, then destroy the old one. Otherwise the
data thread might still be using the old area and crash.
2020-04-30 16:13:50 +02:00
Wim Taymans
8141c92dde
jack: free some objects
2020-04-30 13:11:01 +02:00