[gimp] app: move the GimpIscissorsTool shutdown code to control(HALT)
- From: Michael Natterer <mitch src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gimp] app: move the GimpIscissorsTool shutdown code to control(HALT)
- Date: Sat, 2 Apr 2011 09:59:00 +0000 (UTC)
commit 9ec725c2977cbb90bfeaeb47c49b762f2f29dcdf
Author: Michael Natterer <mitch gimp org>
Date: Sat Apr 2 11:58:29 2011 +0200
app: move the GimpIscissorsTool shutdown code to control(HALT)
app/tools/gimpiscissorstool.c | 124 ++++++++++++++++-------------------------
1 files changed, 49 insertions(+), 75 deletions(-)
---
diff --git a/app/tools/gimpiscissorstool.c b/app/tools/gimpiscissorstool.c
index 929505d..8dac046 100644
--- a/app/tools/gimpiscissorstool.c
+++ b/app/tools/gimpiscissorstool.c
@@ -150,7 +150,6 @@ static gboolean gimp_iscissors_tool_key_press (GimpTool *tool,
static void gimp_iscissors_tool_apply (GimpIscissorsTool *iscissors,
GimpDisplay *display);
-static void gimp_iscissors_tool_reset (GimpIscissorsTool *iscissors);
static void gimp_iscissors_tool_draw (GimpDrawTool *draw_tool);
@@ -174,7 +173,6 @@ static void calculate_curve (GimpIscissorsTool *iscissors,
ICurve *curve);
static void iscissors_draw_curve (GimpDrawTool *draw_tool,
ICurve *curve);
-static void iscissors_free_icurves (GQueue *curves);
static gint mouse_over_vertex (GimpIscissorsTool *iscissors,
gdouble x,
@@ -327,21 +325,15 @@ gimp_iscissors_tool_init (GimpIscissorsTool *iscissors)
{
GimpTool *tool = GIMP_TOOL (iscissors);
- iscissors->op = ISCISSORS_OP_NONE;
- iscissors->dp_buf = NULL;
- iscissors->curves = g_queue_new ();
- iscissors->state = NO_ACTION;
- iscissors->mask = NULL;
- iscissors->gradient_map = NULL;
- iscissors->livewire = NULL;
-
gimp_tool_control_set_scroll_lock (tool->control, TRUE);
gimp_tool_control_set_snap_to (tool->control, FALSE);
gimp_tool_control_set_preserve (tool->control, FALSE);
gimp_tool_control_set_dirty_mask (tool->control, GIMP_DIRTY_IMAGE_SIZE);
gimp_tool_control_set_tool_cursor (tool->control, GIMP_TOOL_CURSOR_ISCISSORS);
- gimp_iscissors_tool_reset (iscissors);
+ iscissors->op = ISCISSORS_OP_NONE;
+ iscissors->curves = g_queue_new ();
+ iscissors->state = NO_ACTION;
}
static void
@@ -349,8 +341,6 @@ gimp_iscissors_tool_finalize (GObject *object)
{
GimpIscissorsTool *iscissors = GIMP_ISCISSORS_TOOL (object);
- gimp_iscissors_tool_reset (iscissors);
-
g_queue_free (iscissors->curves);
G_OBJECT_CLASS (parent_class)->finalize (object);
@@ -370,7 +360,50 @@ gimp_iscissors_tool_control (GimpTool *tool,
break;
case GIMP_TOOL_ACTION_HALT:
- gimp_iscissors_tool_reset (iscissors);
+ /* Free and reset the curve list */
+ while (! g_queue_is_empty (iscissors->curves))
+ {
+ ICurve *curve = g_queue_pop_head (iscissors->curves);
+
+ if (curve->points)
+ g_ptr_array_free (curve->points, TRUE);
+
+ g_slice_free (ICurve, curve);
+ }
+
+ /* free mask */
+ if (iscissors->mask)
+ {
+ g_object_unref (iscissors->mask);
+ iscissors->mask = NULL;
+ }
+
+ /* free the gradient map */
+ if (iscissors->gradient_map)
+ {
+ /* release any tile we were using */
+ if (cur_tile)
+ {
+ tile_release (cur_tile, FALSE);
+ cur_tile = NULL;
+ }
+
+ tile_manager_unref (iscissors->gradient_map);
+ iscissors->gradient_map = NULL;
+ }
+
+ iscissors->curve1 = NULL;
+ iscissors->curve2 = NULL;
+ iscissors->first_point = TRUE;
+ iscissors->connected = FALSE;
+ iscissors->state = NO_ACTION;
+
+ /* Reset the dp buffers */
+ if (iscissors->dp_buf)
+ {
+ temp_buf_free (iscissors->dp_buf);
+ iscissors->dp_buf = NULL;
+ }
break;
}
@@ -393,10 +426,7 @@ gimp_iscissors_tool_button_press (GimpTool *tool,
/* If the tool was being used in another image...reset it */
if (display != tool->display)
- {
- gimp_draw_tool_stop (GIMP_DRAW_TOOL (tool));
- gimp_iscissors_tool_reset (iscissors);
- }
+ gimp_tool_control (tool, GIMP_TOOL_ACTION_HALT, display);
gimp_tool_control_activate (tool->control);
tool->display = display;
@@ -1059,67 +1089,11 @@ gimp_iscissors_tool_apply (GimpIscissorsTool *iscissors,
options->feather_radius,
options->feather_radius);
- gimp_iscissors_tool_reset (iscissors);
+ gimp_tool_control (tool, GIMP_TOOL_ACTION_HALT, display);
gimp_image_flush (image);
}
-static void
-gimp_iscissors_tool_reset (GimpIscissorsTool *iscissors)
-{
- /* Free and reset the curve list */
- iscissors_free_icurves (iscissors->curves);
-
- /* free mask */
- if (iscissors->mask)
- {
- g_object_unref (iscissors->mask);
- iscissors->mask = NULL;
- }
-
- /* free the gradient map */
- if (iscissors->gradient_map)
- {
- /* release any tile we were using */
- if (cur_tile)
- {
- tile_release (cur_tile, FALSE);
- cur_tile = NULL;
- }
-
- tile_manager_unref (iscissors->gradient_map);
- iscissors->gradient_map = NULL;
- }
-
- iscissors->curve1 = NULL;
- iscissors->curve2 = NULL;
- iscissors->first_point = TRUE;
- iscissors->connected = FALSE;
- iscissors->state = NO_ACTION;
-
- /* Reset the dp buffers */
- if (iscissors->dp_buf)
- {
- temp_buf_free (iscissors->dp_buf);
- iscissors->dp_buf = NULL;
- }
-}
-
-
-static void
-iscissors_free_icurves (GQueue *curves)
-{
- while (! g_queue_is_empty (curves))
- {
- ICurve *curve = g_queue_pop_head (curves);
-
- if (curve->points)
- g_ptr_array_free (curve->points, TRUE);
-
- g_slice_free (ICurve, curve);
- }
-}
-
/* XXX need some scan-conversion routines from somewhere. maybe. ? */
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]