From 7316e5a15401fbf6a912a288a2c8074490bc3ad2 Mon Sep 17 00:00:00 2001 From: Adam Boggs Date: Sun, 29 Jan 2012 18:12:25 -0700 Subject: [PATCH] Added support for new icon marker interface. Added car.png icon. --- car.png | Bin 0 -> 1845 bytes src/plugins/gps-plugin.c | 30 ++++++++++++++++++++++++------ 2 files changed, 24 insertions(+), 6 deletions(-) create mode 100644 car.png diff --git a/car.png b/car.png new file mode 100644 index 0000000000000000000000000000000000000000..af3f0f8b567e681d1f9a26ca72ae77433a6872f1 GIT binary patch literal 1845 zcmV-52g>+~P)`0YVTgSVRIZ5ZMrxuwlz05)z4=4I88YVugfQfv{x>h_DDG=|qm>c28C9uBum6 z@70^`$fB)|jh%$Ez4v}P|2^kt_&@deFMaJ(^@-|oy*@GQ_xs}RGyY)@&z?P7dGxU_ zpPH)$pSgVPtsfZXPa5REU0z=P$>!$f@FO8lKYp%pYe;@Z;?6g-IBOPZ>@zn2FnG@M zyej~H_mPl(;e4G?`u#Vz`u^=(Z-G{4QK>aSDG!V?=K=g4fcZek>C>lOY1k7^Q1!V# zfuuBWF@zKuRGGoTtV~WWE=1Ap&IdwPS67?8{@~-asag1y29%OeQlMI^V|H$Vc%JuE zmgh5J=)JPDbMw^)LMoNYkzt%J1z`=Y7l2TPN?5__>MBm2I)$m$wBL({pL^|ZR~L#R zzfK!VVw0x+mf)S-0=AtY{X+=P;0;M&y*09Dv8x2AT2my?eB8tL$ zAus;&*WY-r-T86LoveQHp)*jH!*x9*{Q-KbRO0i zSOC^oXeB`z1qc8_U@c%Qpp~?D2g1AUTXRyFBg|o-)Iuu_0>BuJz1+&gNNT+GtgBLtw#LTCfRIGE$W zS_@H@2hlPH$ML`z19x0kN_psp`eFS)gz~)EYT(%FB3jdR_<;{=Eu>NqvIIat2n8YZ z&X}GnTCMk;6lGB`#wYBqGu*QHp4jk@)a|ZyS z#xTYy!7k&@?fvecPB$v3h84g9hEQlNKq&zMkd9+)@3v8`)j@A<*)%J}&i3YSl*-rn zWay@eA_GDQT!+K+9Y~>It%cSKMUlbvd=NsgyS;^euWKlwTT1Dd#&PdgQ541e=+Vjk zjosoeah5$i-0!l$<*=3l)}qWa=iBbhL%EGt;2aes06(oGUWx}vr8mP$0)P-?O_?e829@L?&|RWiah)5 z#hN1G_%mVe@$$y*nRI$>`d_mvPrUy6HMdAdFTMT7KVJYKKMZmx3y@bXUgU#jGu$Zn zx2~_hQI&c6$E#QWeEsfw{{`h-Rt&uG+9d!003~!qSaf7zbY(hYa%Ew3WdJfTF)}SM zF)cDUR53O>GBG+bH!UzXIxsL|tQVXB001R)MObuXVRU6WZEs|0W_bWIFflSMFflDM jI8-q. */ + /* TODO: + * If gpsd connection fails, try to connect again periodically. + * If gps stops sending data there should be an indication that it's stale. + */ + #define _XOPEN_SOURCE #include #include @@ -505,8 +510,8 @@ gboolean gps_redraw_all(gpointer data) /* update position labels */ update_gps_status(gps_state); + /* Update track and marker position */ if (gps_data_is_valid(gps_data)) { - /* Update track and marker position */ g_debug("Updating track at lat = %f, long = %f, track = %f", gps_data->fix.latitude, gps_data->fix.longitude, @@ -515,11 +520,11 @@ gboolean gps_redraw_all(gpointer data) if (gps_state->marker) { grits_viewer_remove(gps_state->viewer, GRITS_OBJECT(gps_state->marker)); - g_object_unref(gps_state->viewer); gps_state->marker = NULL; } - gps_state->marker = grits_marker_new("gps"); + gps_state->marker = grits_marker_icon_new("GPS", "car.png", + gps_data->fix.track, TRUE); GRITS_OBJECT(gps_state->marker)->center.lat = gps_data->fix.latitude; GRITS_OBJECT(gps_state->marker)->center.lon = gps_data->fix.longitude; @@ -527,7 +532,7 @@ gboolean gps_redraw_all(gpointer data) GRITS_OBJECT(gps_state->marker)->lod = EARTH_R; grits_viewer_add(gps_state->viewer, GRITS_OBJECT(gps_state->marker), - GRITS_LEVEL_OVERLAY, FALSE); + GRITS_LEVEL_OVERLAY, TRUE); grits_viewer_refresh(gps_state->viewer); } @@ -542,7 +547,7 @@ gboolean gps_redraw_all(gpointer data) grits_viewer_get_location(gps_state->viewer, &lat, &lon, &elev); grits_viewer_set_location(gps_state->viewer, gps_data->fix.latitude, gps_data->fix.longitude, elev); - grits_viewer_set_rotation(gps_state->viewer, 0, 0, 0); + //grits_viewer_set_rotation(gps_state->viewer, 0, 0, 0); } /* reschedule */ @@ -750,16 +755,29 @@ static void grits_plugin_gps_init(GritsPluginGPS *self) static void grits_plugin_gps_dispose(GObject *gobject) { + GritsPluginGPS *self = GRITS_PLUGIN_GPS(gobject); + g_debug("GritsPluginGPS: dispose"); + if (self->viewer) { + if (self->marker) { + grits_viewer_remove(self->viewer, + GRITS_OBJECT(self->marker)); + } + g_object_unref(self->viewer); + self->viewer = NULL; + } + /* Drop references */ G_OBJECT_CLASS(grits_plugin_gps_parent_class)->dispose(gobject); } static void grits_plugin_gps_finalize(GObject *gobject) { - g_debug("GritsPluginGPS: finalize"); GritsPluginGPS *self = GRITS_PLUGIN_GPS(gobject); + + g_debug("GritsPluginGPS: finalize"); + /* Free data */ gtk_widget_destroy(self->config); G_OBJECT_CLASS(grits_plugin_gps_parent_class)->finalize(gobject); -- 2.43.2