From: kazer_ Date: Mon, 28 Jan 2008 10:43:08 +0000 (+0000) Subject: Fix:Core:Patch from mattcallow, ticket #68 : Navit goes into tight loop if gpsd socke... X-Git-Url: http://git.maemo.org/git/?a=commitdiff_plain;h=0552958207d09e1e283283778ae4948e3ed94357;p=navit-package Fix:Core:Patch from mattcallow, ticket #68 : Navit goes into tight loop if gpsd socket is closed. Thanks Matt git-svn-id: https://navit.svn.sourceforge.net/svnroot/navit/trunk/navit@816 ffa7fe5e-494d-0410-b361-a75ebd5db220 --- diff --git a/src/vehicle/gpsd/vehicle_gpsd.c b/src/vehicle/gpsd/vehicle_gpsd.c index 8d17334..4820d89 100644 --- a/src/vehicle/gpsd/vehicle_gpsd.c +++ b/src/vehicle/gpsd/vehicle_gpsd.c @@ -85,8 +85,10 @@ vehicle_gpsd_open(struct vehicle_priv *priv) } else priv->gps = gps_open(source + 7, NULL); g_free(source); - if (!priv->gps) + if (!priv->gps){ + dbg(0, "gps_open failed. Have you started gpsd?\n"); return 0; + } gps_query(priv->gps, "w+x\n"); gps_set_raw_hook(priv->gps, vehicle_gpsd_callback); priv->iochan = g_io_channel_unix_new(priv->gps->gps_fd); @@ -124,7 +126,11 @@ vehicle_gpsd_io(GIOChannel * iochan, GIOCondition condition, gpointer t) if (condition == G_IO_IN) { if (priv->gps) { vehicle_last = priv; - gps_poll(priv->gps); + if (gps_poll(priv->gps)) { + dbg(0, "gps_poll failed\n"); + vehicle_gpsd_close(priv); + vehicle_gpsd_open(priv); + } } return TRUE; }