mirror of
https://gitlab.freedesktop.org/pipewire/wireplumber.git
synced 2026-05-09 03:58:05 +02:00
policy-hooks.lua: An example of user injectible hook
This commit is contained in:
parent
bbe3b919d3
commit
f4382da5ba
2 changed files with 39 additions and 1 deletions
|
|
@ -34,7 +34,8 @@ typedef enum
|
|||
WP_EVENT_HOOK_DEFAULT_PRIORITY_PREPARE_LINK_SI = WP_EVENT_HOOK_DEFAULT_PRIORITY_LINK_TARGET_SI + PRIORITY_STEP,
|
||||
WP_EVENT_HOOK_DEFAULT_PRIORITY_FIND_BEST_TARGET_SI = WP_EVENT_HOOK_DEFAULT_PRIORITY_PREPARE_LINK_SI + PRIORITY_STEP,
|
||||
WP_EVENT_HOOK_DEFAULT_PRIORITY_FIND_DEFAULT_TARGET_SI = WP_EVENT_HOOK_DEFAULT_PRIORITY_FIND_BEST_TARGET_SI + PRIORITY_STEP,
|
||||
WP_EVENT_HOOK_DEFAULT_PRIORITY_FIND_DEFINED_TARGET_SI = WP_EVENT_HOOK_DEFAULT_PRIORITY_FIND_DEFAULT_TARGET_SI + PRIORITY_STEP,
|
||||
WP_EVENT_HOOK_DEFAULT_PRIORITY_SAMPLE_USER_POLICY_HOOK = WP_EVENT_HOOK_DEFAULT_PRIORITY_FIND_DEFAULT_TARGET_SI + PRIORITY_STEP,
|
||||
WP_EVENT_HOOK_DEFAULT_PRIORITY_FIND_DEFINED_TARGET_SI = WP_EVENT_HOOK_DEFAULT_PRIORITY_SAMPLE_USER_POLICY_HOOK + PRIORITY_STEP,
|
||||
WP_EVENT_HOOK_DEFAULT_PRIORITY_RESCAN_POLICY = WP_EVENT_HOOK_DEFAULT_PRIORITY_FIND_DEFINED_TARGET_SI + PRIORITY_STEP,
|
||||
WP_EVENT_HOOK_DEFAULT_PRIORITY_RESCAN_DEFAULT_NODES = WP_EVENT_HOOK_DEFAULT_PRIORITY_RESCAN_POLICY + PRIORITY_STEP,
|
||||
|
||||
|
|
|
|||
|
|
@ -183,6 +183,29 @@ function findDefaultTarget (event)
|
|||
putils.set_flags (si_id, si_flags)
|
||||
end
|
||||
|
||||
-- function sampleUserPolicyHook(event)
|
||||
-- local si = event:get_subject()
|
||||
-- local si_id = si.id
|
||||
-- -- pick up the flags
|
||||
-- local si_flags = putils.get_flags(si_id)
|
||||
-- local si_target = si_flags.si_target
|
||||
|
||||
-- if si_target then
|
||||
-- -- one can choose to bypass the hook if the target is picked.
|
||||
-- return
|
||||
-- end
|
||||
|
||||
-- local si_props = si.properties
|
||||
|
||||
-- Log.info(si, string.format("handling item: %s (%s) si id(%s)",
|
||||
-- tostring(si_props["node.name"]), tostring(si_props["node.id"]), si_id))
|
||||
|
||||
-- -- implement logic to pick target
|
||||
|
||||
-- -- save back the flags.
|
||||
-- putils.set_flags(si_id, si_flags)
|
||||
-- end
|
||||
|
||||
-- Traverse through all the possible targets to pick up target node.
|
||||
function findBestTarget (event)
|
||||
local si = event:get_subject ()
|
||||
|
|
@ -579,6 +602,20 @@ SimpleEventHook {
|
|||
end
|
||||
}:register ()
|
||||
|
||||
-- an example of an user injectible hook, uncomment to see it in action.
|
||||
-- SimpleEventHook { name = "sample-user-hook@policy-hooks", type =
|
||||
-- "after-events-with-event", priority = "sample-user-policy-hook",
|
||||
|
||||
-- interests = {
|
||||
-- EventInterest {
|
||||
-- Constraint { "event.type", "=", "find-target-si-and-link" },
|
||||
-- },
|
||||
-- },
|
||||
-- execute = function(event)
|
||||
-- sampleUserPolicyHook (event)
|
||||
-- end
|
||||
-- }:register()
|
||||
|
||||
SimpleEventHook {
|
||||
name = "find-defined-target@policy-hooks",
|
||||
type = "after-events-with-event",
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue