mirror of
https://gitlab.freedesktop.org/pipewire/wireplumber.git
synced 2026-05-06 10:38:08 +02:00
rescan: make sure disabled smart filters are unlinked before rescanning
This patch improves the smart filters unlinking logic by only unlinking smart filters that are disabled, instead of any kind of filters. The patch also removes redundant filter hooks.
This commit is contained in:
parent
6980f9ff5d
commit
c9dc02d941
2 changed files with 16 additions and 45 deletions
|
|
@ -324,23 +324,6 @@ SimpleEventHook {
|
|||
end
|
||||
}:register ()
|
||||
|
||||
SimpleEventHook {
|
||||
name = "lib/filter-utils/rescan-metadata-changed",
|
||||
interests = {
|
||||
EventInterest {
|
||||
Constraint { "event.type", "=", "metadata-changed" },
|
||||
Constraint { "metadata.name", "=", "filters" },
|
||||
},
|
||||
},
|
||||
execute = function (event)
|
||||
local source = event:get_source ()
|
||||
local om = source:call ("get-object-manager", "session-item")
|
||||
local metadata_om = source:call ("get-object-manager", "metadata")
|
||||
|
||||
rescanFilters (om, metadata_om)
|
||||
end
|
||||
}:register ()
|
||||
|
||||
function module.is_filter_smart (direction, link_group)
|
||||
-- Make sure direction and link_group is valid
|
||||
if direction == nil or link_group == nil then
|
||||
|
|
|
|||
|
|
@ -144,9 +144,24 @@ SimpleEventHook {
|
|||
},
|
||||
execute = function (event)
|
||||
local source = event:get_source ()
|
||||
local om = source:call ("get-object-manager", "session-item")
|
||||
|
||||
log:info ("rescanning...")
|
||||
|
||||
-- always unlink all filters that are smart and disabled
|
||||
for si in om:iterate {
|
||||
type = "SiLinkable",
|
||||
Constraint { "node.link-group", "+" },
|
||||
} do
|
||||
local node = si:get_associated_proxy ("node")
|
||||
local link_group = node.properties["node.link-group"]
|
||||
local direction = cutils.getTargetDirection (si.properties)
|
||||
if futils.is_filter_smart (direction, link_group) and
|
||||
futils.is_filter_disabled (direction, link_group) then
|
||||
unhandleLinkable (si, om)
|
||||
end
|
||||
end
|
||||
|
||||
handleLinkables (source)
|
||||
end
|
||||
}:register ()
|
||||
|
|
@ -172,8 +187,7 @@ SimpleEventHook {
|
|||
}:register ()
|
||||
|
||||
SimpleEventHook {
|
||||
name = "linking/rescan-trigger-before-filters-metadata-changed",
|
||||
before = "lib/filter-utils/rescan-metadata-changed",
|
||||
name = "linking/rescan-trigger-on-filters-metadata-changed",
|
||||
interests = {
|
||||
EventInterest {
|
||||
Constraint { "event.type", "=", "metadata-changed" },
|
||||
|
|
@ -182,32 +196,6 @@ SimpleEventHook {
|
|||
},
|
||||
execute = function (event)
|
||||
local source = event:get_source ()
|
||||
local om = source:call ("get-object-manager", "session-item")
|
||||
|
||||
-- unlink all filters
|
||||
for si in om:iterate {
|
||||
type = "SiLinkable",
|
||||
Constraint { "node.link-group", "+" },
|
||||
} do
|
||||
unhandleLinkable (si, om)
|
||||
end
|
||||
|
||||
end
|
||||
}:register ()
|
||||
|
||||
SimpleEventHook {
|
||||
name = "linking/rescan-trigger-after-filters-metadata-changed",
|
||||
after = "lib/filter-utils/rescan-metadata-changed",
|
||||
interests = {
|
||||
EventInterest {
|
||||
Constraint { "event.type", "=", "metadata-changed" },
|
||||
Constraint { "metadata.name", "=", "filters" },
|
||||
},
|
||||
},
|
||||
execute = function (event)
|
||||
local source = event:get_source ()
|
||||
local om = source:call ("get-object-manager", "session-item")
|
||||
|
||||
source:call ("schedule-rescan", "linking")
|
||||
end
|
||||
}:register ()
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue