mirror of
https://gitlab.freedesktop.org/pipewire/wireplumber.git
synced 2026-05-09 09:48:04 +02:00
tree-wide: refactor active feature checks to use _test_active_features()
Similar to 5fc7e68d10, it's wrong to test
multiple flags with a simple & operation. In some cases we had this wrong.
This commit is contained in:
parent
44a157b506
commit
83e47ab7c2
9 changed files with 30 additions and 32 deletions
|
|
@ -270,8 +270,8 @@ WpLinkState
|
|||
wp_link_get_state (WpLink * self, const gchar ** error)
|
||||
{
|
||||
g_return_val_if_fail (WP_IS_LINK (self), WP_LINK_STATE_ERROR);
|
||||
g_return_val_if_fail (wp_object_get_active_features (WP_OBJECT (self)) &
|
||||
WP_PIPEWIRE_OBJECT_FEATURE_INFO, WP_LINK_STATE_ERROR);
|
||||
g_return_val_if_fail (wp_object_test_active_features (WP_OBJECT (self),
|
||||
WP_PIPEWIRE_OBJECT_FEATURE_INFO), WP_LINK_STATE_ERROR);
|
||||
|
||||
WpPwObjectMixinData *d = wp_pw_object_mixin_get_data (self);
|
||||
const struct pw_link_info *info = d->info;
|
||||
|
|
|
|||
|
|
@ -607,7 +607,7 @@ wp_log_fields_format_message (WpLogFields *lf)
|
|||
spa_dbg_str = NULL;
|
||||
}
|
||||
else if (lf->object && g_type_is_a (lf->object_type, WP_TYPE_PROXY) &&
|
||||
(wp_object_get_active_features ((WpObject *) lf->object) & WP_PROXY_FEATURE_BOUND)) {
|
||||
(wp_object_test_active_features ((WpObject *) lf->object, WP_PROXY_FEATURE_BOUND))) {
|
||||
extra_object = g_strdup_printf (":%u:",
|
||||
wp_proxy_get_bound_id ((WpProxy *) lf->object));
|
||||
}
|
||||
|
|
|
|||
|
|
@ -407,8 +407,8 @@ WpNodeState
|
|||
wp_node_get_state (WpNode * self, const gchar ** error)
|
||||
{
|
||||
g_return_val_if_fail (WP_IS_NODE (self), WP_NODE_STATE_ERROR);
|
||||
g_return_val_if_fail (wp_object_get_active_features (WP_OBJECT (self)) &
|
||||
WP_PIPEWIRE_OBJECT_FEATURE_INFO, WP_NODE_STATE_ERROR);
|
||||
g_return_val_if_fail (wp_object_test_active_features (WP_OBJECT (self),
|
||||
WP_PIPEWIRE_OBJECT_FEATURE_INFO), WP_NODE_STATE_ERROR);
|
||||
|
||||
WpPwObjectMixinData *d = wp_pw_object_mixin_get_data (self);
|
||||
const struct pw_node_info *info = d->info;
|
||||
|
|
@ -432,8 +432,8 @@ guint
|
|||
wp_node_get_n_input_ports (WpNode * self, guint * max)
|
||||
{
|
||||
g_return_val_if_fail (WP_IS_NODE (self), 0);
|
||||
g_return_val_if_fail (wp_object_get_active_features (WP_OBJECT (self)) &
|
||||
WP_PIPEWIRE_OBJECT_FEATURE_INFO, 0);
|
||||
g_return_val_if_fail (wp_object_test_active_features (WP_OBJECT (self),
|
||||
WP_PIPEWIRE_OBJECT_FEATURE_INFO), 0);
|
||||
|
||||
WpPwObjectMixinData *d = wp_pw_object_mixin_get_data (self);
|
||||
const struct pw_node_info *info = d->info;
|
||||
|
|
@ -457,8 +457,8 @@ guint
|
|||
wp_node_get_n_output_ports (WpNode * self, guint * max)
|
||||
{
|
||||
g_return_val_if_fail (WP_IS_NODE (self), 0);
|
||||
g_return_val_if_fail (wp_object_get_active_features (WP_OBJECT (self)) &
|
||||
WP_PIPEWIRE_OBJECT_FEATURE_INFO, 0);
|
||||
g_return_val_if_fail (wp_object_test_active_features (WP_OBJECT (self),
|
||||
WP_PIPEWIRE_OBJECT_FEATURE_INFO), 0);
|
||||
|
||||
WpPwObjectMixinData *d = wp_pw_object_mixin_get_data (self);
|
||||
const struct pw_node_info *info = d->info;
|
||||
|
|
@ -487,8 +487,8 @@ guint
|
|||
wp_node_get_n_ports (WpNode * self)
|
||||
{
|
||||
g_return_val_if_fail (WP_IS_NODE (self), 0);
|
||||
g_return_val_if_fail (wp_object_get_active_features (WP_OBJECT (self)) &
|
||||
WP_NODE_FEATURE_PORTS, 0);
|
||||
g_return_val_if_fail (wp_object_test_active_features (WP_OBJECT (self),
|
||||
WP_NODE_FEATURE_PORTS), 0);
|
||||
|
||||
return wp_object_manager_get_n_objects (self->ports_om);
|
||||
}
|
||||
|
|
@ -507,8 +507,8 @@ WpIterator *
|
|||
wp_node_new_ports_iterator (WpNode * self)
|
||||
{
|
||||
g_return_val_if_fail (WP_IS_NODE (self), NULL);
|
||||
g_return_val_if_fail (wp_object_get_active_features (WP_OBJECT (self)) &
|
||||
WP_NODE_FEATURE_PORTS, NULL);
|
||||
g_return_val_if_fail (wp_object_test_active_features (WP_OBJECT (self),
|
||||
WP_NODE_FEATURE_PORTS), NULL);
|
||||
|
||||
return wp_object_manager_new_iterator (self->ports_om);
|
||||
}
|
||||
|
|
@ -554,8 +554,8 @@ wp_node_new_ports_filtered_iterator_full (WpNode * self,
|
|||
WpObjectInterest * interest)
|
||||
{
|
||||
g_return_val_if_fail (WP_IS_NODE (self), NULL);
|
||||
g_return_val_if_fail (wp_object_get_active_features (WP_OBJECT (self)) &
|
||||
WP_NODE_FEATURE_PORTS, NULL);
|
||||
g_return_val_if_fail (wp_object_test_active_features (WP_OBJECT (self),
|
||||
WP_NODE_FEATURE_PORTS), NULL);
|
||||
|
||||
return wp_object_manager_new_filtered_iterator_full (self->ports_om,
|
||||
interest);
|
||||
|
|
@ -601,8 +601,8 @@ WpPort *
|
|||
wp_node_lookup_port_full (WpNode * self, WpObjectInterest * interest)
|
||||
{
|
||||
g_return_val_if_fail (WP_IS_NODE (self), NULL);
|
||||
g_return_val_if_fail (wp_object_get_active_features (WP_OBJECT (self)) &
|
||||
WP_NODE_FEATURE_PORTS, NULL);
|
||||
g_return_val_if_fail (wp_object_test_active_features (WP_OBJECT (self),
|
||||
WP_NODE_FEATURE_PORTS), NULL);
|
||||
|
||||
return (WpPort *)
|
||||
wp_object_manager_lookup_full (self->ports_om, interest);
|
||||
|
|
@ -626,8 +626,8 @@ wp_node_send_command (WpNode * self, const gchar * command)
|
|||
|
||||
g_return_if_fail (WP_IS_NODE (self));
|
||||
g_return_if_fail (command_value != NULL);
|
||||
g_return_if_fail (wp_object_get_active_features (WP_OBJECT (self)) &
|
||||
WP_PROXY_FEATURE_BOUND);
|
||||
g_return_if_fail (wp_object_test_active_features (WP_OBJECT (self),
|
||||
WP_PROXY_FEATURE_BOUND));
|
||||
|
||||
struct spa_command cmd =
|
||||
SPA_NODE_COMMAND_INIT(wp_spa_id_value_number (command_value));
|
||||
|
|
|
|||
|
|
@ -763,7 +763,7 @@ wp_object_interest_matches_full (WpObjectInterest * self,
|
|||
WpObject *oo = (WpObject *) object;
|
||||
WpPipewireObject *pwo = (WpPipewireObject *) object;
|
||||
|
||||
if (wp_object_get_active_features (oo) & WP_PIPEWIRE_OBJECT_FEATURE_INFO)
|
||||
if (wp_object_test_active_features (oo, WP_PIPEWIRE_OBJECT_FEATURE_INFO))
|
||||
pw_props = props = wp_pipewire_object_get_properties (pwo);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -146,8 +146,8 @@ WpDirection
|
|||
wp_port_get_direction (WpPort * self)
|
||||
{
|
||||
g_return_val_if_fail (WP_IS_PORT (self), 0);
|
||||
g_return_val_if_fail (wp_object_get_active_features (WP_OBJECT (self)) &
|
||||
WP_PIPEWIRE_OBJECT_FEATURE_INFO, 0);
|
||||
g_return_val_if_fail (wp_object_test_active_features (WP_OBJECT (self),
|
||||
WP_PIPEWIRE_OBJECT_FEATURE_INFO), 0);
|
||||
|
||||
WpPwObjectMixinData *d = wp_pw_object_mixin_get_data (self);
|
||||
const struct pw_port_info *info = d->info;
|
||||
|
|
|
|||
|
|
@ -167,7 +167,7 @@ proxy_event_error (void *data, int seq, int res, const char *message)
|
|||
|
||||
/* we destroy the proxy on error if feature bound is still not enabled */
|
||||
if (priv->pw_proxy &&
|
||||
!(wp_object_get_active_features (WP_OBJECT (self)) & WP_PROXY_FEATURE_BOUND))
|
||||
!(wp_object_test_active_features (WP_OBJECT (self), WP_PROXY_FEATURE_BOUND)))
|
||||
pw_proxy_destroy (priv->pw_proxy);
|
||||
|
||||
wp_object_abort_activation (WP_OBJECT (self), message);
|
||||
|
|
|
|||
|
|
@ -159,8 +159,7 @@ wp_settings_get (WpSettings *self, const gchar *setting)
|
|||
g_return_val_if_fail (WP_IS_SETTINGS (self), NULL);
|
||||
g_return_val_if_fail (setting, NULL);
|
||||
|
||||
if (!(wp_object_get_active_features (WP_OBJECT (self)) &
|
||||
WP_OBJECT_FEATURES_ALL))
|
||||
if (!(wp_object_test_active_features (WP_OBJECT (self), WP_SETTINGS_LOADED)))
|
||||
return NULL;
|
||||
|
||||
value = wp_properties_get (self->settings, setting);
|
||||
|
|
|
|||
|
|
@ -553,8 +553,8 @@ si_audio_adapter_enable_active (WpSessionItem *si, WpTransition *transition)
|
|||
return;
|
||||
}
|
||||
|
||||
if (!(wp_object_get_active_features (WP_OBJECT (self->node))
|
||||
& WP_PIPEWIRE_OBJECT_FEATURES_MINIMAL)) {
|
||||
if (!(wp_object_test_active_features (WP_OBJECT (self->node),
|
||||
WP_PIPEWIRE_OBJECT_FEATURES_MINIMAL))) {
|
||||
wp_transition_return_error (transition,
|
||||
g_error_new (WP_DOMAIN_LIBRARY, WP_LIBRARY_ERROR_INVARIANT,
|
||||
"si-audio-adapter: node minimal feature not enabled"));
|
||||
|
|
@ -634,7 +634,6 @@ si_audio_adapter_set_ports_format (WpSiAdapter * item, WpSpaPod *f,
|
|||
WpSiAudioAdapter *self = WP_SI_AUDIO_ADAPTER (item);
|
||||
g_autoptr (WpSpaPod) format = f;
|
||||
g_autoptr (GTask) task = g_task_new (self, NULL, callback, data);
|
||||
guint32 active = 0;
|
||||
|
||||
/* cancel previous task if any */
|
||||
if (self->format_task) {
|
||||
|
|
@ -655,8 +654,8 @@ si_audio_adapter_set_ports_format (WpSiAdapter * item, WpSpaPod *f,
|
|||
}
|
||||
|
||||
/* make sure the node has WP_NODE_FEATURE_PORTS */
|
||||
active = wp_object_get_active_features (WP_OBJECT (self->node));
|
||||
if (G_UNLIKELY (!(active & WP_NODE_FEATURE_PORTS))) {
|
||||
if (G_UNLIKELY (!(wp_object_test_active_features (WP_OBJECT (self->node),
|
||||
WP_NODE_FEATURE_PORTS)))) {
|
||||
g_task_return_new_error (task, WP_DOMAIN_LIBRARY,
|
||||
WP_LIBRARY_ERROR_OPERATION_FAILED,
|
||||
"node feature ports is not enabled, aborting set format operation");
|
||||
|
|
|
|||
|
|
@ -84,8 +84,8 @@ get_and_validate_item (WpProperties * props, const gchar *key)
|
|||
|
||||
str = wp_properties_get (props, key);
|
||||
if (!str || sscanf(str, "%p", &res) != 1 || !WP_IS_SI_LINKABLE (res) ||
|
||||
!(wp_object_get_active_features (WP_OBJECT (res)) &
|
||||
WP_SESSION_ITEM_FEATURE_ACTIVE))
|
||||
!(wp_object_test_active_features (WP_OBJECT (res),
|
||||
WP_SESSION_ITEM_FEATURE_ACTIVE)))
|
||||
return NULL;
|
||||
|
||||
return res;
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue