mirror of
https://github.com/koreader/koreader.git
synced 2025-08-10 00:52:38 +00:00
enable garbage collection for pdfpage and ft_face
This commit is contained in:
10
ft.c
10
ft.c
@@ -140,9 +140,12 @@ static int renderGlyph(lua_State *L) {
|
||||
|
||||
static int doneFace(lua_State *L) {
|
||||
FT_Face *face = (FT_Face*) luaL_checkudata(L, 1, "ft_face");
|
||||
FT_Error error = FT_Done_Face(*face);
|
||||
if(error) {
|
||||
return luaL_error(L, "freetype error when freeing face");
|
||||
if(*face != NULL) {
|
||||
FT_Error error = FT_Done_Face(*face);
|
||||
if(error) {
|
||||
return luaL_error(L, "freetype error when freeing face");
|
||||
}
|
||||
*face = NULL;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
@@ -150,6 +153,7 @@ static int doneFace(lua_State *L) {
|
||||
static const struct luaL_reg ft_face_meth[] = {
|
||||
{"renderGlyph", renderGlyph},
|
||||
{"done", doneFace},
|
||||
{"__gc", doneFace},
|
||||
{NULL, NULL}
|
||||
};
|
||||
|
||||
|
||||
8
pdf.c
8
pdf.c
@@ -231,9 +231,12 @@ static int closePage(lua_State *L) {
|
||||
#endif
|
||||
//fz_free_glyph_cache(page->doc->glyphcache);
|
||||
//page->doc->glyphcache = fz_new_glyph_cache();
|
||||
pdf_free_page(page->page);
|
||||
if(page->page != NULL) {
|
||||
pdf_free_page(page->page);
|
||||
|
||||
pdf_age_store(page->doc->xref->store, 2);
|
||||
pdf_age_store(page->doc->xref->store, 2);
|
||||
page->page = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
static int drawPage(lua_State *L) {
|
||||
@@ -315,6 +318,7 @@ static const struct luaL_reg pdfpage_meth[] = {
|
||||
{"getSize", getPageSize},
|
||||
{"getUsedBBox", getUsedBBox},
|
||||
{"close", closePage},
|
||||
{"__gc", closePage},
|
||||
{"draw", drawPage},
|
||||
{NULL, NULL}
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user