From cdee20169ba3db62f3d3a572b804aa361d07bb9d Mon Sep 17 00:00:00 2001 From: NiLuJe Date: Sun, 13 Aug 2023 07:01:39 +0200 Subject: [PATCH] ReaderView: Make sure we unschedule the hinting task on actual teardown. onCloseDocument is way too early, if another, later onCloseDocument handler trips a ReaderUI repaint, a new task will be scheduled, and that one will never be cancelled, resulting in it running post-teardown, crashing horribly. This was for instance very easy to trigger via KOSync. Fix #10806 --- frontend/apps/reader/modules/readerview.lua | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/frontend/apps/reader/modules/readerview.lua b/frontend/apps/reader/modules/readerview.lua index 7abee08db..317355b65 100644 --- a/frontend/apps/reader/modules/readerview.lua +++ b/frontend/apps/reader/modules/readerview.lua @@ -51,6 +51,7 @@ local ReaderView = OverlapGroup:extend{ -- Crengine view mode view_mode = G_defaults:readSetting("DCREREADER_VIEW_MODE"), -- default to page mode hinting = true, + emitHintPageEvent = nil, -- visible area within current viewing page visible_area = nil, @@ -1107,9 +1108,10 @@ function ReaderView:getRenderModeMenuTable() } end -function ReaderView:onCloseDocument() - -- stop any pending HintPage event +function ReaderView:onCloseWidget() + -- Stop any pending HintPage event UIManager:unschedule(self.emitHintPageEvent) + self.emitHintPageEvent = nil end function ReaderView:onReaderReady()