[gimp] app: make GimpImageMap merge the filter before removing it from the drawable
- From: Michael Natterer <mitch src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gimp] app: make GimpImageMap merge the filter before removing it from the drawable
- Date: Sun, 1 Jun 2014 14:27:07 +0000 (UTC)
commit 9125f876df02b9275621da19e82ee37efab2158c
Author: Michael Natterer <mitch gimp org>
Date: Sun Jun 1 16:22:35 2014 +0200
app: make GimpImageMap merge the filter before removing it from the drawable
This is a prerequisite for making it use cached results; not quite
there yet.
app/core/gimpimagemap.c | 39 ++++++++++++++++++++++++---------------
1 files changed, 24 insertions(+), 15 deletions(-)
---
diff --git a/app/core/gimpimagemap.c b/app/core/gimpimagemap.c
index 597a5e1..1cea9a2 100644
--- a/app/core/gimpimagemap.c
+++ b/app/core/gimpimagemap.c
@@ -69,7 +69,6 @@ struct _GimpImageMap
GimpImageMapRegion region;
gboolean gamma_hack;
- gboolean filtering;
GeglRectangle filter_area;
GimpFilter *filter;
@@ -84,8 +83,10 @@ struct _GimpImageMap
static void gimp_image_map_dispose (GObject *object);
static void gimp_image_map_finalize (GObject *object);
+static gboolean gimp_image_map_is_filtering (GimpImageMap *image_map);
static gboolean gimp_image_map_add_filter (GimpImageMap *image_map);
static gboolean gimp_image_map_remove_filter (GimpImageMap *image_map);
+
static void gimp_image_map_update_drawable (GimpImageMap *image_map,
const GeglRectangle *area);
@@ -469,12 +470,14 @@ gimp_image_map_commit (GimpImageMap *image_map,
g_return_if_fail (GIMP_IS_IMAGE_MAP (image_map));
g_return_if_fail (progress == NULL || GIMP_IS_PROGRESS (progress));
- if (gimp_image_map_remove_filter (image_map))
+ if (gimp_image_map_is_filtering (image_map))
{
gimp_drawable_merge_filter (image_map->drawable, image_map->filter,
progress,
image_map->undo_desc);
+ gimp_image_map_remove_filter (image_map);
+
g_signal_emit (image_map, image_map_signals[FLUSH], 0);
}
}
@@ -494,15 +497,11 @@ gimp_image_map_abort (GimpImageMap *image_map)
/* private functions */
static gboolean
-gimp_image_map_add_filter (GimpImageMap *image_map)
+gimp_image_map_is_filtering (GimpImageMap *image_map)
{
if (image_map->filter &&
- ! gimp_drawable_has_filter (image_map->drawable, image_map->filter))
+ gimp_drawable_has_filter (image_map->drawable, image_map->filter))
{
- gimp_drawable_add_filter (image_map->drawable, image_map->filter);
-
- image_map->filtering = TRUE;
-
return TRUE;
}
@@ -510,16 +509,13 @@ gimp_image_map_add_filter (GimpImageMap *image_map)
}
static gboolean
-gimp_image_map_remove_filter (GimpImageMap *image_map)
+gimp_image_map_add_filter (GimpImageMap *image_map)
{
- if (image_map->filter &&
- gimp_drawable_has_filter (image_map->drawable, image_map->filter))
+ if (! gimp_image_map_is_filtering (image_map))
{
- gimp_drawable_remove_filter (image_map->drawable, image_map->filter);
-
- if (image_map->filtering)
+ if (image_map->filter)
{
- image_map->filtering = FALSE;
+ gimp_drawable_add_filter (image_map->drawable, image_map->filter);
return TRUE;
}
@@ -528,6 +524,19 @@ gimp_image_map_remove_filter (GimpImageMap *image_map)
return FALSE;
}
+static gboolean
+gimp_image_map_remove_filter (GimpImageMap *image_map)
+{
+ if (gimp_image_map_is_filtering (image_map))
+ {
+ gimp_drawable_remove_filter (image_map->drawable, image_map->filter);
+
+ return TRUE;
+ }
+
+ return FALSE;
+}
+
static void
gimp_image_map_update_drawable (GimpImageMap *image_map,
const GeglRectangle *area)
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]