summaryrefslogtreecommitdiff
path: root/src/cairo-rtree.c
AgeCommit message (Collapse)AuthorFilesLines
2011-12-07gl: Decouple the glyph upon evictionChris Wilson1-62/+37
In order to decouple the texture node from the scaled glyph cache, we need to add a callback from the rtree for when the node is removed. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2011-12-05gl: Decouple glyphs on shutdown from the scaled font cachesChris Wilson1-0/+28
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2010-05-12rtree: Remove the unused evict hook.Chris Wilson1-12/+1
2010-05-12rtree: defer propagating pinned nodes until eviction.Chris Wilson1-22/+11
Only during infrequent eviction do we require absolute knowledge of which graph of nodes are in use and thus pinned. So during the common use of querying the glyph cache, we just mark the leaf as used. Then we need to make space for a new glyph, we move the parents of the left nodes from the evictable list to the pinned list.
2010-04-27Update FSF addressAndrea Canciani1-1/+1
I updated the Free Software Foundation address using the following script. for i in $(git grep Temple | cut -d: -f1 ) do sed -e 's/59 Temple Place[, -]* Suite 330, Boston, MA *02111-1307[, ]* USA/51 Franklin Street, Suite 500, Boston, MA 02110-1335, USA/' -i "$i" done Fixes http://bugs.freedesktop.org/show_bug.cgi?id=21356
2010-04-14rtree: Remove the false assert upon collapse.Chris Wilson1-2/+0
2010-01-22Move _cairo_error() to a standalone headerChris Wilson1-0/+1
A pending commit will want to include some utility code from cairo and so we need to extricate the error handling from the PLT symbol hiding.
2009-07-27[gl] Actually remove the glyph from the rtree on scaled_font_finiChris Wilson1-0/+13
Mark the node as available when the scaled_glyph is finished, and then attempt to collapse the parent node.
2009-07-27[rtree] Merge the common unpin_and_evict_unused() routineChris Wilson1-2/+48
Having written the same method to prune glyphs from the rtree three times, I thought wise to add the common method to the core routines.
2009-07-27Add a simple rectangle tree (rtree) implementationChris Wilson1-0/+349
In order to efficient store small images, we need to pack them into a large texture. The rtree handles allocation of small rectangles out of a much larger whole. As well as tracking free rectangles, it can also be used to note which parts of the texture are 'pinned' -- that is have operations currently pending and so can not be modified until that batch of operations have been flushed. When the rtree is full, i.e. there is no single free rectangle to accommodate the allocation request, it will randomly evict an unpinned block large enough to fit the request. The block may comprise just a single glyph, or a subtree of many glyphs. This may not be the best strategy, but it is an effective start.