From ac38b8fa337df478c4751040adf26bdf3feb02cf Mon Sep 17 00:00:00 2001 From: Julian Bouzas Date: Tue, 21 Apr 2026 11:18:55 -0400 Subject: [PATCH] m-lua-scripting: Add Lua API for new WpStateMetadata class --- modules/module-lua-scripting/api/api.c | 51 ++++++++++++++++++++++++ modules/module-lua-scripting/api/api.lua | 1 + 2 files changed, 52 insertions(+) diff --git a/modules/module-lua-scripting/api/api.c b/modules/module-lua-scripting/api/api.c index 3b9dfdde..b15ac2cf 100644 --- a/modules/module-lua-scripting/api/api.c +++ b/modules/module-lua-scripting/api/api.c @@ -1697,6 +1697,55 @@ static const luaL_Reg state_methods[] = { { NULL, NULL } }; +/* WpStateMetadata */ + +static int +state_metadata_new (lua_State *L) +{ + const gchar *name = luaL_checkstring (L, 1); + WpStateMetadata *state_meta = wp_state_metadata_new (get_wp_core (L), name); + wplua_pushobject (L, state_meta); + return 1; +} + +static int +state_metadata_clear (lua_State *L) +{ + WpStateMetadata *state_meta = wplua_checkobject (L, 1, + WP_TYPE_STATE_METADATA); + wp_state_metadata_clear (state_meta); + return 0; +} + +static int +state_metadata_get (lua_State *L) +{ + WpStateMetadata *state_meta = wplua_checkobject (L, 1, + WP_TYPE_STATE_METADATA); + const gchar *key = luaL_checkstring (L, 2); + const gchar *v = wp_state_metadata_get (state_meta, key); + lua_pushstring (L, v); + return 1; +} + +static int +state_metadata_set (lua_State *L) +{ + WpStateMetadata *state_meta = wplua_checkobject (L, 1, + WP_TYPE_STATE_METADATA); + const gchar *key = luaL_checkstring (L, 2); + const gchar *value = luaL_opt (L, luaL_checkstring, 3, NULL); + wp_state_metadata_set (state_meta, key, value); + return 0; +} + +static const luaL_Reg state_metadata_methods[] = { + { "clear", state_metadata_clear }, + { "get", state_metadata_get }, + { "set", state_metadata_set }, + { NULL, NULL } +}; + /* ImplModule */ static int @@ -3262,6 +3311,8 @@ wp_lua_scripting_api_init (lua_State *L) NULL, pipewire_object_methods); wplua_register_type_methods (L, WP_TYPE_STATE, state_new, state_methods); + wplua_register_type_methods (L, WP_TYPE_STATE_METADATA, + state_metadata_new, state_metadata_methods); wplua_register_type_methods (L, WP_TYPE_IMPL_MODULE, impl_module_new, NULL); wplua_register_type_methods (L, WP_TYPE_EVENT, diff --git a/modules/module-lua-scripting/api/api.lua b/modules/module-lua-scripting/api/api.lua index fe9dcdcf..e75b9cff 100644 --- a/modules/module-lua-scripting/api/api.lua +++ b/modules/module-lua-scripting/api/api.lua @@ -234,6 +234,7 @@ SANDBOX_EXPORT = { Pod = WpSpaPod, Json = WpSpaJson, State = WpState_new, + StateMetadata = WpStateMetadata_new, LocalModule = WpImplModule_new, ImplMetadata = WpImplMetadata_new, Settings = WpSettings,