~bilalakhtar/ubuntu/maverick/gpsdrive/gpsdrive-fix-325288

« back to all changes in this revision

Viewing changes to debian/patches/80-dbus.dpatch

  • Committer: Bazaar Package Importer
  • Author(s): Andreas Putzo
  • Date: 2008-03-26 18:35:38 UTC
  • Revision ID: james.westby@ubuntu.com-20080326183538-w8mkdadja9x90wqc
Tags: 2.10~pre4-3
* Fix regression of last upload in the mapnik handling.
  Mapnik no longer tolerates errors in the map config file.
  - Add 97-osmxml.dpatch to fix a syntax error and to comment
    the world_boundaries.
    (Closes: #472825)
  - Add 98-mapnik-exception.dpatch to handle errors more gracefully.
  - Add NEWS file to explain how to handle existing osm.xml files
* Updated 50-scripts.dpatch (gpsdrive_mapnik_gentiles.py) to search 
  for osm.xml in user's home directory.
  Thanks to Giovanni Mascellani.
  (Closes: #466227)

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
#! /bin/sh /usr/share/dpatch/dpatch-run
 
2
## 80-dbus.dpatch by Andreas Putzo <andreas@putzo.net>
 
3
##
 
4
## DP: Fix DBUS support
 
5
 
 
6
@DPATCH@
 
7
diff -urNad gpsdrive-2.10~pre4~/src/gps_handler.c gpsdrive-2.10~pre4/src/gps_handler.c
 
8
--- gpsdrive-2.10~pre4~/src/gps_handler.c       2007-09-14 21:47:13.000000000 +0000
 
9
+++ gpsdrive-2.10~pre4/src/gps_handler.c        2007-12-17 22:38:52.000000000 +0000
 
10
@@ -371,6 +371,7 @@
 
11
 {
 
12
        struct tm       time;
 
13
        time_t          ttime;
 
14
+    double      direction;
 
15
 
 
16
        if (!early && (dbus_current_fix.mode==-1)) {
 
17
                /* We have handled this one, so clean the mode and bail out */
 
18
@@ -416,10 +417,10 @@
 
19
                coords.current_lon = dbus_current_fix.longitude;
 
20
        /* Handle speed */
 
21
        if (__finite(dbus_current_fix.speed))
 
22
-               groundspeed = dbus_current_fix.speed * 3.6;     // Convert m/s to km/h
 
23
+               current.groundspeed = dbus_current_fix.speed * 3.6;     // Convert m/s to km/h
 
24
        else if (dbus_old_fix.mode>1) {
 
25
                gdouble timediff = dbus_current_fix.time-dbus_old_fix.time;
 
26
-               groundspeed = (timediff>0)?(calcdist2(dbus_old_fix.longitude, dbus_old_fix.latitude) * 3600 / timediff) : 0.0;
 
27
+               current.groundspeed = (timediff>0)?(calcdist2(dbus_old_fix.longitude, dbus_old_fix.latitude) * 3600 / timediff) : 0.0;
 
28
        }
 
29
        /* Handle bearing */
 
30
        if (__finite(dbus_current_fix.track))
 
31
@@ -435,7 +436,7 @@
 
32
        }
 
33
        if ( mydebug + gps_handler_debug > 80 )
 
34
                g_print("gps_handler: DBUS fix: %6.0f %10.6f/%10.6f sp:%5.2f(%5.2f) crs:%5.1f(%5.2f)\n", dbus_current_fix.time, 
 
35
-                       dbus_current_fix.latitude, dbus_current_fix.longitude, dbus_current_fix.speed, groundspeed, 
 
36
+                       dbus_current_fix.latitude, dbus_current_fix.longitude, dbus_current_fix.speed, current.groundspeed, 
 
37
                        dbus_current_fix.track, direction * 180 / M_PI);
 
38
        /* Handle altitude */
 
39
        if (dbus_current_fix.mode>2) {
 
40
@@ -453,46 +454,31 @@
 
41
 }
 
42
 
 
43
 static DBusHandlerResult dbus_handle_gps_fix (DBusMessage* message) {
 
44
-       DBusMessageIter iter;
 
45
-       //double                temp_time;
 
46
-       //char          b[100];
 
47
+    
 
48
+    DBusError error;        
 
49
+       double          temp_time;
 
50
        struct dbus_gps_fix     fix;
 
51
-       //gint32                mode;
 
52
-       //gdouble               dump;
 
53
-       
 
54
-       if (!dbus_message_iter_init (message, &iter)) {
 
55
-               /* we have a problem */
 
56
-               return DBUS_HANDLER_RESULT_NOT_YET_HANDLED;
 
57
-       }
 
58
 
 
59
-       /* Fill the fix struct */
 
60
-       fix.time                = floor(dbus_message_iter_get_double (&iter));
 
61
-       dbus_message_iter_next (&iter);
 
62
-       fix.mode                = dbus_message_iter_get_int32 (&iter);
 
63
-       dbus_message_iter_next (&iter);
 
64
-       fix.ept         = dbus_message_iter_get_double (&iter);
 
65
-       dbus_message_iter_next (&iter);
 
66
-       fix.latitude    = dbus_message_iter_get_double (&iter);
 
67
-       dbus_message_iter_next (&iter);
 
68
-       fix.longitude   = dbus_message_iter_get_double (&iter);
 
69
-       dbus_message_iter_next (&iter);
 
70
-       fix.eph         = dbus_message_iter_get_double (&iter);
 
71
-       dbus_message_iter_next (&iter);
 
72
-       fix.altitude            = dbus_message_iter_get_double (&iter);
 
73
-       dbus_message_iter_next (&iter);
 
74
-       fix.epv         = dbus_message_iter_get_double (&iter);
 
75
-       dbus_message_iter_next (&iter);
 
76
-       fix.track               = dbus_message_iter_get_double (&iter);
 
77
-       dbus_message_iter_next (&iter);
 
78
-       fix.epd         = dbus_message_iter_get_double (&iter);
 
79
-       dbus_message_iter_next (&iter);
 
80
-       fix.speed               = dbus_message_iter_get_double (&iter);
 
81
-       dbus_message_iter_next (&iter);
 
82
-       fix.eps         = dbus_message_iter_get_double (&iter);
 
83
-       dbus_message_iter_next (&iter);
 
84
-       fix.climb               = dbus_message_iter_get_double (&iter);
 
85
-       dbus_message_iter_next (&iter);
 
86
-       fix.epc         = dbus_message_iter_get_double (&iter);
 
87
+    dbus_error_init(&error);
 
88
+
 
89
+    dbus_message_get_args(message,
 
90
+                            &error,
 
91
+                            DBUS_TYPE_DOUBLE, &temp_time,
 
92
+                            DBUS_TYPE_INT32,  &fix.mode,
 
93
+                            DBUS_TYPE_DOUBLE, &fix.ept,
 
94
+                            DBUS_TYPE_DOUBLE, &fix.latitude,
 
95
+                            DBUS_TYPE_DOUBLE, &fix.longitude,
 
96
+                            DBUS_TYPE_DOUBLE, &fix.eph,
 
97
+                            DBUS_TYPE_DOUBLE, &fix.altitude,
 
98
+                            DBUS_TYPE_DOUBLE, &fix.epv,
 
99
+                            DBUS_TYPE_DOUBLE, &fix.track,
 
100
+                            DBUS_TYPE_DOUBLE, &fix.epd,
 
101
+                            DBUS_TYPE_DOUBLE, &fix.speed,
 
102
+                            DBUS_TYPE_DOUBLE, &fix.eps,
 
103
+                            DBUS_TYPE_DOUBLE, &fix.climb,
 
104
+                            DBUS_TYPE_DOUBLE, &fix.epc,
 
105
+                            DBUS_TYPE_INVALID);
 
106
+    fix.time = floor(temp_time);
 
107
 
 
108
        if ( mydebug + gps_handler_debug > 80 ) {
 
109
                g_print("gps_handler: DBUS raw: ti:%6.0f mode:%d ept:%f %10.6f/%10.6f eph:%f\n", fix.time, fix.mode, fix.ept, fix.latitude, fix.longitude, fix.eph);