app: add gimp_pickable_contiguous_region_prepare_line_art_async() ...
... and use in bucket-fill tool Add gimp_pickable_contiguous_region_prepare_line_art_async(), which computes a line-art asynchronously, and use it in the bucket-fill tool, instead of having the tool create the async op. This allows the async to keep running even after the pickable dies, since we only need the pickable's buffer, and not the pickable itself. Previously, we reffed the pickable for the duration of the async, but we could still segfault when unreffing it, if the pickable was a drawable, and its parent image had already died. Furthermore, let the async work on a copy of the pickable's buffer, rather than the pickable's buffer directly. This avoids some race conditions when the pickable is the image (i.e., when "sample merged" is active), since then we're using image projection's buffer, which is generally unsafe to use in different threads concurrently. Also, s/! has_alpha/has_alpha/ when looking for transparent pixels, and quit early, at least during this stage, if the async in canceled.
Showing with 155 additions and 88 deletions