mirror of
https://gitlab.alpinelinux.org/alpine/aports.git
synced 2026-03-29 01:12:16 +01:00
47 lines
1.8 KiB
Diff
47 lines
1.8 KiB
Diff
From: Victoria Lacroix <victoria@vtrlx.ca>
|
|
Date: Wed, 4 Feb 2026 14:12:03 -0500
|
|
Subject: ffi: conform load_enum to GLib 2.87.0
|
|
|
|
GLib 2.87.0 includes a fix
|
|
(https://gitlab.gnome.org/GNOME/glib/-/merge_requests/4803) to how enum
|
|
values are handled, causing the value to be read as a Lua table instead
|
|
of a GLib array. This requires some slightly tweaked code when loading
|
|
an enum.
|
|
|
|
Forwarded: https://github.com/lgi-devs/lgi/pull/352
|
|
---
|
|
lgi/ffi.lua | 14 ++++++++++----
|
|
1 file changed, 10 insertions(+), 4 deletions(-)
|
|
|
|
diff --git a/lgi/ffi.lua b/lgi/ffi.lua
|
|
index fc66ac5..41d39d0 100644
|
|
--- a/lgi/ffi.lua
|
|
+++ b/lgi/ffi.lua
|
|
@@ -76,16 +76,22 @@ end
|
|
|
|
-- Creates new enum/flags table with all values from specified gtype.
|
|
function ffi.load_enum(gtype, name)
|
|
- local GObject = core.repo.GObject
|
|
+ local GLib, GObject = core.repo.GLib, core.repo.GObject
|
|
local is_flags = GObject.Type.is_a(gtype, GObject.Type.FLAGS)
|
|
local enum_component = component.create(
|
|
gtype, is_flags and enum.bitflags_mt or enum.enum_mt, name)
|
|
local type_class = GObject.TypeClass.ref(gtype)
|
|
local enum_class = core.record.cast(
|
|
type_class, is_flags and GObject.FlagsClass or GObject.EnumClass)
|
|
- for i = 0, enum_class.n_values - 1 do
|
|
- local val = core.record.fromarray(enum_class.values, i)
|
|
- enum_component[core.upcase(val.value_nick):gsub('%-', '_')] = val.value
|
|
+ if GLib.check_version(2, 87, 0) then
|
|
+ for i = 0, enum_class.n_values - 1 do
|
|
+ local val = core.record.fromarray(enum_class.values, i)
|
|
+ enum_component[core.upcase(val.value_nick):gsub('%-', '_')] = val.value
|
|
+ end
|
|
+ else
|
|
+ for _, val in ipairs(enum_class.values) do
|
|
+ enum_component[core.upcase(val.value_nick):gsub('%-', '_')] = val.value
|
|
+ end
|
|
end
|
|
type_class:unref()
|
|
return enum_component
|