dia r4371 - in trunk: . app



Author: hans
Date: Mon Apr  6 21:14:23 2009
New Revision: 4371
URL: http://svn.gnome.org/viewvc/dia?rev=4371&view=rev

Log:
2009-04-06  Hans Breuer  <hans breuer org>

	* app/display.c : something called ddisplay_flush() while we were
	already in ddisplay_destroy() - moved removing the idle handler to
	ddisplay_really_destroy(), the last possible moment - bug #578173


Modified:
   trunk/ChangeLog
   trunk/app/display.c

Modified: trunk/app/display.c
==============================================================================
--- trunk/app/display.c	(original)
+++ trunk/app/display.c	Mon Apr  6 21:14:23 2009
@@ -1138,11 +1138,6 @@
 static void 
 ddisp_destroy(DDisplay *ddisp)
 {
-  if (ddisp->update_id) {
-    g_source_remove (ddisp->update_id);
-    ddisp->update_id = 0;
-  }
-
   g_signal_handlers_disconnect_by_func (ddisp->diagram, selection_changed, ddisp);
 
   g_object_unref (G_OBJECT (ddisp->im_context));
@@ -1304,6 +1299,11 @@
   if (active_display == ddisp)
     display_set_active(NULL);
 
+  /* last chance to avoid crashing in the idle update */
+  if (ddisp->update_id) {
+    g_source_remove (ddisp->update_id);
+    ddisp->update_id = 0;
+  }
   
   if (ddisp->diagram) {
     diagram_remove_ddisplay(ddisp->diagram, ddisp);



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