lö 2006-06-17 klockan 01:40 +0300 skrev Tor Lillqvist: > If my analysis is correct, this means that attempting to do a CORBA > object unregistration in the GObject finalize method is too late, isn't > it?
I tested by applying this simple patch to e-shell.c, moving the bonobo_activation_active_server_unregister() call from impl_finalize() to notify_no_windows_left_idle_cb(): Index: shell/e-shell.c =================================================================== RCS file: /cvs/gnome/evolution/shell/e-shell.c,v retrieving revision 1.272 diff -p -u -r1.272 e-shell.c --- shell/e-shell.c 30 Jan 2006 11:49:53 -0000 1.272 +++ shell/e-shell.c 16 Jun 2006 23:17:50 -0000 @@ -360,13 +360,18 @@ static gboolean notify_no_windows_left_idle_cb (void *data) { EShell *shell; + EShellPrivate *priv; shell = E_SHELL (data); + priv = shell->priv; set_interactive (shell, FALSE); g_signal_emit (shell, signals [NO_WINDOWS_LEFT], 0); + if (priv->iid != NULL) + bonobo_activation_active_server_unregister (priv->iid, + bonobo_object_corba_objref (BONOBO_OBJECT (shell))); bonobo_object_unref (BONOBO_OBJECT (shell)); return FALSE; @@ -467,10 +472,6 @@ impl_finalize (GObject *object) shell = E_SHELL (object); priv = shell->priv; - - if (priv->iid != NULL) - bonobo_activation_active_server_unregister (priv->iid, - bonobo_object_corba_objref (BONOBO_OBJECT (shell))); e_free_string_list (priv->crash_type_names); And lo and behold, it works! Now the ESHell gets unregistered, and when starting Evolution again it manages to register its EShell and contact the already running e-d-s etc. OK to apply this patch to HEAD and stable? ChangeLog entry: 2006-06-17 Tor Lillqvist <[EMAIL PROTECTED]> * e-shell.c (impl_finalize): Don't call bonobo_activation_active_server_unregister() here, it's too late, the EShell Bonobo object has already been deactivated and its associated CORBA object is NULL. (notify_no_windows_left_idle_cb): Instead, call bonobo_activation_active_server_unregister() here, when the EShell Bonobo object is still fully active. I should still of course also investigate why the other (unknown) mechanism which causes unregistration to happen anyway on Unix doesn't work on Windows... --tml _______________________________________________ Evolution-hackers mailing list Evolution-hackers@gnome.org http://mail.gnome.org/mailman/listinfo/evolution-hackers