summaryrefslogtreecommitdiff
path: root/community/viking/gpsd-2.96.patch
blob: 01b117312a21a47f05d80a0f4ab17cc5a7cad690 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
diff -wbBur viking-1.1/configure.ac viking-1.1.my/configure.ac
--- viking-1.1/configure.ac	2011-02-08 21:29:01.000000000 +0000
+++ viking-1.1.my/configure.ac	2011-04-18 13:31:07.000000000 +0000
@@ -244,7 +244,7 @@
                [ac_cv_enable_realtimegpstracking], [ac_cv_enable_realtimegpstracking=yes])
 case $ac_cv_enable_realtimegpstracking in
   yes)
-    AC_CHECK_LIB(gps,gps_poll,,AC_MSG_ERROR([libgps is needed for Realtime GPS Tracking feature[,] but not found. The feature can be disable with --disable-realtime-gps-tracking]))
+    AC_CHECK_LIB(gps,gps_read,,AC_MSG_ERROR([libgps is needed for Realtime GPS Tracking feature[,] but not found. The feature can be disable with --disable-realtime-gps-tracking]))
     AC_DEFINE(VIK_CONFIG_REALTIME_GPS_TRACKING, [], [REALTIME GPS TRACKING STUFF])
     ;;
 esac
diff -wbBur viking-1.1/src/vikgpslayer.c viking-1.1.my/src/vikgpslayer.c
--- viking-1.1/src/vikgpslayer.c	2011-02-08 21:09:00.000000000 +0000
+++ viking-1.1.my/src/vikgpslayer.c	2011-04-18 13:35:48.000000000 +0000
@@ -1377,8 +1377,11 @@
 {
   VikGpsLayer *vgl = data;
   if (condition == G_IO_IN) {
-    if (!gps_poll(&vgl->vgpsd->gpsd))
+    if (!gps_read(&vgl->vgpsd->gpsd))
+    {
+      gpsd_raw_hook(&vgl->vgpsd->gpsd, NULL);
       return TRUE;
+    }
     else {
       g_warning("Disconnected from gpsd. Trying to reconnect");
       rt_gpsd_disconnect(vgl);
@@ -1408,7 +1411,8 @@
 {
   VikGpsLayer *vgl = (VikGpsLayer *)data;
 #ifndef HAVE_GPS_OPEN_R
-  struct gps_data_t *gpsd = gps_open(vgl->gpsd_host, vgl->gpsd_port);
+  static struct gps_data_t __gd;
+  struct gps_data_t *gpsd = gps_open(vgl->gpsd_host, vgl->gpsd_port, &__gd) ? NULL : &__gd;
 
   if (gpsd == NULL) {
 #else
@@ -1439,7 +1443,7 @@
     vik_trw_layer_add_track(vtl, vgl->realtime_track_name, vgl->realtime_track);
   }
 
-  gps_set_raw_hook(&vgl->vgpsd->gpsd, gpsd_raw_hook);
+//  gps_set_raw_hook(&vgl->vgpsd->gpsd, gpsd_raw_hook);
   vgl->realtime_io_channel = g_io_channel_unix_new(vgl->vgpsd->gpsd.gps_fd);
   vgl->realtime_io_watch_id = g_io_add_watch( vgl->realtime_io_channel,
                     G_IO_IN | G_IO_ERR | G_IO_HUP, gpsd_data_available, vgl);