diff --git a/lgi/ffi.lua b/lgi/ffi.lua index b382a97e..26f31883 100644 --- a/lgi/ffi.lua +++ b/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 a/tests/pango.lua b/tests/pango.lua index e20a6799..48e7e21a 100644 --- a/tests/pango.lua +++ b/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') diff --git a/tests/progress.lua b/tests/progress.lua index c0a921bd..b2d4ee8d 100644 --- a/tests/progress.lua +++ b/tests/progress.lua @@ -9,6 +9,8 @@ --]]-------------------------------------------------------------------------- local lgi = require 'lgi' +local core = require 'lgi.core' +local GObject = lgi.GObject local Gio = lgi.Gio local GLib = lgi.GLib @@ -44,8 +46,12 @@ function progress.file_copy() check_gerror(Gio.File, 'copy_finish', self, result) loop:quit() end - - src:copy_async(dst, flags, priority, cancellable, - progress_callback, finish_callback) + if core.repo.GLib.check_version(2, 82, 0) then + src:copy_async(dst, flags, priority, cancellable, + progress_callback, finish_callback) + else + src:copy_async(dst, flags, priority, cancellable, + GObject.Closure(progress_callback), GObject.Closure(finish_callback)) + end loop:run() end