The patch de-singletons the PageController class.
The PageController is now per-document and it gets deleted when the
document is closed.
As consequence of this, the RotationJob's done signal will not be
delivered if the document has been closed, and thus this fixes the
crash.
Sometimes annotations created on tiles mode were not shown immediately.
What requestPixmaps do is given a PixmapRequest, change its
normalizedRect attribute so the rect is tile aligned. However
refreshPixmaps was creating a PixmapRequest with the rect already tile
aligned and then delivering the PixmapRequest to requestPixmaps, which
would trye to take the requested rectangle and change it so it is also
tile aligned. Since the PixmapRequest delivered by refreshPixmaps was
already aligned, the requested rectangle was inflated by the tile
alignment procedure. After that the generated request becomes bigger
than the defined threshold and is discarded. This patch actually
removes the tile alignment logic from refreshPixmaps and let only the
requestPixmaps handle this.
They must not be swapped, because generators already swap them on their
own, and swapping them twice results in distorted pixmaps.
BUG: 318829
FIXED-IN: 4.10.3
Just use the pointer as id :-)
This is BIC and SIC, increase the soversion now to makes sure we don't forget in the future
Patch based in an earlier patch by Bogdan Cristea <cristeab@gmail.com>
REVIEW: 109115
It was only used to return 1, that was then used in
CHMGenerator::textPage, that code still looks a bit fishy, but that was already there, it's just now that looks a bit more fishier
1) Fixed underflow when memoryDiff > memoryToFree
2) Use current viewport's page number instead of any visible page as
page from which distances are calculated
3) Renamed currentVieport to visibleRect, because the currentVieport is
a different thing
The new class TileNode represents a node in the tree structure
whereas Tile is just a data structure to store the pixmap and tile rect
and is used outside tiles manager.
The miss counter was taken away. Now the algorithm relies on the
distance between the tiles and the viewport.
Also the visibleRect() and setVisibleRect() methods were removed from
TilesManager since we now pass this information to
TilesManager::cleanupPixmapMemory()
Will make it easier to make separate apps based on the core in the future
Note this will most probably break your settings if you are not running a very up to date kdelibs (4.9 or 4.10)
so be careful on updating
REVIEW: 104947
Some requests may take a while to process in a highly zoomed region.
Since those requests are not yet finished, other requests to the same
region are likely to be made (specially if the user is scrolling fast)
and the generator will have to render the same region repeatedly.
Also when changing zoom rapidly some pixmaps can arrive at the tiles
manager when another request has already been posted. This pixmap is not
necessary anymore and should be discarded (the tiles manager will get a
new pixmap anyway).
The visible region was set in the PixmapRequest only a tiles manager was
available. Because of that the generator could check if it was supposed
to used tiles by simply checking if its normalized rect was null.
However is good to know the visible region even when a tiles manager is
not present. This way if the request is big enough to start a tiles
manager we already know the visible region and can change the
PixmapRequest accordingly.