diff --git a/frontend/apps/filemanager/filemanagerbookinfo.lua b/frontend/apps/filemanager/filemanagerbookinfo.lua index 2f8697c33..ed1089390 100644 --- a/frontend/apps/filemanager/filemanagerbookinfo.lua +++ b/frontend/apps/filemanager/filemanagerbookinfo.lua @@ -126,7 +126,7 @@ function BookInfo:show(file, book_props) book_props = document:getProps() book_props.pages = pages end - DocumentRegistry:closeDocument(file) + document:close() end end @@ -219,7 +219,7 @@ function BookInfo:show(file, book_props) fullscreen = true, } end - DocumentRegistry:closeDocument(file) + document:close() end if not widget then widget = InfoMessage:new{ diff --git a/frontend/document/document.lua b/frontend/document/document.lua index 52e8b05af..5f30b60b1 100644 --- a/frontend/document/document.lua +++ b/frontend/document/document.lua @@ -91,6 +91,7 @@ function Document:unlock(password) end -- this might be overridden by a document implementation +-- (in which case, do make sure it calls this one, too, to avoid refcounting mismatches in DocumentRegistry!) function Document:close() local DocumentRegistry = require("document/documentregistry") if self.is_open then diff --git a/frontend/document/documentregistry.lua b/frontend/document/documentregistry.lua index e66c6b81c..ef7b1d451 100644 --- a/frontend/document/documentregistry.lua +++ b/frontend/document/documentregistry.lua @@ -191,6 +191,7 @@ function DocumentRegistry:mimeToExt(mimetype) return self.mimetype_ext[mimetype] end +--- Returns a new Document instance on success function DocumentRegistry:openDocument(file, provider) -- force a GC, so that any previous document used memory can be reused -- immediately by this new document without having to wait for the @@ -219,6 +220,8 @@ function DocumentRegistry:openDocument(file, provider) end end +--- Does *NOT* finalize a Document instance, call its :close() instead if that's what you're looking for! +--- (i.e., nothing but Document:close should call this!) function DocumentRegistry:closeDocument(file) if self.registry[file] then self.registry[file].refs = self.registry[file].refs - 1 diff --git a/plugins/coverbrowser.koplugin/bookinfomanager.lua b/plugins/coverbrowser.koplugin/bookinfomanager.lua index c279c4cbb..c95c17105 100644 --- a/plugins/coverbrowser.koplugin/bookinfomanager.lua +++ b/plugins/coverbrowser.koplugin/bookinfomanager.lua @@ -544,7 +544,7 @@ function BookInfoManager:extractBookInfo(filepath, cover_specs) end end end - DocumentRegistry:closeDocument(filepath) + document:close() else loaded = false end diff --git a/plugins/coverbrowser.koplugin/covermenu.lua b/plugins/coverbrowser.koplugin/covermenu.lua index e772c3fa8..83c7eec0d 100644 --- a/plugins/coverbrowser.koplugin/covermenu.lua +++ b/plugins/coverbrowser.koplugin/covermenu.lua @@ -335,7 +335,7 @@ function CoverMenu:updateItems(select_number) }) end UIManager:close(self.file_dialog) - DocumentRegistry:closeDocument(file) + document:close() end end, }, @@ -468,7 +468,7 @@ function CoverMenu:onHistoryMenuHold(item) }) end UIManager:close(self.histfile_dialog) - DocumentRegistry:closeDocument(file) + document:close() end end, }, @@ -590,7 +590,7 @@ function CoverMenu:onCollectionsMenuHold(item) }) end UIManager:close(self.collfile_dialog) - DocumentRegistry:closeDocument(file) + document:close() end end, },