Fix #64: Fix Geoclue support when run outside of X
Fix check of error value returned. Geoclue requires DISPLAY to be set, so try DISPLAY=:0 if not already set.
This commit is contained in:
+18
-6
@@ -60,6 +60,10 @@ location_geoclue_start(location_geoclue_state_t *state)
|
||||
state->position = geoclue_position_new(state->provider,
|
||||
state->provider_path);
|
||||
} else {
|
||||
if (getenv("DISPLAY") == NULL || *getenv("DISPLAY") == '\0') {
|
||||
/* TODO This (hack) should be removed when GeoClue has been patched. */
|
||||
putenv("DISPLAY=:0");
|
||||
}
|
||||
GError *error = NULL;
|
||||
GeoclueMaster *master = geoclue_master_get_default();
|
||||
GeoclueMasterClient *client = geoclue_master_create_client(master,
|
||||
@@ -67,9 +71,13 @@ location_geoclue_start(location_geoclue_state_t *state)
|
||||
g_object_unref(master);
|
||||
|
||||
if (client == NULL) {
|
||||
g_printerr(_("Unable to obtain master client: %s\n"),
|
||||
error->message);
|
||||
g_error_free(error);
|
||||
if (error != NULL) {
|
||||
g_printerr(_("Unable to obtain master client: %s\n"),
|
||||
error->message);
|
||||
g_error_free(error);
|
||||
} else {
|
||||
g_printerr(_("Unable to obtain master client\n"));
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
|
||||
@@ -78,9 +86,13 @@ location_geoclue_start(location_geoclue_state_t *state)
|
||||
0, FALSE,
|
||||
GEOCLUE_RESOURCE_NETWORK,
|
||||
&error)) {
|
||||
g_printerr(_("Can't set requirements for master: %s\n"),
|
||||
error->message);
|
||||
g_error_free(error);
|
||||
if (error != NULL) {
|
||||
g_printerr(_("Can't set requirements for master: %s\n"),
|
||||
error->message);
|
||||
g_error_free(error);
|
||||
} else {
|
||||
g_printerr(_("Can't set requirements for master\n"));
|
||||
}
|
||||
g_object_unref(client);
|
||||
|
||||
return -1;
|
||||
|
||||
Reference in New Issue
Block a user