summaryrefslogtreecommitdiff
path: root/media-video/wireplumber/files
diff options
context:
space:
mode:
Diffstat (limited to 'media-video/wireplumber/files')
-rw-r--r--media-video/wireplumber/files/wireplumber-0.4.10-alsa.lua-fix-device-name-deduplication-when-reserva.patch117
-rw-r--r--media-video/wireplumber/files/wireplumber-0.4.10-config-fix-enabled-property-to-default-to-true-when.patch129
-rw-r--r--media-video/wireplumber/files/wireplumber-0.4.10-m-default-nodes-don-t-check-if-all-device-nodes-are.patch187
-rw-r--r--media-video/wireplumber/files/wireplumber-0.4.10-m-lua-scripting-allow-converting-GValue-holding-NUL.patch36
-rw-r--r--media-video/wireplumber/files/wireplumber-0.4.10-m-lua-scripting-fix-object-refcounting.patch32
5 files changed, 0 insertions, 501 deletions
diff --git a/media-video/wireplumber/files/wireplumber-0.4.10-alsa.lua-fix-device-name-deduplication-when-reserva.patch b/media-video/wireplumber/files/wireplumber-0.4.10-alsa.lua-fix-device-name-deduplication-when-reserva.patch
deleted file mode 100644
index 610db0e11e89..000000000000
--- a/media-video/wireplumber/files/wireplumber-0.4.10-alsa.lua-fix-device-name-deduplication-when-reserva.patch
+++ /dev/null
@@ -1,117 +0,0 @@
-https://gitlab.freedesktop.org/pipewire/wireplumber/-/commit/c00c5a6675b6640db13111c808eaa3251917c412
-
-From c00c5a6675b6640db13111c808eaa3251917c412 Mon Sep 17 00:00:00 2001
-From: Julian Bouzas <julian.bouzas@collabora.com>
-Date: Wed, 18 May 2022 10:51:41 -0400
-Subject: [PATCH] alsa.lua: fix device name deduplication when reservation is
- enabled
-
-Fixes #241
----
- src/scripts/monitors/alsa.lua | 47 +++++++++++++++++++----------------
- 1 file changed, 25 insertions(+), 22 deletions(-)
-
-diff --git a/src/scripts/monitors/alsa.lua b/src/scripts/monitors/alsa.lua
-index 01d241db..7beed3a8 100644
---- a/src/scripts/monitors/alsa.lua
-+++ b/src/scripts/monitors/alsa.lua
-@@ -11,6 +11,10 @@ local config = ... or {}
- -- ensure config.properties is not nil
- config.properties = config.properties or {}
-
-+-- unique device/node name tables
-+device_names_table = nil
-+node_names_table = nil
-+
- -- preprocess rules and create Interest objects
- for _, r in ipairs(config.rules or {}) do
- r.interests = {}
-@@ -41,16 +45,6 @@ function rulesApplyProperties(properties)
- end
- end
-
--function findDuplicate(parent, id, property, value)
-- for i = 0, id - 1, 1 do
-- local obj = parent:get_managed_object(i)
-- if obj and obj.properties[property] == value then
-- return true
-- end
-- end
-- return false
--end
--
- function nonempty(str)
- return str ~= "" and str or nil
- end
-@@ -125,11 +119,11 @@ function createNode(parent, id, type, factory, properties)
-
- -- deduplicate nodes with the same name
- for counter = 2, 99, 1 do
-- if findDuplicate(parent, id, "node.name", properties["node.name"]) then
-- properties["node.name"] = name .. "." .. counter
-- else
-+ if node_names_table[properties["node.name"]] ~= true then
-+ node_names_table[properties["node.name"]] = true
- break
- end
-+ properties["node.name"] = name .. "." .. counter
- end
- end
-
-@@ -186,6 +180,10 @@ function createDevice(parent, id, factory, properties)
- local device = SpaDevice(factory, properties)
- if device then
- device:connect("create-object", createNode)
-+ device:connect("object-removed", function (parent, id)
-+ local node = parent:get_managed_object(id)
-+ node_names_table[node.properties["node.name"]] = nil
-+ end)
- device:activate(Feature.SpaDevice.ENABLED | Feature.Proxy.BOUND)
- parent:store_managed_object(id, device)
- else
-@@ -205,11 +203,11 @@ function prepareDevice(parent, id, type, factory, properties)
-
- -- deduplicate devices with the same name
- for counter = 2, 99, 1 do
-- if findDuplicate(parent, id, "device.name", properties["device.name"]) then
-- properties["device.name"] = name .. "." .. counter
-- else
-+ if device_names_table[properties["device.name"]] ~= true then
-+ device_names_table[properties["device.name"]] = true
- break
- end
-+ properties["device.name"] = name .. "." .. counter
- end
-
- -- ensure the device has a description
-@@ -337,16 +335,21 @@ function createMonitor ()
- -- handle create-object to prepare device
- m:connect("create-object", prepareDevice)
-
-- -- if dbus reservation, handle object-removed to destroy device reservations
-- if rd_plugin then
-- m:connect("object-removed", function (parent, id)
-- local device = parent:get_managed_object(id)
-+ -- handle object-removed to destroy device reservations and recycle device name
-+ m:connect("object-removed", function (parent, id)
-+ local device = parent:get_managed_object(id)
-+ if rd_plugin then
- local rd_name = device.properties["api.dbus.ReserveDevice1"]
- if rd_name then
- rd_plugin:call("destroy-reservation", rd_name)
- end
-- end)
-- end
-+ end
-+ device_names_table[device.properties["device.name"]] = nil
-+ end)
-+
-+ -- reset the name tables to make sure names are recycled
-+ device_names_table = {}
-+ node_names_table = {}
-
- -- activate monitor
- Log.info("Activating ALSA monitor")
---
-GitLab
-
diff --git a/media-video/wireplumber/files/wireplumber-0.4.10-config-fix-enabled-property-to-default-to-true-when.patch b/media-video/wireplumber/files/wireplumber-0.4.10-config-fix-enabled-property-to-default-to-true-when.patch
deleted file mode 100644
index 40a486616580..000000000000
--- a/media-video/wireplumber/files/wireplumber-0.4.10-config-fix-enabled-property-to-default-to-true-when.patch
+++ /dev/null
@@ -1,129 +0,0 @@
-https://gitlab.freedesktop.org/pipewire/wireplumber/-/commit/1f045309208ab5d927883b5adc2b7d1623fae162
-
-From 1f045309208ab5d927883b5adc2b7d1623fae162 Mon Sep 17 00:00:00 2001
-From: George Kiagiadakis <george.kiagiadakis@collabora.com>
-Date: Thu, 12 May 2022 12:19:38 +0300
-Subject: [PATCH] config: fix enabled property to default to "true" when not
- defined
-
-Fixes backwards compatibility with older config files
-
-Fixes: #254
----
- src/config/bluetooth.lua.d/30-bluez-monitor.lua | 2 +-
- src/config/main.lua.d/20-default-access.lua | 2 +-
- src/config/main.lua.d/30-alsa-monitor.lua | 2 +-
- src/config/main.lua.d/30-libcamera-monitor.lua | 2 +-
- src/config/main.lua.d/30-v4l2-monitor.lua | 2 +-
- src/config/main.lua.d/40-device-defaults.lua | 2 +-
- src/config/main.lua.d/40-stream-defaults.lua | 2 +-
- src/config/policy.lua.d/10-default-policy.lua | 2 +-
- 8 files changed, 8 insertions(+), 8 deletions(-)
-
-diff --git a/src/config/bluetooth.lua.d/30-bluez-monitor.lua b/src/config/bluetooth.lua.d/30-bluez-monitor.lua
-index b40026c2..a870aa5d 100644
---- a/src/config/bluetooth.lua.d/30-bluez-monitor.lua
-+++ b/src/config/bluetooth.lua.d/30-bluez-monitor.lua
-@@ -3,7 +3,7 @@ bluez_monitor.properties = {}
- bluez_monitor.rules = {}
-
- function bluez_monitor.enable()
-- if not bluez_monitor.enabled then
-+ if bluez_monitor.enabled == false then
- return
- end
-
-diff --git a/src/config/main.lua.d/20-default-access.lua b/src/config/main.lua.d/20-default-access.lua
-index a6ffb2ee..0a7eb955 100644
---- a/src/config/main.lua.d/20-default-access.lua
-+++ b/src/config/main.lua.d/20-default-access.lua
-@@ -3,7 +3,7 @@ default_access.properties = {}
- default_access.rules = {}
-
- function default_access.enable()
-- if not default_access.enabled then
-+ if default_access.enabled == false then
- return
- end
-
-diff --git a/src/config/main.lua.d/30-alsa-monitor.lua b/src/config/main.lua.d/30-alsa-monitor.lua
-index da0b2c70..8e45e434 100644
---- a/src/config/main.lua.d/30-alsa-monitor.lua
-+++ b/src/config/main.lua.d/30-alsa-monitor.lua
-@@ -3,7 +3,7 @@ alsa_monitor.properties = {}
- alsa_monitor.rules = {}
-
- function alsa_monitor.enable()
-- if not alsa_monitor.enabled then
-+ if alsa_monitor.enabled == false then
- return
- end
-
-diff --git a/src/config/main.lua.d/30-libcamera-monitor.lua b/src/config/main.lua.d/30-libcamera-monitor.lua
-index 4a8257ff..cd820a83 100644
---- a/src/config/main.lua.d/30-libcamera-monitor.lua
-+++ b/src/config/main.lua.d/30-libcamera-monitor.lua
-@@ -3,7 +3,7 @@ libcamera_monitor.properties = {}
- libcamera_monitor.rules = {}
-
- function libcamera_monitor.enable()
-- if not libcamera_monitor.enabled then
-+ if libcamera_monitor.enabled == false then
- return
- end
-
-diff --git a/src/config/main.lua.d/30-v4l2-monitor.lua b/src/config/main.lua.d/30-v4l2-monitor.lua
-index 7cfd4bcd..3fbdc9e7 100644
---- a/src/config/main.lua.d/30-v4l2-monitor.lua
-+++ b/src/config/main.lua.d/30-v4l2-monitor.lua
-@@ -3,7 +3,7 @@ v4l2_monitor.properties = {}
- v4l2_monitor.rules = {}
-
- function v4l2_monitor.enable()
-- if not v4l2_monitor.enabled then
-+ if v4l2_monitor.enabled == false then
- return
- end
-
-diff --git a/src/config/main.lua.d/40-device-defaults.lua b/src/config/main.lua.d/40-device-defaults.lua
-index 55aafe85..2204c4ac 100644
---- a/src/config/main.lua.d/40-device-defaults.lua
-+++ b/src/config/main.lua.d/40-device-defaults.lua
-@@ -38,7 +38,7 @@ device_defaults.persistent_profiles = {
- }
-
- function device_defaults.enable()
-- if not device_defaults.enabled then
-+ if device_defaults.enabled == false then
- return
- end
-
-diff --git a/src/config/main.lua.d/40-stream-defaults.lua b/src/config/main.lua.d/40-stream-defaults.lua
-index 2975f4f6..307d83df 100644
---- a/src/config/main.lua.d/40-stream-defaults.lua
-+++ b/src/config/main.lua.d/40-stream-defaults.lua
-@@ -25,7 +25,7 @@ stream_defaults.rules = {
- }
-
- function stream_defaults.enable()
-- if not stream_defaults.enabled then
-+ if stream_defaults.enabled == false then
- return
- end
-
-diff --git a/src/config/policy.lua.d/10-default-policy.lua b/src/config/policy.lua.d/10-default-policy.lua
-index 7b00e94e..edfdeb1c 100644
---- a/src/config/policy.lua.d/10-default-policy.lua
-+++ b/src/config/policy.lua.d/10-default-policy.lua
-@@ -38,7 +38,7 @@ bluetooth_policy.policy = {
- }
-
- function default_policy.enable()
-- if not default_policy.enabled then
-+ if default_policy.enabled == false then
- return
- end
-
---
-GitLab
-
diff --git a/media-video/wireplumber/files/wireplumber-0.4.10-m-default-nodes-don-t-check-if-all-device-nodes-are.patch b/media-video/wireplumber/files/wireplumber-0.4.10-m-default-nodes-don-t-check-if-all-device-nodes-are.patch
deleted file mode 100644
index d9c51489a893..000000000000
--- a/media-video/wireplumber/files/wireplumber-0.4.10-m-default-nodes-don-t-check-if-all-device-nodes-are.patch
+++ /dev/null
@@ -1,187 +0,0 @@
-https://gitlab.freedesktop.org/pipewire/wireplumber/-/commit/392cce2136e81ac3146078eacbbae85b694c917a
-
-From 392cce2136e81ac3146078eacbbae85b694c917a Mon Sep 17 00:00:00 2001
-From: Julian Bouzas <julian.bouzas@collabora.com>
-Date: Fri, 20 May 2022 07:38:24 -0400
-Subject: [PATCH] m-default-nodes: don't check if all device nodes are ready
- when finding default node
-
-This check was originally added to avoid a small audio glitch when changing
-default nodes while also changing the device profile (eg Gnome Sound Settings).
-The check is removed because it causes issues when disabling alsa nodes. There
-are plans to fix the audio glitch issue in the future with the planned
-event-dispatcher architecture.
-
-Fixes #279
----
- modules/module-default-nodes.c | 136 ---------------------------------
- 1 file changed, 136 deletions(-)
-
-diff --git a/modules/module-default-nodes.c b/modules/module-default-nodes.c
-index 0fdaed5..577f9bb 100644
---- a/modules/module-default-nodes.c
-+++ b/modules/module-default-nodes.c
-@@ -345,135 +345,6 @@ reevaluate_default_node (WpDefaultNodes * self, WpMetadata *m, gint node_t)
- }
- }
-
--static guint
--get_device_total_nodes (WpPipewireObject * proxy)
--{
-- g_autoptr (WpIterator) profiles = NULL;
-- g_auto (GValue) item = G_VALUE_INIT;
--
-- profiles = wp_pipewire_object_enum_params_sync (proxy, "Profile", NULL);
-- if (!profiles)
-- return 0;
--
-- for (; wp_iterator_next (profiles, &item); g_value_unset (&item)) {
-- WpSpaPod *pod = g_value_get_boxed (&item);
-- gint idx = -1;
-- const gchar *name = NULL;
-- g_autoptr (WpSpaPod) classes = NULL;
--
-- /* Parse */
-- if (!wp_spa_pod_get_object (pod, NULL,
-- "index", "i", &idx,
-- "name", "s", &name,
-- "classes", "?P", &classes,
-- NULL))
-- continue;
-- if (!classes)
-- continue;
--
-- /* Parse profile classes */
-- {
-- g_autoptr (WpIterator) it = wp_spa_pod_new_iterator (classes);
-- g_auto (GValue) v = G_VALUE_INIT;
-- gint total_nodes = 0;
-- for (; wp_iterator_next (it, &v); g_value_unset (&v)) {
-- WpSpaPod *entry = g_value_get_boxed (&v);
-- g_autoptr (WpSpaPodParser) pp = NULL;
-- const gchar *media_class = NULL;
-- gint n_nodes = 0;
-- g_return_val_if_fail (entry, 0);
-- if (!wp_spa_pod_is_struct (entry))
-- continue;
-- pp = wp_spa_pod_parser_new_struct (entry);
-- g_return_val_if_fail (pp, 0);
-- g_return_val_if_fail (wp_spa_pod_parser_get_string (pp, &media_class), 0);
-- g_return_val_if_fail (wp_spa_pod_parser_get_int (pp, &n_nodes), 0);
-- wp_spa_pod_parser_end (pp);
--
-- total_nodes += n_nodes;
-- }
--
-- if (total_nodes > 0)
-- return total_nodes;
-- }
-- }
--
-- return 0;
--}
--
--static gboolean
--nodes_ready (WpDefaultNodes * self)
--{
-- g_autoptr (WpIterator) it = NULL;
-- g_auto (GValue) val = G_VALUE_INIT;
--
-- /* Get the total number of nodes for each device and make sure they exist
-- * and have at least 1 port */
-- it = wp_object_manager_new_filtered_iterator (self->rescan_om,
-- WP_TYPE_DEVICE, NULL);
-- for (; wp_iterator_next (it, &val); g_value_unset (&val)) {
-- WpPipewireObject *device = g_value_get_object (&val);
-- guint total_nodes = get_device_total_nodes (device);
-- if (total_nodes > 0) {
-- guint32 device_id = wp_proxy_get_bound_id (WP_PROXY (device));
-- g_autoptr (WpIterator) node_it = NULL;
-- g_auto (GValue) node_val = G_VALUE_INIT;
-- guint ready_nodes = 0;
--
-- node_it = wp_object_manager_new_filtered_iterator (self->rescan_om,
-- WP_TYPE_NODE, WP_CONSTRAINT_TYPE_PW_PROPERTY,
-- PW_KEY_DEVICE_ID, "=i", device_id, NULL);
-- for (; wp_iterator_next (node_it, &node_val); g_value_unset (&node_val)) {
-- WpPipewireObject *node = g_value_get_object (&node_val);
-- g_autoptr (WpPort) port =
-- wp_object_manager_lookup (self->rescan_om,
-- WP_TYPE_PORT, WP_CONSTRAINT_TYPE_PW_PROPERTY,
-- PW_KEY_NODE_ID, "=u", wp_proxy_get_bound_id (WP_PROXY (node)),
-- NULL);
-- if (port)
-- ready_nodes++;
-- }
--
-- if (ready_nodes < total_nodes) {
-- const gchar *device_name = wp_pipewire_object_get_property (
-- WP_PIPEWIRE_OBJECT (device), PW_KEY_DEVICE_NAME);
-- wp_debug_object (self, "device '%s' is not ready (%d/%d)", device_name,
-- ready_nodes, total_nodes);
-- return FALSE;
-- }
-- }
-- }
--
-- /* Make sure Audio and Video virtual sources have ports */
-- {
-- g_autoptr (WpIterator) node_it = NULL;
-- g_auto (GValue) node_val = G_VALUE_INIT;
-- node_it = wp_object_manager_new_filtered_iterator (self->rescan_om,
-- WP_TYPE_NODE, WP_CONSTRAINT_TYPE_PW_PROPERTY, PW_KEY_DEVICE_ID, "-",
-- NULL);
-- for (; wp_iterator_next (node_it, &node_val); g_value_unset (&node_val)) {
-- WpPipewireObject *node = g_value_get_object (&node_val);
-- const gchar *media_class = wp_pipewire_object_get_property (
-- WP_PIPEWIRE_OBJECT (node), PW_KEY_MEDIA_CLASS);
-- g_autoptr (WpPort) port =
-- wp_object_manager_lookup (self->rescan_om,
-- WP_TYPE_PORT, WP_CONSTRAINT_TYPE_PW_PROPERTY,
-- PW_KEY_NODE_ID, "=u", wp_proxy_get_bound_id (WP_PROXY (node)),
-- NULL);
-- if (!port &&
-- (g_strcmp0 ("Audio/Source/Virtual", media_class) == 0 ||
-- g_strcmp0 ("Video/Source/Virtual", media_class) == 0)) {
-- const gchar *node_name = wp_pipewire_object_get_property (
-- WP_PIPEWIRE_OBJECT (node), PW_KEY_NODE_NAME);
-- wp_debug_object (self, "virtual node '%s' is not ready", node_name);
-- return FALSE;
-- }
-- }
-- }
--
-- return TRUE;
--}
--
- static void
- sync_rescan (WpCore * core, GAsyncResult * res, WpDefaultNodes * self)
- {
-@@ -491,10 +362,6 @@ sync_rescan (WpCore * core, GAsyncResult * res, WpDefaultNodes * self)
- if (!metadata)
- return;
-
-- /* Make sure nodes are ready for current profile */
-- if (!nodes_ready (self))
-- return;
--
- wp_trace_object (self, "re-evaluating defaults");
- reevaluate_default_node (self, metadata, AUDIO_SINK);
- reevaluate_default_node (self, metadata, AUDIO_SOURCE);
-@@ -584,13 +451,10 @@ on_metadata_added (WpObjectManager *om, WpMetadata *metadata, gpointer d)
- self->rescan_om = wp_object_manager_new ();
- wp_object_manager_add_interest (self->rescan_om, WP_TYPE_DEVICE, NULL);
- wp_object_manager_add_interest (self->rescan_om, WP_TYPE_NODE, NULL);
-- wp_object_manager_add_interest (self->rescan_om, WP_TYPE_PORT, NULL);
- wp_object_manager_request_object_features (self->rescan_om, WP_TYPE_DEVICE,
- WP_OBJECT_FEATURES_ALL);
- wp_object_manager_request_object_features (self->rescan_om, WP_TYPE_NODE,
- WP_OBJECT_FEATURES_ALL);
-- wp_object_manager_request_object_features (self->rescan_om, WP_TYPE_PORT,
-- WP_OBJECT_FEATURES_ALL);
- g_signal_connect_object (self->rescan_om, "objects-changed",
- G_CALLBACK (schedule_rescan), self, G_CONNECT_SWAPPED);
- g_signal_connect_object (self->rescan_om, "object-added",
---
-2.35.1
-
diff --git a/media-video/wireplumber/files/wireplumber-0.4.10-m-lua-scripting-allow-converting-GValue-holding-NUL.patch b/media-video/wireplumber/files/wireplumber-0.4.10-m-lua-scripting-allow-converting-GValue-holding-NUL.patch
deleted file mode 100644
index c319ac4a617b..000000000000
--- a/media-video/wireplumber/files/wireplumber-0.4.10-m-lua-scripting-allow-converting-GValue-holding-NUL.patch
+++ /dev/null
@@ -1,36 +0,0 @@
-https://gitlab.freedesktop.org/pipewire/wireplumber/-/commit/c2f31bb550755acba31da2e9f5bbdf646ed5e805
-
-From c2f31bb550755acba31da2e9f5bbdf646ed5e805 Mon Sep 17 00:00:00 2001
-From: Julian Bouzas <julian.bouzas@collabora.com>
-Date: Mon, 16 May 2022 15:41:10 -0400
-Subject: [PATCH] m-lua-scripting: allow converting GValue holding NULL objects
- to Lua
-
----
- modules/module-lua-scripting/wplua/value.c | 9 +++++++--
- 1 file changed, 7 insertions(+), 2 deletions(-)
-
-diff --git a/modules/module-lua-scripting/wplua/value.c b/modules/module-lua-scripting/wplua/value.c
-index 133051a4..e31ae4ac 100644
---- a/modules/module-lua-scripting/wplua/value.c
-+++ b/modules/module-lua-scripting/wplua/value.c
-@@ -314,9 +314,14 @@ wplua_gvalue_to_lua (lua_State *L, const GValue *v)
- wplua_pushboxed (L, G_VALUE_TYPE (v), g_value_dup_boxed (v));
- break;
- case G_TYPE_OBJECT:
-- case G_TYPE_INTERFACE:
-- wplua_pushobject (L, g_value_dup_object (v));
-+ case G_TYPE_INTERFACE: {
-+ GObject *object = g_value_dup_object (v);
-+ if (object)
-+ wplua_pushobject (L, g_value_dup_object (v));
-+ else
-+ lua_pushnil (L);
- break;
-+ }
- case G_TYPE_ENUM:
- wplua_enum_to_lua (L, g_value_get_enum (v), G_VALUE_TYPE (v));
- break;
---
-GitLab
-
diff --git a/media-video/wireplumber/files/wireplumber-0.4.10-m-lua-scripting-fix-object-refcounting.patch b/media-video/wireplumber/files/wireplumber-0.4.10-m-lua-scripting-fix-object-refcounting.patch
deleted file mode 100644
index 0b86979ce732..000000000000
--- a/media-video/wireplumber/files/wireplumber-0.4.10-m-lua-scripting-fix-object-refcounting.patch
+++ /dev/null
@@ -1,32 +0,0 @@
-https://gitlab.freedesktop.org/pipewire/wireplumber/-/commit/7908b8d7be2a2992c57cd549054eda7ce46e4b44
-
-From 13b85bd4a25ab374f5e5e90b7288e6987996856e Mon Sep 17 00:00:00 2001
-From: Michael Olbrich <m.olbrich@pengutronix.de>
-Date: Tue, 24 May 2022 11:35:15 +0200
-Subject: [PATCH] m-lua-scripting: fix object refcounting
-
-7908b8d7be2a2992c57cd549054eda7ce46e4b44 ("m-lua-scripting: allow
-converting GValue holding NULL objects to Lua") accidentally added a second
-refcount. As a result, the objects are never freeded.
-
-Remove the second refcount to fix this.
----
- modules/module-lua-scripting/wplua/value.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/modules/module-lua-scripting/wplua/value.c b/modules/module-lua-scripting/wplua/value.c
-index e31ae4a..a7927dc 100644
---- a/modules/module-lua-scripting/wplua/value.c
-+++ b/modules/module-lua-scripting/wplua/value.c
-@@ -317,7 +317,7 @@ wplua_gvalue_to_lua (lua_State *L, const GValue *v)
- case G_TYPE_INTERFACE: {
- GObject *object = g_value_dup_object (v);
- if (object)
-- wplua_pushobject (L, g_value_dup_object (v));
-+ wplua_pushobject (L, object);
- else
- lua_pushnil (L);
- break;
---
-2.35.1
-