mirror of
https://gitlab.freedesktop.org/pipewire/pipewire.git
synced 2025-10-31 22:25:38 -04:00
impl-node: Split ALWAYS_PROCESS and WANT_DRIVER handling
Make a new PW_KEY_NODE_WANT_DRIVER to assign the node to a running driver. (does not work yet) Use a new variable to hold the ALWAYS_PROCESS setting and also update want_driver. This makes things it a bit more future proof.
This commit is contained in:
parent
62fa0823ec
commit
d1905716e4
3 changed files with 17 additions and 16 deletions
|
|
@ -831,20 +831,14 @@ static void check_properties(struct pw_impl_node *node)
|
|||
pw_log_debug(NAME" %p: name '%s'", node, node->name);
|
||||
}
|
||||
|
||||
if ((str = pw_properties_get(node->properties, PW_KEY_NODE_PAUSE_ON_IDLE)))
|
||||
impl->pause_on_idle = pw_properties_parse_bool(str);
|
||||
else
|
||||
impl->pause_on_idle = true;
|
||||
str = pw_properties_get(node->properties, PW_KEY_NODE_PAUSE_ON_IDLE);
|
||||
impl->pause_on_idle = str ? pw_properties_parse_bool(str) : true;
|
||||
|
||||
if ((str = pw_properties_get(node->properties, PW_KEY_NODE_CACHE_PARAMS)))
|
||||
impl->cache_params = pw_properties_parse_bool(str);
|
||||
else
|
||||
impl->cache_params = true;
|
||||
str = pw_properties_get(node->properties, PW_KEY_NODE_CACHE_PARAMS);
|
||||
impl->cache_params = str ? pw_properties_parse_bool(str) : true;
|
||||
|
||||
if ((str = pw_properties_get(node->properties, PW_KEY_NODE_DRIVER)))
|
||||
driver = pw_properties_parse_bool(str);
|
||||
else
|
||||
driver = false;
|
||||
str = pw_properties_get(node->properties, PW_KEY_NODE_DRIVER);
|
||||
driver = str ? pw_properties_parse_bool(str) : false;
|
||||
|
||||
if (node->driver != driver) {
|
||||
pw_log_debug(NAME" %p: driver %d -> %d", node, node->driver, driver);
|
||||
|
|
@ -869,10 +863,14 @@ static void check_properties(struct pw_impl_node *node)
|
|||
recalc_reason = "group changed";
|
||||
}
|
||||
|
||||
if ((str = pw_properties_get(node->properties, PW_KEY_NODE_ALWAYS_PROCESS)))
|
||||
node->want_driver = pw_properties_parse_bool(str);
|
||||
else
|
||||
node->want_driver = false;
|
||||
str = pw_properties_get(node->properties, PW_KEY_NODE_WANT_DRIVER);
|
||||
node->want_driver = str ? pw_properties_parse_bool(str) : false;
|
||||
|
||||
str = pw_properties_get(node->properties, PW_KEY_NODE_ALWAYS_PROCESS);
|
||||
node->always_process = str ? pw_properties_parse_bool(str) : false;
|
||||
|
||||
if (node->always_process)
|
||||
node->want_driver = true;
|
||||
|
||||
if ((str = pw_properties_get(node->properties, PW_KEY_NODE_LATENCY))) {
|
||||
uint32_t num, denom;
|
||||
|
|
|
|||
|
|
@ -157,6 +157,8 @@ extern "C" {
|
|||
* node as a fraction. Ex: 1024/48000 */
|
||||
#define PW_KEY_NODE_DONT_RECONNECT "node.dont-reconnect" /**< don't reconnect this node */
|
||||
#define PW_KEY_NODE_ALWAYS_PROCESS "node.always-process" /**< process even when unlinked */
|
||||
#define PW_KEY_NODE_WANT_DRIVER "node.want-driver" /**< the node wants to be grouped with a driver
|
||||
* node in order to schedule the graph. */
|
||||
#define PW_KEY_NODE_PAUSE_ON_IDLE "node.pause-on-idle" /**< pause the node when idle */
|
||||
#define PW_KEY_NODE_CACHE_PARAMS "node.cache-params" /**< cache the node params */
|
||||
#define PW_KEY_NODE_DRIVER "node.driver" /**< node can drive the graph */
|
||||
|
|
|
|||
|
|
@ -673,6 +673,7 @@ struct pw_impl_node {
|
|||
unsigned int passive:1; /**< driver graph only has passive links */
|
||||
unsigned int freewheel:1; /**< if this is the freewheel driver */
|
||||
unsigned int loopchecked:1; /**< for feedback loop checking */
|
||||
unsigned int always_process:1; /**< this node wants to always be processing, even when idle */
|
||||
|
||||
uint32_t port_user_data_size; /**< extra size for port user data */
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue