Files
ports/devel/lua-lgi/files/patch-lua-lgi-glib_fix
2026-10-04 04:07:15 +00:00

69 lines
2.5 KiB
Plaintext

Minimal port of lua-lgi fix for new Glib
https://github.com/lgi-devs/lgi/pull/361
diff --git lgi/ffi.lua.orig lgi/ffi.lua
index b382a97e..26f31883 100644
--- lgi/ffi.lua.orig
+++ lgi/ffi.lua
@@ -75,18 +75,33 @@ 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 type_class
+ -- GLib >= 2.86 deprecates GObject.TypeClass.ref() in favour of .get()
+ if GLib.check_version(2, 86, 0) then
+ type_class = GObject.TypeClass.ref(gtype)
+ else
+ type_class = GObject.TypeClass.get(gtype)
+ end
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
+ -- For GLib versions below 2.86, type_class was ref'd and needs to be unref'd
+ if GLib.check_version(2, 86, 0) then
+ type_class:unref()
end
- type_class:unref()
return enum_component
end
diff --git tests/pango.lua.orig tests/pango.lua
index e20a6799..48e7e21a 100644
--- tests/pango.lua.orig
+++ tests/pango.lua
@@ -35,8 +35,14 @@ function pango.glyphstring()
local offset = items[i].offset
local length = items[i].length
local analysis = items[i].analysis
- local pgs = Pango.GlyphString()
- Pango.shape(string.sub(s,1+offset), length, analysis, pgs)
+ local pgs
+ if Pango.version_check(1, 56, 2) then
+ pgs = Pango.GlyphString()
+ Pango.shape(string.sub(s,1+offset), length, analysis, pgs)
+ else
+ pgs = Pango.shape(string.sub(s,1+offset), length, analysis)
+ end
+
-- Pull out individual glyphs with pgs.glyphs
local glyphs = pgs.glyphs
check(type(glyphs) == 'table')