mirror of
https://gitlab.freedesktop.org/pipewire/pipewire.git
synced 2025-11-03 09:01:54 -05:00
impl-node: move 2 state variables to private
So that they can be used when making scheduler decisions.
This commit is contained in:
parent
0ddf80d470
commit
26496724c6
2 changed files with 12 additions and 11 deletions
|
|
@ -59,8 +59,6 @@ struct impl {
|
||||||
struct spa_list param_list;
|
struct spa_list param_list;
|
||||||
struct spa_list pending_list;
|
struct spa_list pending_list;
|
||||||
|
|
||||||
unsigned int pause_on_idle:1;
|
|
||||||
unsigned int suspend_on_idle:1;
|
|
||||||
unsigned int cache_params:1;
|
unsigned int cache_params:1;
|
||||||
unsigned int pending_play:1;
|
unsigned int pending_play:1;
|
||||||
};
|
};
|
||||||
|
|
@ -221,12 +219,12 @@ static int idle_node(struct pw_impl_node *this)
|
||||||
pw_log_debug("%p: idle node state:%s pending:%s pause-on-idle:%d", this,
|
pw_log_debug("%p: idle node state:%s pending:%s pause-on-idle:%d", this,
|
||||||
pw_node_state_as_string(this->info.state),
|
pw_node_state_as_string(this->info.state),
|
||||||
pw_node_state_as_string(impl->pending_state),
|
pw_node_state_as_string(impl->pending_state),
|
||||||
impl->pause_on_idle);
|
this->pause_on_idle);
|
||||||
|
|
||||||
if (impl->pending_state <= PW_NODE_STATE_IDLE)
|
if (impl->pending_state <= PW_NODE_STATE_IDLE)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
if (!impl->pause_on_idle)
|
if (!this->pause_on_idle)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
node_deactivate(this);
|
node_deactivate(this);
|
||||||
|
|
@ -385,7 +383,7 @@ static void node_update_state(struct pw_impl_node *node, enum pw_node_state stat
|
||||||
case PW_NODE_STATE_IDLE:
|
case PW_NODE_STATE_IDLE:
|
||||||
case PW_NODE_STATE_SUSPENDED:
|
case PW_NODE_STATE_SUSPENDED:
|
||||||
case PW_NODE_STATE_ERROR:
|
case PW_NODE_STATE_ERROR:
|
||||||
if (state != PW_NODE_STATE_IDLE || impl->pause_on_idle)
|
if (state != PW_NODE_STATE_IDLE || node->pause_on_idle)
|
||||||
pw_loop_invoke(node->data_loop, do_node_remove, 1, NULL, 0, true, node);
|
pw_loop_invoke(node->data_loop, do_node_remove, 1, NULL, 0, true, node);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
|
|
@ -422,8 +420,9 @@ static void node_update_state(struct pw_impl_node *node, enum pw_node_state stat
|
||||||
}
|
}
|
||||||
if (old == PW_NODE_STATE_RUNNING &&
|
if (old == PW_NODE_STATE_RUNNING &&
|
||||||
state == PW_NODE_STATE_IDLE &&
|
state == PW_NODE_STATE_IDLE &&
|
||||||
impl->suspend_on_idle)
|
node->suspend_on_idle) {
|
||||||
pw_impl_node_set_state(node, PW_NODE_STATE_SUSPENDED);
|
pw_impl_node_set_state(node, PW_NODE_STATE_SUSPENDED);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static int suspend_node(struct pw_impl_node *this)
|
static int suspend_node(struct pw_impl_node *this)
|
||||||
|
|
@ -917,10 +916,10 @@ static void check_properties(struct pw_impl_node *node)
|
||||||
pw_log_debug("%p: name '%s'", node, node->name);
|
pw_log_debug("%p: name '%s'", node, node->name);
|
||||||
}
|
}
|
||||||
|
|
||||||
impl->pause_on_idle = pw_properties_get_bool(node->properties, PW_KEY_NODE_PAUSE_ON_IDLE, true);
|
node->pause_on_idle = pw_properties_get_bool(node->properties, PW_KEY_NODE_PAUSE_ON_IDLE, true);
|
||||||
impl->suspend_on_idle = pw_properties_get_bool(node->properties, PW_KEY_NODE_SUSPEND_ON_IDLE, false);
|
node->suspend_on_idle = pw_properties_get_bool(node->properties, PW_KEY_NODE_SUSPEND_ON_IDLE, false);
|
||||||
impl->cache_params = pw_properties_get_bool(node->properties, PW_KEY_NODE_CACHE_PARAMS, true);
|
|
||||||
node->transport_sync = pw_properties_get_bool(node->properties, PW_KEY_NODE_TRANSPORT_SYNC, false);
|
node->transport_sync = pw_properties_get_bool(node->properties, PW_KEY_NODE_TRANSPORT_SYNC, false);
|
||||||
|
impl->cache_params = pw_properties_get_bool(node->properties, PW_KEY_NODE_CACHE_PARAMS, true);
|
||||||
driver = pw_properties_get_bool(node->properties, PW_KEY_NODE_DRIVER, false);
|
driver = pw_properties_get_bool(node->properties, PW_KEY_NODE_DRIVER, false);
|
||||||
|
|
||||||
if (node->driver != driver) {
|
if (node->driver != driver) {
|
||||||
|
|
@ -2215,7 +2214,7 @@ int pw_impl_node_set_state(struct pw_impl_node *node, enum pw_node_state state)
|
||||||
pw_node_state_as_string(old),
|
pw_node_state_as_string(old),
|
||||||
pw_node_state_as_string(state),
|
pw_node_state_as_string(state),
|
||||||
node->active,
|
node->active,
|
||||||
impl->pause_on_idle);
|
node->pause_on_idle);
|
||||||
|
|
||||||
if (old != state)
|
if (old != state)
|
||||||
pw_impl_node_emit_state_request(node, state);
|
pw_impl_node_emit_state_request(node, state);
|
||||||
|
|
|
||||||
|
|
@ -719,6 +719,8 @@ struct pw_impl_node {
|
||||||
unsigned int current_pending:1; /**< a quantum/rate update is pending */
|
unsigned int current_pending:1; /**< a quantum/rate update is pending */
|
||||||
unsigned int moved:1; /**< the node was moved drivers */
|
unsigned int moved:1; /**< the node was moved drivers */
|
||||||
unsigned int added:1; /**< the node was add to graph */
|
unsigned int added:1; /**< the node was add to graph */
|
||||||
|
unsigned int pause_on_idle:1; /**< Pause processing when IDLE */
|
||||||
|
unsigned int suspend_on_idle:1;
|
||||||
|
|
||||||
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