diff options
author | Pierre GRANDIN <pgrandin@users.noreply.github.com> | 2016-02-22 12:14:39 -0800 |
---|---|---|
committer | Pierre GRANDIN <pgrandin@users.noreply.github.com> | 2016-02-22 12:14:39 -0800 |
commit | 37da202758e0de262e83599cb8bf8316bbeac3ee (patch) | |
tree | 9bea60d39a121a0010149d859b86724bb3650fd2 | |
parent | 41db0d8bb7526bbf71df1adc2b8ab08edb7ed5b1 (diff) | |
parent | cba488e4a506f2cbf39a08b5915fe05b5b53a34b (diff) | |
download | navit-37da202758e0de262e83599cb8bf8316bbeac3ee.tar.gz |
Merge pull request #74 from pohlinkzei/speedWarnerWaitR6582
Add configurable (default : 10s) timeout before speed warner talks to you
-rw-r--r-- | navit/osd/core/osd_core.c | 22 |
1 files changed, 18 insertions, 4 deletions
diff --git a/navit/osd/core/osd_core.c b/navit/osd/core/osd_core.c index f2a898c22..4a5d4c290 100644 --- a/navit/osd/core/osd_core.c +++ b/navit/osd/core/osd_core.c @@ -2497,6 +2497,8 @@ struct osd_speed_warner { int bTextOnly; struct graphics_image *img_active,*img_passive,*img_off; char* label_str; + int timeout; + int wait_before_warn; }; static void @@ -2562,9 +2564,16 @@ osd_speed_warner_draw(struct osd_priv_common *opc, struct navit *navit, struct v if( this->speed_exceed_limit_offset+routespeed<tracking_speed && (100.0+this->speed_exceed_limit_percent)/100.0*routespeed<tracking_speed ) { if(this->announce_state==eNoWarn && this->announce_on) { - this->announce_state=eWarningTold; //warning told - navit_say(navit,_("Please decrease your speed")); + if(this->wait_before_warn>0){ + this->wait_before_warn--; + }else{ + this->announce_state=eWarningTold; //warning told + navit_say(navit,_("Please decrease your speed")); + } } + }else{ + /* reset speed warning */ + this->wait_before_warn = this->timeout; } if( tracking_speed <= routespeed ) { this->announce_state=eNoWarn; //no warning @@ -2619,7 +2628,7 @@ osd_speed_warner_init(struct osd_priv_common *opc, struct navit *nav) if (opc->osd_item.h < this->d) this->d=opc->osd_item.h; this->width=this->d/10; - + this->wait_before_warn = this->timeout; if(this->label_str && !strncmp("images:",this->label_str,7)) { char *tok1=NULL, *tok2=NULL, *tok3=NULL; strtok(this->label_str,":"); @@ -2704,7 +2713,12 @@ osd_speed_warner_new(struct navit *nav, struct osd_methods *meth, struct attr ** this->bTextOnly = 1; } } - + attr = attr_search(attrs, NULL, attr_timeout); + if (attr) + this->timeout = attr->u.num; + else + this->timeout = 10; // 10s timeout by default + attr = attr_search(attrs, NULL, attr_announce_on); if (attr) this->announce_on = attr->u.num; |