George Kiagiadakis
5a435fae11
event-dispatcher: expose iterator to iterate over the registered hooks
2023-04-17 07:48:18 -04:00
George Kiagiadakis
b100bdda4a
event-hook: remove the exec type property & enumeration
...
With the latest changes, we can implement the "after-events" type
with external code that pushes a very low priority event that is
the "rescan" event.
2023-04-17 07:48:18 -04:00
George Kiagiadakis
bcb4e80723
m-std-event-source: use type-specific event names and multiple object managers
...
It is better to have type-specific event names to minimize the amount
of constraint string matches we do on hooks, as most hooks (if not all)
are interested on specific types of objects only.
Similarly, use a different object manager for each object type to
minimize the performance impact of iterations and lookups, as all
such actions are interested in only 1 object type every time.
Port all existing hooks to the new event names and the get-object-manager API.
2023-04-17 07:48:18 -04:00
George Kiagiadakis
54b14d1a29
scripts: port suspend-node.lua to the event dispatcher architecture
2023-04-17 07:48:18 -04:00
George Kiagiadakis
6668b40941
scripts: simplify policy-device-profile.lua
2023-04-17 07:48:18 -04:00
George Kiagiadakis
c2c95bf726
scripts: port misc hooks to use the new priority enumerations
2023-04-17 07:48:18 -04:00
George Kiagiadakis
c6c740e94a
wplua: expose setmetatable / getmetatable in the sandbox
2023-04-17 07:48:18 -04:00
George Kiagiadakis
374e4ecaff
m-standard-event-source: simplify push_event, removing the subject_type
...
This avoids having to determine the subject type prior to pushing
an event from lua code and makes the call more convenient
Also add a debug statement to trace calls to push_event
2023-04-17 07:48:18 -04:00
George Kiagiadakis
5c113d2745
scripts: delete policy-node.lua
...
This has been split into smaller files in policy-desktop/
2023-04-17 07:48:18 -04:00
George Kiagiadakis
993a2686f6
scripts/policy-desktop: add main rescan script
2023-04-17 07:48:18 -04:00
George Kiagiadakis
dd733df9c3
scripts/policy-desktop: add script for the filter-forward-format logic
2023-04-17 07:48:18 -04:00
George Kiagiadakis
6bc782d070
scripts/policy-desktop: add move & follow settings handlers
2023-04-17 07:48:18 -04:00
George Kiagiadakis
67ab0eced2
scripts/lib: update policy-config to use the settings manager
2023-04-17 07:48:18 -04:00
George Kiagiadakis
57d4a8cb07
scripts/lib: add a new settings manager lua library
...
This intends to reduce the amount of code needed to maintain
tables of settings values across different scripts
2023-04-17 07:48:18 -04:00
George Kiagiadakis
73870c528b
scripts: policy-node: use policy-config library
2023-04-17 07:48:18 -04:00
George Kiagiadakis
aafac752a1
scripts: remove policy-hooks.lua
2023-04-17 07:48:18 -04:00
George Kiagiadakis
6c27da6365
scripts/policy-desktop: add back the sample user hook on a separate file
2023-04-17 07:48:18 -04:00
George Kiagiadakis
2e3d2b2bb9
scripts/policy-desktop: fix the code of the find-target hooks to work again
...
* Use a common function to unwrap the objects out of the event
* Use the same common function to get the si flags
* Do not store back the si flags - there is no point in doing that,
tables are objects in lua and they are passed around by reference
* Store the target on the event
2023-04-17 07:48:18 -04:00
George Kiagiadakis
013a61b440
scripts/lib: add policy-config script library
2023-04-17 07:48:18 -04:00
George Kiagiadakis
e5764e33a4
scripts: split policy-hooks into separate files, one for each hook
2023-04-17 07:48:18 -04:00
George Kiagiadakis
515b3f07d1
m-lua-scripting: api: bind WpEvent set_data/get_data
2023-04-17 07:48:18 -04:00
George Kiagiadakis
6c3bd9e27d
event: add datalist to store arbitrary data on the event
2023-04-17 07:48:18 -04:00
George Kiagiadakis
55122b84b4
m-standard-event-source: add "schedule-rescan" action signal
...
This can be used anywhere else in the codebase to push a "rescan-session"
event, making sure that there is only one such event pushed on the stack,
no matter how many times this is called.
2023-04-17 07:48:18 -04:00
George Kiagiadakis
24db3fe24a
event-hook: rewrite the hook priorities enum
...
Hooks need to have a priority relative to the event they are executed on,
so it does not make much sense to have all kinds of different priorities
based also on the event type and/or the module where they are defined.
Also, it wouldn't be acceptable to have such an enumeration on the public API.
2023-04-17 07:48:18 -04:00
George Kiagiadakis
e2b9cb0b5e
m-standard-event-source: export the push_event function as an action signal
2023-04-17 07:48:18 -04:00
George Kiagiadakis
252c5b4935
m-standard-event-source: refactor around a central "push_event" function
...
Also redo some priorities and rename the object-changed event
to metadata-changed
2023-04-17 07:48:18 -04:00
George Kiagiadakis
79d8c9f5d9
m-standard-event-source: pass self as the event's source object
2023-04-17 07:48:18 -04:00
George Kiagiadakis
ab1668af15
m-standard-event-source: add object-manager property
2023-04-17 07:48:18 -04:00
George Kiagiadakis
b2f2e3f745
m-standard-event-source: add SiLink to the object type & priority list
...
Just to avoid warnings for now
2023-04-17 07:48:18 -04:00
George Kiagiadakis
48635cb780
m-standard-event-source: manage all kinds of session items in the om
...
So that we can also work with SiLink objects with this object manager
2023-04-17 07:48:18 -04:00
George Kiagiadakis
c0322cb34f
m-standard-event-source: remove the devices object manager
...
That makes no sense to have. The only script that uses this can easily
be rewriten so that it uses object-added/removed instead.
2023-04-17 07:48:18 -04:00
Ashok Sidipotu
7be388c881
main: Free the component deps using the correct API
2023-04-17 07:48:18 -04:00
Julian Bouzas
102792527a
lib: remove deprecated APIs
2023-04-17 07:48:18 -04:00
Ashok Sidipotu
c0905c233f
m-settings: trigger init of WpSettings object
...
After the creation of metadata with config data, m-settings will also need to
trigger the init of WpSettings Object/API. Earlier this was done in main.c as
part of init transition but the logic there is much more generalized now and so
it has been moved here.
2023-04-17 07:48:18 -04:00
Ashok Sidipotu
d9d3a49f5a
settings: remove unnecessary log message
2023-04-17 07:48:18 -04:00
Ashok Sidipotu
85900fba64
m-lua-scripting: support dangling components
...
- Dangling components are those not present in the json config files but present
in the wireplumber lookup folders.
2023-04-17 07:48:18 -04:00
Ashok Sidipotu
6f039003ec
component-loader: support dangling components
...
- Dangling components are those not present in the json config files but present
in the wireplumber lookup folders.
2023-04-17 07:48:18 -04:00
Ashok Sidipotu
904751ede1
main.c: refactor the init transition with priority tag
...
- Support `priority` tag in definition of wireplumber components in json
config files.
- Support loading dangling components. These are components which are
NOT present in the json config files but present in the wireplumber
lookup folders.
- Simplify the init transition by removing the unneeded steps.
2023-04-17 07:48:18 -04:00
Julian Bouzas
78b0dd58db
conf: move endpoints into wireplumber.settings
2023-04-17 07:48:18 -04:00
George Kiagiadakis
497f30453d
lib: event-hook/dispatcher: constness and staticness fixes
2023-04-17 07:48:18 -04:00
Julian Bouzas
1da43c6031
settings: append matches if the rule name matches
2023-04-17 07:48:18 -04:00
Julian Bouzas
36cba7fe55
config: comment all remaining rules
2023-04-17 07:48:18 -04:00
Julian Bouzas
6afca096e8
policy-device-profile.lua: use default rules if none are defined
2023-04-17 07:48:18 -04:00
Julian Bouzas
56087777f6
bluez.lua: use default rules if none are defined
2023-04-17 07:48:18 -04:00
Julian Bouzas
ed79e9a4d0
alsa.lua: use default rules if none are defined
2023-04-17 07:48:18 -04:00
Julian Bouzas
4bb949fd89
access-default.lua: use default rules if none are defined
2023-04-17 07:48:18 -04:00
Ashok Sidipotu
119b99dc23
event-dispatcher: Add a trace log msg to indicate the events created
2023-04-17 07:48:18 -04:00
Ashok Sidipotu
0fadd4f4fd
wpexec: Add support for event dispatcher
...
-Scripts loaded with wpexec will also need 'module-standard-event-source'
to be able to convert the pipewire signals to wireplumber events.
-Simplify the init transition states.
2023-04-17 07:48:18 -04:00
Julian Bouzas
a8d6d50e2a
config: use wireplumber nomenclature for the setting names
2023-04-17 07:48:18 -04:00
Julian Bouzas
fe21c2f8b2
config: comment persistent.settings to false as it is its default value
2023-04-17 07:48:18 -04:00