diff options
-rw-r--r-- | calendar/gui/main.c | 1 | ||||
-rw-r--r-- | calendar/pcs/cal-backend-imc.c | 2 | ||||
-rw-r--r-- | calendar/pcs/cal-factory.c | 2 | ||||
-rw-r--r-- | shell/ChangeLog | 10 | ||||
-rw-r--r-- | shell/e-shell-view.c | 23 | ||||
-rw-r--r-- | wombat/wombat.c | 5 |
6 files changed, 41 insertions, 2 deletions
diff --git a/calendar/gui/main.c b/calendar/gui/main.c index 486372463d..de8d8e1c2a 100644 --- a/calendar/gui/main.c +++ b/calendar/gui/main.c @@ -89,6 +89,7 @@ main (int argc, char **argv) component_factory_init (); bonobo_main (); + fprintf (stderr, "main(): Out of bonobo_main(), we are dying cleanly. Have a nice day.\n"); return 0; } diff --git a/calendar/pcs/cal-backend-imc.c b/calendar/pcs/cal-backend-imc.c index 3e079218cf..20c0292793 100644 --- a/calendar/pcs/cal-backend-imc.c +++ b/calendar/pcs/cal-backend-imc.c @@ -560,6 +560,8 @@ cal_destroy_cb (GtkObject *object, gpointer data) IMCPrivate *priv; GList *l; + fprintf (stderr, "cal_destroy_cb(): A Cal was destroyed!\n"); + cal = CAL (object); cbimc = CAL_BACKEND_IMC (data); diff --git a/calendar/pcs/cal-factory.c b/calendar/pcs/cal-factory.c index 9e60815805..83ebd272a3 100644 --- a/calendar/pcs/cal-factory.c +++ b/calendar/pcs/cal-factory.c @@ -274,6 +274,8 @@ backend_last_client_gone_cb (CalBackend *backend, gpointer data) gboolean result; GnomeVFSURI *orig_uri; + fprintf (stderr, "backend_last_client_gone_cb() called!\n"); + factory = CAL_FACTORY (data); priv = factory->priv; diff --git a/shell/ChangeLog b/shell/ChangeLog index ca0a178947..890eb8d51e 100644 --- a/shell/ChangeLog +++ b/shell/ChangeLog @@ -1,3 +1,13 @@ +2000-07-10 Federico Mena Quintero <federico@helixcode.com> + + * e-shell-view.c (unrealize): As a quasi-hack, do a gdk_flush() + when the shell view is unrealized so that the DeleteEvent gets + sent to the remote plugs as soon as possible before we start + making other CORBA calls. The problem is that our CORBA pipe is + synchronous while our X pipe is asynch. We have to ensure + ordering for certain operations. This is NOT the correct and + complete fix, which should go in Bonobo. + 2000-07-08 Ettore Perazzoli <ettore@helixcode.com> * e-shell-view.c (e_shell_view_display_uri): Don't update the diff --git a/shell/e-shell-view.c b/shell/e-shell-view.c index fc211e8727..36e0becf0d 100644 --- a/shell/e-shell-view.c +++ b/shell/e-shell-view.c @@ -353,6 +353,22 @@ destroy (GtkObject *object) (* GTK_OBJECT_CLASS (parent_class)->destroy) (object); } +/* Unrealize handler */ +static void +unrealize (GtkWidget *widget) +{ + if (GTK_WIDGET_CLASS (parent_class)->unrealize) + (* GTK_WIDGET_CLASS (parent_class)->unrealize) (widget); + + /* We flush so that all the destroy window requests for foreign windows + * get sent over the X wire. Hopefully this will diminish the chance of + * hitting the CORBA (sync) vs. Xlib (async) race conditions. This is + * not the complete fix, which should actually be put in Bonobo and + * completed. FIXME. + */ + gdk_flush (); +} + /* Initialization. */ @@ -360,10 +376,15 @@ static void class_init (EShellViewClass *klass) { GtkObjectClass *object_class; + GtkWidgetClass *widget_class; + + object_class = (GtkObjectClass *) klass; + widget_class = (GtkWidgetClass *) klass; - object_class = GTK_OBJECT_CLASS (klass); object_class->destroy = destroy; + widget_class->unrealize = unrealize; + parent_class = gtk_type_class (gnome_app_get_type ()); signals[SHORTCUT_BAR_MODE_CHANGED] diff --git a/wombat/wombat.c b/wombat/wombat.c index 0d5b8b7a01..1db39e5673 100644 --- a/wombat/wombat.c +++ b/wombat/wombat.c @@ -40,8 +40,10 @@ static gboolean termination_handler (gpointer data) { if (cal_factory_get_n_backends (cal_factory) == 0 - && pas_book_factory_get_n_backends (pas_book_factory) == 0) + && pas_book_factory_get_n_backends (pas_book_factory) == 0) { + fprintf (stderr, "termination_handler(): Terminating the Wombat. Have a nice day.\n"); gtk_main_quit (); + } termination_handler_id = 0; return FALSE; @@ -94,6 +96,7 @@ setup_pas (int argc, char **argv) static void last_calendar_gone_cb (CalFactory *factory, gpointer data) { + fprintf (stderr, "last_calendar_gone_cb() called! Queueing termination...\n"); queue_termination (); } |