Ticket #1029: odometer.diff

File odometer.diff, 2.4 KB (added by heiko wegeler, 8 years ago)
  • home/navit/_navit_develop/work/navit_repo/navit/navit/osd/core/osd_core.c

     
    521521osd_cmd_odometer_reset(struct navit *this, char *function, struct attr **in, struct attr ***out, int *valid)
    522522{
    523523        if (in && in[0] && ATTR_IS_STRING(in[0]->type) && in[0]->u.str) {
    524           GList* list = odometer_list;
    525           while(list) {
    526             if(!strcmp(((struct odometer*)((struct osd_priv_common *)(list->data))->data)->name,in[0]->u.str)) {
    527               osd_odometer_reset(list->data);
    528                   osd_odometer_draw(list->data,this,NULL);
    529             }
    530             list = g_list_next(list);
    531           }
    532         }
     524                GList* list = odometer_list;
     525                struct odometer *odm;
     526                while (list) {
     527                        odm = (struct odometer*) ((struct osd_priv_common *) (list->data))->data;
     528                        if (!strcmp(odm->name, in[0]->u.str)) {
     529                                double curr_time;
     530                                struct timeval tv;
     531                                gettimeofday(&tv, NULL);
     532                                curr_time = (double) (tv.tv_usec) / 1000000.0 + tv.tv_sec;
     533                                odm->last_click_time = curr_time;
     534                                osd_odometer_reset(list->data);
     535                                osd_odometer_draw(list->data, this, NULL);
     536                        }
     537                        list = g_list_next(list);
     538                }
     539        }
    533540}
    534541
    535542static char*
     
    777784static void
    778785osd_odometer_reset(struct osd_priv_common *opc)
    779786{
    780   struct odometer *this = (struct odometer *)opc->data;
     787  struct odometer *this = (struct odometer *) opc->data;
    781788
    782   if(!this->bDisableReset) {
    783     this->bActive         = 0;
    784     this->sum_dist        = 0;
    785     this->sum_time        = 0;
    786     this->max_speed       = 0;
    787     this->last_start_time = 0;
    788     this->last_coord.x    = -1;
    789     this->last_coord.y    = -1;
    790   }
     789  this->sum_dist = 0;
     790  this->sum_time = 0;
     791  this->max_speed = 0;
     792  this->last_start_time = 0;
     793  this->last_coord.x = -1;
     794  this->last_coord.y = -1;
    791795}
    792796
    793797static void
     
    821825
    822826  this->bActive ^= 1;  //toggle active flag
    823827
    824   if (curr_time-double_click_timewin <= this->last_click_time) { //double click handling
    825     osd_odometer_reset(opc);
     828  if (curr_time-double_click_timewin <= this->last_click_time && !this->bDisableReset) { //double click handling
     829          this->bActive = 0;
     830          osd_odometer_reset(opc);
    826831  }
    827832
    828833  this->last_click_time = curr_time;