diff -wbBur gpsdrive-2.11/src/gps_handler.c gpsdrive-2.11.my/src/gps_handler.c --- gpsdrive-2.11/src/gps_handler.c 2010-06-24 19:53:32.000000000 +0000 +++ gpsdrive-2.11.my/src/gps_handler.c 2011-04-18 13:21:33.000000000 +0000 @@ -264,7 +264,8 @@ #define GPS_TIMER 500 static gint gps_timeout_source = 0; -static struct gps_data_t *gpsdata; +static struct gps_data_t __gd; +static struct gps_data_t *gpsdata = &__gd; /* SYMBOLS USED IN LIBGPS: * @@ -410,9 +411,10 @@ */ gps_query (gpsdata, "oys\n"); #else - if (gps_waiting(gpsdata)) + if (gps_waiting(gpsdata, 1000000)) { - gps_poll (gpsdata); + gps_read (gpsdata); + gps_hook_cb(gpsdata, NULL); } #endif @@ -447,7 +449,7 @@ } /* try to open connection */ - gpsdata = gps_open (local_config.gpsd_server, local_config.gpsd_port); + gpsdata = gps_open (local_config.gpsd_server, local_config.gpsd_port, gpsdata) ? NULL : &__gd; if (!gpsdata) { g_print ("Can't connect to gps daemon on %s:%s, disabling GPS support!\n", @@ -466,7 +468,7 @@ gps_sats = g_new (gps_satellite_struct, MAXCHANNELS); /* set hook function to handle gps data */ - gps_set_raw_hook (gpsdata, (gpointer) gps_hook_cb); +// gps_set_raw_hook (gpsdata, (gpointer) gps_hook_cb); #ifndef LIBGPS_OLD /* enable watch mode to get data stream from gpsd */