mirror of
https://gitlab.freedesktop.org/pipewire/pipewire.git
synced 2025-11-02 09:01:50 -05: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);
|
pw_log_debug(NAME" %p: name '%s'", node, node->name);
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((str = pw_properties_get(node->properties, PW_KEY_NODE_PAUSE_ON_IDLE)))
|
str = pw_properties_get(node->properties, PW_KEY_NODE_PAUSE_ON_IDLE);
|
||||||
impl->pause_on_idle = pw_properties_parse_bool(str);
|
impl->pause_on_idle = str ? pw_properties_parse_bool(str) : true;
|
||||||
else
|
|
||||||
impl->pause_on_idle = true;
|
|
||||||
|
|
||||||
if ((str = pw_properties_get(node->properties, PW_KEY_NODE_CACHE_PARAMS)))
|
str = pw_properties_get(node->properties, PW_KEY_NODE_CACHE_PARAMS);
|
||||||
impl->cache_params = pw_properties_parse_bool(str);
|
impl->cache_params = str ? pw_properties_parse_bool(str) : true;
|
||||||
else
|
|
||||||
impl->cache_params = true;
|
|
||||||
|
|
||||||
if ((str = pw_properties_get(node->properties, PW_KEY_NODE_DRIVER)))
|
str = pw_properties_get(node->properties, PW_KEY_NODE_DRIVER);
|
||||||
driver = pw_properties_parse_bool(str);
|
driver = str ? pw_properties_parse_bool(str) : false;
|
||||||
else
|
|
||||||
driver = false;
|
|
||||||
|
|
||||||
if (node->driver != driver) {
|
if (node->driver != driver) {
|
||||||
pw_log_debug(NAME" %p: driver %d -> %d", node, 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";
|
recalc_reason = "group changed";
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((str = pw_properties_get(node->properties, PW_KEY_NODE_ALWAYS_PROCESS)))
|
str = pw_properties_get(node->properties, PW_KEY_NODE_WANT_DRIVER);
|
||||||
node->want_driver = pw_properties_parse_bool(str);
|
node->want_driver = str ? pw_properties_parse_bool(str) : false;
|
||||||
else
|
|
||||||
node->want_driver = 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))) {
|
if ((str = pw_properties_get(node->properties, PW_KEY_NODE_LATENCY))) {
|
||||||
uint32_t num, denom;
|
uint32_t num, denom;
|
||||||
|
|
|
||||||
|
|
@ -157,6 +157,8 @@ extern "C" {
|
||||||
* node as a fraction. Ex: 1024/48000 */
|
* 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_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_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_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_CACHE_PARAMS "node.cache-params" /**< cache the node params */
|
||||||
#define PW_KEY_NODE_DRIVER "node.driver" /**< node can drive the graph */
|
#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 passive:1; /**< driver graph only has passive links */
|
||||||
unsigned int freewheel:1; /**< if this is the freewheel driver */
|
unsigned int freewheel:1; /**< if this is the freewheel driver */
|
||||||
unsigned int loopchecked:1; /**< for feedback loop checking */
|
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 */
|
uint32_t port_user_data_size; /**< extra size for port user data */
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue