From 06fa06ca5c7bbefe80db19d813138a91cf958db2 Mon Sep 17 00:00:00 2001 From: Julian Bouzas Date: Thu, 21 Sep 2023 09:04:31 -0400 Subject: [PATCH] scripts: fix minor issues with smart filters policy The filter's destination target was not being found properly due to iterating the matching rules table with ipairs instead of pairs... the later is meant to be used with JSON objects. In addition, the filters were not being re-evaluated and linked properly when a device node was removed, this is because of a typo in the find-best-target.lua script. See #501 --- src/scripts/lib/filter-utils.lua | 4 ++-- src/scripts/linking/find-best-target.lua | 2 +- src/scripts/linking/rescan.lua | 1 - 3 files changed, 3 insertions(+), 4 deletions(-) diff --git a/src/scripts/lib/filter-utils.lua b/src/scripts/lib/filter-utils.lua index fdd57823..d26e5cbf 100644 --- a/src/scripts/lib/filter-utils.lua +++ b/src/scripts/lib/filter-utils.lua @@ -95,7 +95,7 @@ local function getFilterTarget (metadata, node, om) end -- Make sure the target node properties match all rules - for key, val in ipairs(match_rules) do + for key, val in pairs(match_rules) do if n_target.properties[key] ~= val then goto skip_target end @@ -381,7 +381,7 @@ function module.get_filter_from_target (direction, si_target) if v.direction == direction and v.enabled and v.target ~= nil and - v.target.id == target.id then + v.target.id == si_target.id then return v.main_si end end diff --git a/src/scripts/linking/find-best-target.lua b/src/scripts/linking/find-best-target.lua index 7211b410..12ff709e 100644 --- a/src/scripts/linking/find-best-target.lua +++ b/src/scripts/linking/find-best-target.lua @@ -44,7 +44,7 @@ SimpleEventHook { } do local target_props = target.properties local target_node_id = target_props ["node.id"] - local si_target_node = si:get_associated_proxy ("node") + local si_target_node = target:get_associated_proxy ("node") local si_target_link_group = si_target_node.properties ["node.link-group"] local priority = tonumber (target_props ["priority.session"]) or 0 diff --git a/src/scripts/linking/rescan.lua b/src/scripts/linking/rescan.lua index 27bf09ae..35a60aee 100644 --- a/src/scripts/linking/rescan.lua +++ b/src/scripts/linking/rescan.lua @@ -151,7 +151,6 @@ SimpleEventHook { EventInterest { Constraint { "event.type", "c", "session-item-added", "session-item-removed" }, Constraint { "event.session-item.interface", "=", "linkable" }, - Constraint { "item.factory.name", "c", "si-audio-adapter", "si-node", "si-audio-virtual" }, }, -- on device Routes changed EventInterest {