summaryrefslogtreecommitdiff
path: root/src/cairo-rtree.c
Commit message (Collapse)AuthorAgeFilesLines
* gl: Decouple the glyph upon evictionChris Wilson2011-12-071-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>
* gl: Decouple glyphs on shutdown from the scaled font cachesChris Wilson2011-12-051-0/+28
| | | | Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
* rtree: Remove the unused evict hook.Chris Wilson2010-05-121-12/+1
|
* rtree: defer propagating pinned nodes until eviction.Chris Wilson2010-05-121-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.
* Update FSF addressAndrea Canciani2010-04-271-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
* rtree: Remove the false assert upon collapse.Chris Wilson2010-04-141-2/+0
|
* Move _cairo_error() to a standalone headerChris Wilson2010-01-221-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.
* [gl] Actually remove the glyph from the rtree on scaled_font_finiChris Wilson2009-07-271-0/+13
| | | | | Mark the node as available when the scaled_glyph is finished, and then attempt to collapse the parent node.
* [rtree] Merge the common unpin_and_evict_unused() routineChris Wilson2009-07-271-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.
* Add a simple rectangle tree (rtree) implementationChris Wilson2009-07-271-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.