buffer: add gegl_buffer_foreach_tile(); use in gegl_buffer_clear()
Factor the logic for iterating over whole-tiles contained in a given rect, and over the remaining "edge" rects, out of gegl_buffer_clear(), and into a new gegl_buffer_foreach_tile() internal function, which takes a pair of functions: one which performs the per-tile action, and one which performs the per-rect action, and calls them for each tile/edge-rect in the given region. Modify gegl_buffer_clear() to use the new function. Additionally, when voiding the tiles, call gegl_tile_handler_cache_remove() directly, to avoid voiding the tile pyramid at each base tile. Instead, have gegl_buffer_foreach_tile() void the entire region in a single step.
Showing with 136 additions and 85 deletions