On Tue, Nov 21, 2000 at 02:43:09AM +0100, David Odin wrote:
> 
> 
>       Hi,
> 
>   I've found a sure way to make Gimp segfault (today's CVS):
>     start Gimp
>     File->Dialog->Display filter
>     Add a filter
>     select it on the right list
>     Click on Remove
>     Click on Remove again->Segfault.
> 
> A little bit of GDB shows that this patch solve this:
> ---------------------------------------------------------
> --- gimp/app/gdisplay_color.c.orig      Tue Nov 21 02:19:41 2000
> +++ gimp/app/gdisplay_color.c   Tue Nov 21 02:19:59 2000
> @@ -231,6 +231,7 @@
>                                ColorDisplayNode *node)
>  {
>    g_return_if_fail (gdisp != NULL);
> +  g_return_if_fail (node != NULL);
> 
>    gdisplay_color_detach_real (gdisp, node, TRUE);
>    gdisp->cd_list = g_list_remove (gdisp->cd_list, node);
> --------------------------------------------------------
> 
>   However, even if this patch works (and it does work, I've tested it),
> it only hide the problem. I guess a more appropriate patch would be to
> update cdd->dest_row to -1 after the removing of a filter as the
> following patch shows:
> --------------------------------------------------------
> --- gimp/app/gdisplay_color_ui.c.orig   Tue Nov 21 02:33:16 2000
> +++ gimp/app/gdisplay_color_ui.c        Tue Nov 21 02:34:09 2000
> @@ -310,6 +310,7 @@
>    else
>      gdisplay_color_detach_destroy (gdisp, node);
> 
> +  cdd->dest_row = -1;
>    UPDATE_DISPLAY (gdisp);
>  }
> --------------------------------------------------------
> 
  I've found another oddity in gimp/app/gdisplay_color_ui.c:

When you have a filter installed and an opened image, if you 
open the display filter window to only configure the filter and then
click on OK, the image (well the view of the image...) isn't updated
until the display is updated in a wway or another.
This is due to a missing UPDATE_DISPLAY (gdisp); in
color_display_configure_callback(), so the following patch would be more
accurate:
--------------------------------------------------------
diff -u gimp/app/gdisplay_color_ui.c.orig gimp/app/gdisplay_color_ui.c
--- gimp/app/gdisplay_color_ui.c.orig   Tue Nov 21 02:33:16 2000
+++ gimp/app/gdisplay_color_ui.c        Tue Nov 21 03:16:58 2000
@@ -310,6 +310,7 @@
   else
     gdisplay_color_detach_destroy (gdisp, node);

+  cdd->dest_row = -1;
   UPDATE_DISPLAY (gdisp);
 }

@@ -358,6 +359,7 @@
                                  gpointer   data)
 {
   ColorDisplayDialog *cdd = data;
+  GDisplay *gdisp = cdd->gdisp;
   ColorDisplayNode *node;

   if (cdd->dest_row < 0)
@@ -371,6 +373,9 @@
   cdd->conf_nodes = g_list_append (cdd->conf_nodes, node);

   gdisplay_color_configure (node, NULL, NULL, NULL, NULL);
+
+  cdd->modified = TRUE;
+  UPDATE_DISPLAY (gdisp);
 }

 void
--------------------------------------------------------

  You still need to applied the patch for gdisplay_color.c, though.

         Best Regards,

                 DindinX

-- 
[EMAIL PROTECTED]

Reply via email to