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
Wim Taymans
30d5a247e1
jack: improve locking
...
Protect the global metadata with a lock because we update this from
multiple clients. Avoid updating the metadata if it didn't change.
Add a simple lock to protect the session objects, they could be
accessed from the main thread or data thread. Use the simple lock
in methods that just read.
Use the new data loop invoke to make sure we sync the data update
with the data thread.
Stop the data loop when our position io is removed.
2020-04-30 12:57:56 +02:00
Wim Taymans
83b30dcd3d
jack: always initialize the port buffer
...
Init the port buffer after we create it, not only after we get a buffer
on the port.
Cleanup a little.
2020-04-28 14:15:49 +02:00
Wim Taymans
aafd1e7298
improve debug
...
Improve log so that debug level 3 gives a reasonably readable overview
of what is going on.
2020-04-22 12:47:18 +02:00
Wim Taymans
2e06d0819b
jack: only do transport when there is a driver
2020-04-21 16:15:45 +02:00
Wim Taymans
90054f5f3e
jack: clear buffers when freeing the mixer
2020-04-21 15:53:43 +02:00
Wim Taymans
539296069d
jack: implement more metadata API
...
Rework the metadata implementation without pw_properties to make
it easier to delete all subjects and implement the metadata API.
Remove metadata from all objects when they are destroyed.
2020-04-20 15:19:06 +02:00
Wim Taymans
16ca53e592
jack: implement get_property
2020-04-20 11:51:20 +02:00
Wim Taymans
0db9c4ef6b
jack: use current buffer and samplerate
2020-03-18 17:52:48 +01:00
Wim Taymans
e8cf29a7c8
jack: remove some hardcoded defaults
...
We get those from the server instead.
2020-03-18 17:42:11 +01:00