summaryrefslogtreecommitdiff
AgeCommit message (Collapse)AuthorFilesLines
2020-04-30conf: disable bluez5f32Wim Taymans1-1/+1
Disable bluetooth handling by default to avoid causing conflicts with pulseaudio.
2020-04-300.3.4Wim Taymans2-3/+11
2020-04-30protocol: use bool for Bool podWim Taymans3-4/+4
2020-04-30jack: fix unlockWim Taymans1-1/+1
2020-04-30jack: also sync position area with data threadWim Taymans1-25/+25
2020-04-30remote: free io area after we set the new areaWim Taymans2-19/+21
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-30add more warnings and fix oneWim Taymans2-2/+5
2020-04-300.3.3Wim Taymans2-3/+31
2020-04-30filter: make sure to sync the position with data threadWim Taymans2-6/+38
2020-04-30jack: free some objectsWim Taymans1-0/+2
2020-04-30jack: improve lockingWim Taymans2-100/+181
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-30remote-node: remove unused position areaWim Taymans1-10/+0
2020-04-30data-loop: add function to invokeWim Taymans2-0/+19
Add function that invokes the given function in the context of the thread or the caller thread depending on if the thread is running.
2020-04-29alsa-monitor: remove timeout in destroyWim Taymans1-0/+1
2020-04-29suspend-node: remove idle handler in destroyWim Taymans1-0/+1
Or else the idle handler might go off when we are already destroyed.
2020-04-29jack: make dummy server and net librariesWim Taymans2-0/+67
2020-04-29add pw-jack and pw-pulse to set the library pathWim Taymans4-0/+135
pw-pulse and pw-jack set the replacement library path correctly so that pulse and jack apps run on top of PipeWire.
2020-04-29install replacement libraries in modules directoryWim Taymans4-18/+33
Don't use a special name for the replacement libraries but install them into the modules directory by default. Add an option to install them into another location. This way, we don't need to set up symlinks in development, distros can choose to install them where they want and/or we can use symlinks or LD_LIBRARY path to select the replacement versions.
2020-04-28jack: always initialize the port bufferWim Taymans1-15/+15
Init the port buffer after we create it, not only after we get a buffer on the port. Cleanup a little.
2020-04-28client-node: don't error in cleanupWim Taymans2-3/+4
It's possible the cleanup code might try to clean up ports we already removed, don't show an error on that.
2020-04-28pulse: implement cork nowWim Taymans1-2/+1
2020-04-28link: improve state managementWim Taymans1-4/+4
Only activate a link when both nodes are active Don't try to prepare the link when already prepared. Only unprepare the link when it was prepared
2020-04-28link: track active state of nodesWim Taymans2-46/+57
Keep track of the node active state, when both are active, we can prepare (negotiate) the link. After a link has been prepared we can activate it. When we deactivate the link, we don't need to prepare again. When a port loses buffers or format, set the link back to the unprepared state. This fixes the case where: 1) a node becomes inactive and goes to suspend, the link becomes unprepared 2) the node becomes active again and need to be prepared again
2020-04-28context: improve statesWim Taymans1-15/+17
Don't try to IDLE a suspended node. Don't try to start an inactive node.
2020-04-28context: reorganize graph recalcWim Taymans3-65/+59
Move quantum calculation after adding unassigned to fallback drivers so that they also receive the required quantum.
2020-04-27support: add dummy driverWim Taymans5-0/+401
Add a dummy driver node with high priority. All nodes not linked to a device node will be linked to this when they require a driver.
2020-04-27metadata: fix order of type/valueWim Taymans1-2/+2
2020-04-27jack: add more metadata keysWim Taymans1-12/+12
2020-04-27log: add option to disable line numbersWim Taymans3-12/+22
2020-04-27context: improve graph statesWim Taymans2-9/+16
Keep the first active node as the fallback node. We use this node as the target when no oher active nodes exist. Only assign the target node to active nodes. When we assign an unassigned node, simply update the active followers of the target, the state of the nodes and target itself will then be taken care of later. When registering nodes, only active nodes can influence the state of the graph. Update some comments
2020-04-24system: don't use _GNU_SOURCE in public headerWim Taymans1-3/+1
Use a forward declaration instead for itimerspec. Fixes #230
2020-04-24system: define _GNU_SOURCE for itimerspecWim Taymans1-0/+4
Fixes #230
2020-04-24node: improve debugWim Taymans1-3/+4
2020-04-24context: improve graph recalcWim Taymans4-15/+28
Add reason to why we recalculate the graph for debugging purposes Only recalculate graph when something relevant changed. Block recalc from being called recursively.
2020-04-23gst: remove internal queueWim Taymans2-35/+20
Remove the extra queue and use the queue from pw_stream. Fix some locks and the bufferpool handling to make audio playback work.
2020-04-23node: also IDLE when not activeWim Taymans1-1/+1
Inactive nodes can be set to IDLE
2020-04-23node: don't suspend when already suspendedWim Taymans1-2/+5
2020-04-23gst: use the pw_stream queueWim Taymans2-43/+12
There is no need to keep a separate queue in the source, simply use the one from pw_stream.
2020-04-23gst: always use the clock timeWim Taymans1-3/+3
Also use the clock time when the stream is not yet started.
2020-04-22factory: do more version checksWim Taymans6-2/+23
So that we don't accidentally load an old plugin.
2020-04-22plugin: increment version and avoid inspecting old versionsWim Taymans2-1/+7
There are incompatible version 0 plugins around (the compat ones) that crash spa-inspect. Increment the version number to avoid this.
2020-04-22context: simplify state changesWim Taymans5-139/+53
Keep track of when a link is prepared, this is when the link has successfully negotiated a format and buffers. Only follow prepared links when collecting nodes in the graph. Set the state of the driver and its nodes based on how many active nodes the driver has. We don't have to do state changes on the nodes from the link anymore then and we can get rid of the counters. Only set the io on the mixer ports when prepared because we might need a special mixer element based on the format. Remove passive links for now. This fixes many cases where the graph would stall when linking/unlinking ports in various combinations. Fixes #221
2020-04-22improve debugWim Taymans33-125/+141
Improve log so that debug level 3 gives a reasonably readable overview of what is going on.
2020-04-22mem: implement remove_idWim Taymans3-6/+9
Rename (the non-exported symbol) _unref_id -> _remove_id and make it remove the id from the map of known ids. This way, the server can send the remove_mem and reuse the id for new memory before all references are gone. Fixes "invalid mem id X, expected Y" errors.
2020-04-22tools: handle connection errorWim Taymans1-1/+5
2020-04-21jack: only do transport when there is a driverWim Taymans1-2/+2
2020-04-21core: send an error when receiving invalid memWim Taymans2-1/+2
And also print the client error when we get it.
2020-04-21client-node: don't try to clear port when destroyedWim Taymans1-1/+7
When the client destroyed a port, don't try to clear the buffers because the client should have done that already.
2020-04-21jack: clear buffers when freeing the mixerWim Taymans1-21/+22
2020-04-21improve debugWim Taymans3-19/+31