From c0981a55d9ff41cea99a32ba8dd53b562ca0d5b0 Mon Sep 17 00:00:00 2001 From: NiLuJe Date: Wed, 9 Dec 2020 00:16:43 +0100 Subject: [PATCH] Make sure KindlePowerD's __gc metamethod will actually be called * Via the newproxy hack. --- frontend/device/kindle/powerd.lua | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/frontend/device/kindle/powerd.lua b/frontend/device/kindle/powerd.lua index 15140089a..cff22e6e3 100644 --- a/frontend/device/kindle/powerd.lua +++ b/frontend/device/kindle/powerd.lua @@ -125,13 +125,19 @@ function KindlePowerD:isChargingHW() return is_charging == 1 end -function KindlePowerD:__gc() +local KindlePowerD_mt = {} +function KindlePowerD_mt:__gc() if self.lipc_handle then self.lipc_handle:close() self.lipc_handle = nil end end +-- Funky ass newproxy() workaround to make __gc work on a plain table in Lua 5.1/LuaJIT +-- c.f., https://github.com/katlogic/__gc +local setmetatable = require("ffi/__gc") +setmetatable(KindlePowerD, KindlePowerD_mt) + function KindlePowerD:_readFLIntensity() return self:read_int_file(self.fl_intensity_file) end