Age | Commit message (Collapse) | Author | Files | Lines |
|
Disable bluetooth handling by default to avoid causing
conflicts with pulseaudio.
|
|
|
|
|
|
|
|
|
|
First set the new area, then destroy the old one. Otherwise the
data thread might still be using the old area and crash.
|
|
|
|
|
|
|
|
|
|
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.
|
|
|
|
Add function that invokes the given function in the context of the
thread or the caller thread depending on if the thread is running.
|
|
|
|
Or else the idle handler might go off when we are already destroyed.
|
|
|
|
pw-pulse and pw-jack set the replacement library path correctly
so that pulse and jack apps run on top of PipeWire.
|
|
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.
|
|
Init the port buffer after we create it, not only after we get a buffer
on the port.
Cleanup a little.
|
|
It's possible the cleanup code might try to clean up ports we
already removed, don't show an error on that.
|
|
|
|
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
|
|
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
|
|
Don't try to IDLE a suspended node.
Don't try to start an inactive node.
|
|
Move quantum calculation after adding unassigned to fallback drivers
so that they also receive the required quantum.
|
|
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.
|
|
|
|
|
|
|
|
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
|
|
Use a forward declaration instead for itimerspec.
Fixes #230
|
|
Fixes #230
|
|
|
|
Add reason to why we recalculate the graph for debugging purposes
Only recalculate graph when something relevant changed.
Block recalc from being called recursively.
|
|
Remove the extra queue and use the queue from pw_stream.
Fix some locks and the bufferpool handling to make audio playback
work.
|
|
Inactive nodes can be set to IDLE
|
|
|
|
There is no need to keep a separate queue in the source, simply use
the one from pw_stream.
|
|
Also use the clock time when the stream is not yet started.
|
|
So that we don't accidentally load an old plugin.
|
|
There are incompatible version 0 plugins around (the compat ones)
that crash spa-inspect. Increment the version number to avoid this.
|
|
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
|
|
Improve log so that debug level 3 gives a reasonably readable overview
of what is going on.
|
|
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.
|
|
|
|
|
|
And also print the client error when we get it.
|
|
When the client destroyed a port, don't try to clear the
buffers because the client should have done that already.
|
|
|
|
|