]> git.pld-linux.org Git - packages/geoclue.git/blame - geoclue-gpsd.patch
noarch apidocs
[packages/geoclue.git] / geoclue-gpsd.patch
CommitLineData
dbb8bacc
JB
1--- geoclue-0.12.99/providers/gpsd/geoclue-gpsd.c.orig 2012-07-31 18:47:05.000000000 +0200
2+++ geoclue-0.12.99/providers/gpsd/geoclue-gpsd.c 2013-08-30 16:49:28.898513583 +0200
3@@ -33,6 +33,7 @@
4
5 #include <math.h>
6 #include <gps.h>
7+#include <stdlib.h>
8 #include <string.h>
9
10 #include <geoclue/geoclue-error.h>
11@@ -40,7 +41,6 @@
12 #include <geoclue/gc-iface-position.h>
13 #include <geoclue/gc-iface-velocity.h>
14
15-typedef struct gps_data_t gps_data;
16 typedef struct gps_fix_t gps_fix;
17
18 /* only listing used tags */
19@@ -59,7 +59,7 @@
20 char *host;
21 char *port;
22
23- gps_data *gpsdata;
24+ struct gps_data_t *gpsdata;
25
26 gps_fix *last_fix;
27
28@@ -397,12 +397,13 @@
29 static gboolean
30 geoclue_gpsd_start_gpsd (GeoclueGpsd *self)
31 {
32- self->gpsdata = gps_open (self->host, self->port);
33- if (self->gpsdata) {
34- gps_stream(self->gpsdata, WATCH_ENABLE | WATCH_NMEA | POLL_NONBLOCK, NULL);
35- gps_set_raw_hook (self->gpsdata, gpsd_raw_hook);
36+ struct gps_data_t *gd = calloc (1, sizeof(struct gps_data_t));
37+ if (gd && (gps_open (self->host, self->port, gd) >= 0)) {
38+ self->gpsdata = gd;
39+ gps_stream(self->gpsdata, WATCH_ENABLE | WATCH_NMEA | WATCH_RAW, NULL);
40 return TRUE;
41 } else {
42+ free (gd);
43 g_warning ("gps_open() failed, is gpsd running (host=%s,port=%s)?", self->host, self->port);
44 return FALSE;
45 }
46@@ -413,10 +414,13 @@
47 {
48 GeoclueGpsd *self = (GeoclueGpsd*)data;
49 if (self->gpsdata) {
50- if (gps_poll(self->gpsdata) < 0) {
51+ if (gps_read(self->gpsdata) < 0) {
52 geoclue_gpsd_set_status (self, GEOCLUE_STATUS_ERROR);
53 geoclue_gpsd_stop_gpsd(self);
54 return FALSE;
55+ } else if(self->gpsdata->set) {
56+ gpsd_raw_hook(self->gpsdata, NULL, 0);
57+ self->gpsdata->set = 0;
58 }
59 }
60 return TRUE;
This page took 0.102297 seconds and 4 git commands to generate.