[gimp] app: fix a line art leak in bucket fill tool.
- From: Jehan <jehanp src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gimp] app: fix a line art leak in bucket fill tool.
- Date: Tue, 20 Nov 2018 16:54:02 +0000 (UTC)
commit 36c885a6df2ffb91e7e3c67ec85eacd570d9763c
Author: Jehan <jehan girinstud io>
Date: Tue Nov 20 17:49:12 2018 +0100
app: fix a line art leak in bucket fill tool.
Introduced in commit b4e12fbbbb:
gimp_pickable_contiguous_region_prepare_line_art_async() was running
gimp_pickable_flush(), which provokes the "rendered" signal on the
image projection when a change occured. As a result, it was calling
gimp_bucket_fill_compute_line_art() within itself and since
tool->priv->async was not set yet, none of the call were canceled. Hence
the same line art is computed twice, but one is leaked.
Make sure we block this signal handler as a solution.
app/tools/gimpbucketfilltool.c | 11 +++++++++++
1 file changed, 11 insertions(+)
---
diff --git a/app/tools/gimpbucketfilltool.c b/app/tools/gimpbucketfilltool.c
index 829cf87412..413f871cbc 100644
--- a/app/tools/gimpbucketfilltool.c
+++ b/app/tools/gimpbucketfilltool.c
@@ -732,12 +732,23 @@ gimp_bucket_fill_compute_line_art (GimpBucketFillTool *tool)
if (pickable)
{
+ /* gimp_pickable_contiguous_region_prepare_line_art_async()
+ * will flush the pickable, which may trigger this signal
+ * handler, and will leak a line art (as tool->priv->async has
+ * not been set yet.
+ */
+ g_signal_handlers_block_by_func (gimp_image_get_projection (GIMP_IMAGE (image)),
+ G_CALLBACK (gimp_bucket_fill_tool_projection_rendered),
+ tool);
tool->priv->async =
gimp_pickable_contiguous_region_prepare_line_art_async (
pickable,
options->fill_transparent,
options->line_art_threshold,
+1);
+ g_signal_handlers_unblock_by_func (gimp_image_get_projection (GIMP_IMAGE (image)),
+ G_CALLBACK (gimp_bucket_fill_tool_projection_rendered),
+ tool);
gimp_async_add_callback (tool->priv->async,
(GimpAsyncCallback) gimp_bucket_fill_compute_line_art_cb,
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]