save two blitbuffer memory allocations for crengine on each page turn

One for drawbuffer at CreDocument:drawCurrentView and another for
resizing of drawBuf at cre.drawCurrentPage.
pull/1054/head
chrox 10 years ago
parent f7cf20f86b
commit c2726a8f62

@ -1 +1 @@
Subproject commit 2d733e38de74b54dd6ace933a94cbc09b40fdd4d
Subproject commit 2a2c0f3c59f09d4deaeea554bb29ccb21a586da5

@ -212,10 +212,15 @@ function CreDocument:getScreenBoxesFromPositions(pos0, pos1)
end
function CreDocument:drawCurrentView(target, x, y, rect, pos)
tile_bb = Blitbuffer.new(rect.w, rect.h)
self._document:drawCurrentPage(tile_bb)
target:blitFrom(tile_bb, x, y, 0, 0, rect.w, rect.h)
tile_bb:free()
if self.buffer and (self.buffer.w ~= rect.w or self.buffer.h ~= rect.h) then
self.buffer:free()
self.buffer = nil
end
if not self.buffer then
self.buffer = Blitbuffer.new(rect.w, rect.h)
end
self._document:drawCurrentPage(self.buffer)
target:blitFrom(self.buffer, x, y, 0, 0, rect.w, rect.h)
end
function CreDocument:drawCurrentViewByPos(target, x, y, rect, pos)

@ -237,7 +237,7 @@ function Document:renderPage(pageno, rect, zoom, rotation, gamma, render_mode)
-- prepare cache item with contained blitbuffer
local tile = TileCacheItem:new{
size = size.w * size.h / 2 + 64, -- estimation
size = size.w * size.h + 64, -- estimation
excerpt = size,
pageno = pageno,
bb = Blitbuffer.new(size.w, size.h)

Loading…
Cancel
Save