bonobo_get_object_async (take 2)...

michael meeks <[email protected]> Fri, 03 Feb 2006 15:03:59 +0000
Newsgroups gmane.comp.gnome.components
Organization Novell, Inc.
Message-ID <[email protected]>
--=-pNAtmnDjqcs9BXfl3suQ
Content-Type: text/plain
Content-Transfer-Encoding: 7bit

Hi Mark,

	Please find attached trivial patch to gnome-session making the vino
activation (more) truly async & hence not blocking login etc. until it's
started :-) [ should also avoid loading those pesky moniker libraries
too I think ;-] (can I/Rodrigo commit & to the stable branch too ?).

	Rodrigo is also looking at the panel which uses the same method (with
commensurate performance problems I'd guess) - hopefully we can get an
easy win there too.

	However - the root cause of this (a hang at login) seems related to
VINO: my suggested patch is here:

--- ./server/vino-shell.c
+++ ./server/vino-shell.c
@@ -50,7 +50,8 @@
   shell = g_object_new (vino_shell_get_type (), NULL);
 
   display_name = g_strdup (gdk_display_get_name (gdk_display_get_default ()));
-  
+
+#if 0  
   /* Strip off the screen portion of the display */
   p = strrchr (display_name, ':');
   if (p)
@@ -59,6 +60,7 @@
       if (p)
 	p [0] = '\0';
     }
+#endif
 
   reg_env = bonobo_activation_registration_env_set (reg_env, "DISPLAY", display_name);
   result = bonobo_activation_register_active_server (VINO_SERVER_IID,

	Briefly - why is that mangling of the DISPLAY variable necessary ? I
must confess that even without it vino fails to launch properly ;-) so
is there some cockup with gnome-session & the way it activates stuff
too ?

	Curious as to why that sort of thing might be necessary ? perhaps the
vino cvs annotations make that clear ?

	HTH,

		Michael.

-- 
 [email protected]  <><, Pseudo Engineer, itinerant idiot

--=-pNAtmnDjqcs9BXfl3suQ
Content-Disposition: attachment; filename=gnome-session-rdesktop.diff
Content-Type: text/x-patch; name=gnome-session-rdesktop.diff;
	charset=ISO-8859-1
Content-Transfer-Encoding: 7bit

--- ./gnome-session/gsm-remote-desktop.c
+++ ./gnome-session/gsm-remote-desktop.c
@@ -111,10 +111,12 @@
 }
 
 static void
-remote_desktop_obj_activated (Bonobo_Unknown     object,
-			      CORBA_Environment *ev,
-			      RemoteDesktopData *data)
+remote_desktop_obj_activated (CORBA_Object   object, 
+			      const char    *error_reason, 
+			      gpointer       user_data)
 {
+  RemoteDesktopData *data = user_data;
+
   g_return_if_fail (data->obj == CORBA_OBJECT_NIL);
   g_return_if_fail (data->activating == TRUE);
 
@@ -123,11 +125,10 @@
 
   if (object == CORBA_OBJECT_NIL)
     {
-      if (BONOBO_EX (ev))
+      if (error_reason)
 	{
 	  gsm_warning (G_STRLOC ": activation of %s failed: %s\n",
-		       REMOTE_DESKTOP_IID,
-		       bonobo_exception_general_error_get (ev));
+		       REMOTE_DESKTOP_IID, error_reason);
 	}
       else
 	{
@@ -213,11 +214,9 @@
   
   setup_per_display_activation ();
 
-  bonobo_get_object_async (REMOTE_DESKTOP_IID,
-			   "IDL:Bonobo/Unknown:1.0",
-			   &ev,
-			   (BonoboMonikerAsyncFn) remote_desktop_obj_activated,
-			   data);
+  bonobo_activation_activate_from_id_async
+      ( REMOTE_DESKTOP_IID, 0,
+	&remote_desktop_obj_activated, data, &ev );
 
   if (BONOBO_EX (&ev))
     {

--=-pNAtmnDjqcs9BXfl3suQ
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

_______________________________________________
gnome-components-list mailing list
[email protected]
http://mail.gnome.org/mailman/listinfo/gnome-components-list
--=-pNAtmnDjqcs9BXfl3suQ--