[gimp] app: make GimpApplicator's preview feature optional
- From: Michael Natterer <mitch src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gimp] app: make GimpApplicator's preview feature optional
- Date: Tue, 16 Feb 2016 21:10:23 +0000 (UTC)
commit a0b18c7929dadba5068a823b5c61b6a8fd1bb78b
Author: Michael Natterer <mitch gimp org>
Date: Tue Feb 16 00:32:27 2016 +0100
app: make GimpApplicator's preview feature optional
Don't add the preview nodes if use_preview_cache is FALSE in
gimp_applicator_new().
app/core/gimpdrawable-combine.c | 2 +-
app/core/gimpdrawable.c | 3 +-
app/core/gimpimage-merge.c | 2 +-
app/core/gimpimagemap.c | 2 +-
app/gegl/gimpapplicator.c | 47 +++++++++++++++++++++++++-------------
app/gegl/gimpapplicator.h | 3 +-
app/paint/gimppaintcore.c | 3 +-
7 files changed, 40 insertions(+), 22 deletions(-)
---
diff --git a/app/core/gimpdrawable-combine.c b/app/core/gimpdrawable-combine.c
index 281ac29..d89bf50 100644
--- a/app/core/gimpdrawable-combine.c
+++ b/app/core/gimpdrawable-combine.c
@@ -120,7 +120,7 @@ gimp_drawable_real_apply_buffer (GimpDrawable *drawable,
}
applicator = gimp_applicator_new (NULL, gimp_drawable_get_linear (drawable),
- FALSE);
+ FALSE, FALSE);
if (mask)
{
diff --git a/app/core/gimpdrawable.c b/app/core/gimpdrawable.c
index 384c77e..e88591c 100644
--- a/app/core/gimpdrawable.c
+++ b/app/core/gimpdrawable.c
@@ -947,7 +947,8 @@ gimp_drawable_sync_fs_filter (GimpDrawable *drawable,
gegl_node_add_child (node, fs_source);
- private->fs_applicator = gimp_applicator_new (node, linear, FALSE);
+ private->fs_applicator = gimp_applicator_new (node, linear,
+ FALSE, FALSE);
private->fs_crop_node =
gegl_node_new_child (node,
diff --git a/app/core/gimpimage-merge.c b/app/core/gimpimage-merge.c
index 590a4c2..60ed08b 100644
--- a/app/core/gimpimage-merge.c
+++ b/app/core/gimpimage-merge.c
@@ -616,7 +616,7 @@ gimp_image_merge_layers (GimpImage *image,
applicator =
gimp_applicator_new (NULL,
gimp_drawable_get_linear (GIMP_DRAWABLE (layer)),
- FALSE);
+ FALSE, FALSE);
if (gimp_layer_get_mask (layer) &&
gimp_layer_get_apply_mask (layer))
diff --git a/app/core/gimpimagemap.c b/app/core/gimpimagemap.c
index 6da2a0c..acc1baa 100644
--- a/app/core/gimpimagemap.c
+++ b/app/core/gimpimagemap.c
@@ -324,7 +324,7 @@ gimp_image_map_apply (GimpImageMap *image_map,
image_map->applicator =
gimp_applicator_new (filter_node,
gimp_drawable_get_linear (image_map->drawable),
- TRUE);
+ TRUE, TRUE);
gimp_filter_set_applicator (image_map->filter,
image_map->applicator);
diff --git a/app/gegl/gimpapplicator.c b/app/gegl/gimpapplicator.c
index 1fdb98d..3d77871 100644
--- a/app/gegl/gimpapplicator.c
+++ b/app/gegl/gimpapplicator.c
@@ -107,7 +107,8 @@ gimp_applicator_get_property (GObject *object,
GimpApplicator *
gimp_applicator_new (GeglNode *parent,
gboolean linear,
- gboolean use_cache)
+ gboolean use_preview_cache,
+ gboolean use_result_cache)
{
GimpApplicator *applicator;
@@ -154,24 +155,35 @@ gimp_applicator_new (GeglNode *parent,
"operation", "gegl:copy-buffer",
NULL);
- applicator->preview_cache_node =
- gegl_node_new_child (applicator->node,
- "operation", "gegl:cache",
- NULL);
-
- applicator->preview_crop_node =
- gegl_node_new_child (applicator->node,
- "operation", "gegl:nop",
- NULL);
-
gegl_node_link_many (applicator->aux_node,
applicator->apply_offset_node,
applicator->dup_apply_buffer_node,
- applicator->preview_cache_node,
- applicator->preview_crop_node,
NULL);
- gegl_node_connect_to (applicator->preview_crop_node, "output",
- applicator->mode_node, "aux");
+
+ if (use_preview_cache)
+ {
+ applicator->preview_cache_node =
+ gegl_node_new_child (applicator->node,
+ "operation", "gegl:cache",
+ NULL);
+
+ applicator->preview_crop_node =
+ gegl_node_new_child (applicator->node,
+ "operation", "gegl:nop",
+ NULL);
+
+ gegl_node_link_many (applicator->dup_apply_buffer_node,
+ applicator->preview_cache_node,
+ applicator->preview_crop_node,
+ NULL);
+ gegl_node_connect_to (applicator->preview_crop_node, "output",
+ applicator->mode_node, "aux");
+ }
+ else
+ {
+ gegl_node_connect_to (applicator->dup_apply_buffer_node, "output",
+ applicator->mode_node, "aux");
+ }
applicator->mask_node =
gegl_node_new_child (applicator->node,
@@ -193,7 +205,7 @@ gimp_applicator_new (GeglNode *parent,
"mask", applicator->affect,
NULL);
- if (use_cache)
+ if (use_result_cache)
{
applicator->output_cache_node =
gegl_node_new_child (applicator->node,
@@ -473,6 +485,9 @@ gimp_applicator_set_preview (GimpApplicator *applicator,
g_return_if_fail (GIMP_IS_APPLICATOR (applicator));
g_return_if_fail (rect != NULL);
+ if (! applicator->preview_cache_node)
+ return;
+
if (applicator->preview_enabled != enable ||
applicator->preview_rect.x != rect->x ||
applicator->preview_rect.y != rect->y ||
diff --git a/app/gegl/gimpapplicator.h b/app/gegl/gimpapplicator.h
index 91e9b8a..8983094 100644
--- a/app/gegl/gimpapplicator.h
+++ b/app/gegl/gimpapplicator.h
@@ -89,7 +89,8 @@ GType gimp_applicator_get_type (void) G_GNUC_CONST;
GimpApplicator * gimp_applicator_new (GeglNode *parent,
gboolean linear,
- gboolean use_cache);
+ gboolean use_preview_cache,
+ gboolean use_result_cache);
void gimp_applicator_set_src_buffer (GimpApplicator *applicator,
GeglBuffer *dest_buffer);
diff --git a/app/paint/gimppaintcore.c b/app/paint/gimppaintcore.c
index 514c8c1..1539b01 100644
--- a/app/paint/gimppaintcore.c
+++ b/app/paint/gimppaintcore.c
@@ -446,7 +446,8 @@ gimp_paint_core_start (GimpPaintCore *core,
if (paint_options->use_applicator)
{
- core->applicator = gimp_applicator_new (NULL, core->linear_mode, FALSE);
+ core->applicator = gimp_applicator_new (NULL, core->linear_mode,
+ FALSE, FALSE);
if (core->mask_buffer)
{
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]