r16161 - in /desktop/unstable/gnome-panel/debian: changelog patches/06_calendar_crashes.patch patches/series

joss at users.alioth.debian.org joss at users.alioth.debian.org
Tue Jun 3 18:41:27 UTC 2008


Author: joss
Date: Tue Jun  3 18:41:26 2008
New Revision: 16161

URL: http://svn.debian.org/wsvn/pkg-gnome/?sc=1&rev=16161
Log:
06_calendar_crashes.patch: stolen from upstream SVN. Fix several 
crashes in the calendar applet. Closes: #484323.

Added:
    desktop/unstable/gnome-panel/debian/patches/06_calendar_crashes.patch
Modified:
    desktop/unstable/gnome-panel/debian/changelog
    desktop/unstable/gnome-panel/debian/patches/series

Modified: desktop/unstable/gnome-panel/debian/changelog
URL: http://svn.debian.org/wsvn/pkg-gnome/desktop/unstable/gnome-panel/debian/changelog?rev=16161&op=diff
==============================================================================
--- desktop/unstable/gnome-panel/debian/changelog (original)
+++ desktop/unstable/gnome-panel/debian/changelog Tue Jun  3 18:41:26 2008
@@ -1,3 +1,10 @@
+gnome-panel (2.20.3-5) unstable; urgency=low
+
+  * 06_calendar_crashes.patch: stolen from upstream SVN. Fix several 
+    crashes in the calendar applet. Closes: #484323.
+
+ -- Josselin Mouette <joss at debian.org>  Tue, 03 Jun 2008 20:41:36 +0200
+
 gnome-panel (2.20.3-4) unstable; urgency=low
 
   * 04_logout-center.patch: stolen from upstream SVN. Center and focus 

Added: desktop/unstable/gnome-panel/debian/patches/06_calendar_crashes.patch
URL: http://svn.debian.org/wsvn/pkg-gnome/desktop/unstable/gnome-panel/debian/patches/06_calendar_crashes.patch?rev=16161&op=file
==============================================================================
--- desktop/unstable/gnome-panel/debian/patches/06_calendar_crashes.patch (added)
+++ desktop/unstable/gnome-panel/debian/patches/06_calendar_crashes.patch Tue Jun  3 18:41:26 2008
@@ -1,0 +1,81 @@
+Upstream r10989, r10995, r10996.
+Fixes GNOME #378854, #488819.
+Debian #484323.
+
+Index: gnome-panel-2.20.3/applets/clock/calendar-sources.c
+===================================================================
+--- gnome-panel-2.20.3.orig/applets/clock/calendar-sources.c	2008-06-03 20:39:28.929686105 +0200
++++ gnome-panel-2.20.3/applets/clock/calendar-sources.c	2008-06-03 20:39:36.485691687 +0200
+@@ -87,6 +87,10 @@ static void calendar_sources_class_init 
+ static void calendar_sources_init       (CalendarSources      *sources);
+ static void calendar_sources_finalize   (GObject             *object);
+ 
++static void backend_died_cb (ECal *client, CalendarSourceData *source_data);
++static void calendar_sources_esource_list_changed (ESourceList        *source_list,
++                                                   CalendarSourceData *source_data);
++
+ enum
+ {
+   APPOINTMENT_SOURCES_CHANGED,
+@@ -206,11 +210,22 @@ calendar_sources_finalize_source_data (C
+ 	}
+ 
+       for (l = source_data->clients; l; l = l->next)
+-	g_object_unref (l->data);
++        {
++          g_signal_handlers_disconnect_by_func (G_OBJECT (l->data),
++                                                G_CALLBACK (backend_died_cb),
++                                                source_data);
++          g_object_unref (l->data);
++        }
++      g_slist_free (source_data->clients);
+       source_data->clients = NULL;
+ 
+       if (source_data->esource_list)
+-	g_object_unref (source_data->esource_list);
++        {
++          g_signal_handlers_disconnect_by_func (source_data->esource_list,
++                                                G_CALLBACK (calendar_sources_esource_list_changed),
++                                                source_data);
++          g_object_unref (source_data->esource_list);
++	}
+       source_data->esource_list = NULL;
+ 
+       for (l = source_data->selected_sources; l; l = l->next)
+@@ -483,9 +498,6 @@ calendar_sources_load_esource_list (Cale
+ 	  if (is_source_selected (esource, source_data->selected_sources) &&
+ 	      (client = load_esource (esource, source_data->source_type, source_data->clients)))
+ 	    {
+-              g_signal_connect (G_OBJECT (client), "backend_died",
+-                                G_CALLBACK (backend_died_cb), source_data);
+-
+ 	      loaded_clients = g_slist_prepend (loaded_clients, client);
+ 	    }
+ 	}
+@@ -497,10 +509,25 @@ calendar_sources_load_esource_list (Cale
+     emit_signal = TRUE;
+ 
+   for (l = source_data->clients; l; l = l->next)
+-    g_object_unref (l->data);
++    {
++      g_signal_handlers_disconnect_by_func (G_OBJECT (l->data),
++                                            G_CALLBACK (backend_died_cb),
++                                            source_data);
++
++      g_object_unref (l->data);
++    }
+   g_slist_free (source_data->clients);
+   source_data->clients = g_slist_reverse (loaded_clients);
+ 
++  /* connect to backend_died after we disconnected the previous signal
++   * handlers. If we do it before, we'll lose some handlers (for clients that
++   * were already there before) */
++  for (l = source_data->clients; l; l = l->next)
++    {
++      g_signal_connect (G_OBJECT (l->data), "backend_died",
++                        G_CALLBACK (backend_died_cb), source_data);
++    }
++
+   if (emit_signal) 
+     {
+       dprintf ("Emitting %s-sources-changed signal\n",

Modified: desktop/unstable/gnome-panel/debian/patches/series
URL: http://svn.debian.org/wsvn/pkg-gnome/desktop/unstable/gnome-panel/debian/patches/series?rev=16161&op=diff
==============================================================================
--- desktop/unstable/gnome-panel/debian/patches/series (original)
+++ desktop/unstable/gnome-panel/debian/patches/series Tue Jun  3 18:41:26 2008
@@ -3,6 +3,7 @@
 03_gnome-panel-logout.patch
 04_logout-center.patch
 05_missing_includes.patch
+06_calendar_crashes.patch
 60_caldav-clock-appointments.patch
 70_relibtoolize.patch
 99_ltmain_as-needed.patch




More information about the pkg-gnome-commits mailing list