GNOME Bugzilla – Bug 671994
Contact list only appears after several seconds
Last modified: 2012-03-15 07:52:55 UTC
After clicking on the Empathy icon in the Shell's dash, I have to wait for several seconds before seeing the contact list window. Note that the contact list will come up not fully loaded itself, and it will have a spinner on it for another couple of seconds when it is presented. This only seems to happen the first time Empathy is launched.
Try starting it manually with EMPATHY_DEBUG=all logs may help to find what's blocking it.
Looks like it's blocking here: [ ... ] empathy-DEBUG: setup_geoclue: Setting up Geoclue ** WARNING **: Metadata for error domain "geoclue-error-quark" already registered Looking at the code, it seems on initialization EmpathyLocationManager calls synchronously into geoclue_master_create_client(), and then again synchronously into various methods on the GeoclueMasterClient object.
Oh I see geoclue gained async variants of these API now, great!
Created attachment 209721 [details] [review] Bump geoclue dep We need 0.12 for the shiny new async API.
Created attachment 209722 [details] [review] location-manager: use geoclue_master_create_client_async()
Created attachment 209723 [details] [review] location-manager: use geoclue_master_client_set_requirements_async()
Created attachment 209724 [details] [review] location-manager: use geoclue_master_client_create_position_async()
Created attachment 209725 [details] [review] location-manager: use geoclue_master_client_create_address_async()
Cosimo: could you please test those patches (or this branch : http://cgit.collabora.com/git/user/cassidy/empathy/log/?h=geoclue-671994 ) and check if that fixes your issue? Also, if you can give a quick review that would be great. :)
Review of attachment 209721 [details] [review]: OK
Review of attachment 209722 [details] [review]: Looks good, just two minor comments below. ::: libempathy-gtk/empathy-location-manager.c @@ +483,2 @@ { + DEBUG ("Failed to create GeoclueMasterClient: %s", error->message); Looking at the geoclue code, I think you're supposed to free this GError as well here. @@ +521,2 @@ self->priv->geoclue_is_setup = TRUE; + Stray line?
Review of attachment 209723 [details] [review]: ::: libempathy-gtk/empathy-location-manager.c @@ +453,2 @@ { DEBUG ("set_requirements failed: %s", error->message); Same here, I think the GError is supposed to be freed. @@ +485,3 @@ if (error != NULL) { + DEBUG ("set_requirements failed: %s", error->message); Ditto.
Review of attachment 209724 [details] [review]: ::: libempathy-gtk/empathy-location-manager.c @@ +486,2 @@ if (error != NULL) { Free the error
Review of attachment 209725 [details] [review]: ::: libempathy-gtk/empathy-location-manager.c @@ +486,3 @@ + if (error != NULL) + { +{ Free the error.
Patchset works fine in my testing, thanks!
Rahh you're right; wtf is that for an API?! Thanks a lot for the review; I'll fix those and merge.
Attachment 209721 [details] pushed as f2d9517 - Bump geoclue dep Attachment 209722 [details] pushed as 4bfb1d6 - location-manager: use geoclue_master_create_client_async() Attachment 209723 [details] pushed as 8eb401d - location-manager: use geoclue_master_client_set_requirements_async() Attachment 209724 [details] pushed as 3c65039 - location-manager: use geoclue_master_client_create_position_async() Attachment 209725 [details] pushed as d6edab7 - location-manager: use geoclue_master_client_create_address_async()