[gimp] app: make active_image member a weak pointer in GimpColorDialog.



commit 3dc820c01788b3fbb5764ecc021375f628107bc6
Author: Jehan <jehan girinstud io>
Date:   Mon Mar 18 23:35:53 2019 +0100

    app: make active_image member a weak pointer in GimpColorDialog.
    
    This fixes signal handler disconnections wrongly run on images which
    have already been freed.

 app/widgets/gimpcolordialog.c | 4 ++++
 1 file changed, 4 insertions(+)
---
diff --git a/app/widgets/gimpcolordialog.c b/app/widgets/gimpcolordialog.c
index e721e8415d..918dbfb0aa 100644
--- a/app/widgets/gimpcolordialog.c
+++ b/app/widgets/gimpcolordialog.c
@@ -702,6 +702,8 @@ gimp_color_dialog_image_changed (GimpContext     *context,
     {
       if (dialog->active_image)
         {
+          g_object_remove_weak_pointer (G_OBJECT (dialog->active_image),
+                                        (gpointer) &dialog->active_image);
           g_signal_handlers_disconnect_by_func (dialog->active_image,
                                                 G_CALLBACK (gimp_color_dialog_update),
                                                 dialog);
@@ -709,6 +711,8 @@ gimp_color_dialog_image_changed (GimpContext     *context,
       dialog->active_image = image;
       if (image)
         {
+          g_object_add_weak_pointer (G_OBJECT (dialog->active_image),
+                                     (gpointer) &dialog->active_image);
           g_signal_connect_swapped (image, "notify::base-type",
                                     G_CALLBACK (gimp_color_dialog_update),
                                     dialog);


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]