Fix:Core:Better callback for osd initialisation
authormartin-s <martin-s@ffa7fe5e-494d-0410-b361-a75ebd5db220>
Thu, 10 Dec 2009 14:34:18 +0000 (14:34 +0000)
committermartin-s <martin-s@ffa7fe5e-494d-0410-b361-a75ebd5db220>
Thu, 10 Dec 2009 14:34:18 +0000 (14:34 +0000)
git-svn-id: https://navit.svn.sourceforge.net/svnroot/navit/trunk/navit@2864 ffa7fe5e-494d-0410-b361-a75ebd5db220

navit/attr_def.h
navit/navit.c
navit/osd/core/osd_core.c

index e09c197..d2ee03e 100644 (file)
@@ -353,6 +353,7 @@ ATTR(keypress)
 ATTR(window_closed)
 ATTR(log_gpx)
 ATTR(log_textfile)
+ATTR(graphics_ready)
 ATTR2(0x000bffff,type_callback_end)
 ATTR2(0x000c0000,type_int64_begin)
 ATTR(osm_nodeid)
index df60b5e..7266c32 100644 (file)
@@ -247,6 +247,7 @@ void
 navit_handle_resize(struct navit *this_, int w, int h)
 {
        struct map_selection sel;
+       int callback=(this_->ready == 1);
        this_->ready |= 2;
        if (this_->w != w || this_->h != h) {
                memset(&sel, 0, sizeof(sel));
@@ -260,6 +261,8 @@ navit_handle_resize(struct navit *this_, int w, int h)
        }
        if (this_->ready == 3)
                navit_draw(this_);
+       if (callback)
+               callback_list_call_attr_1(this_->attr_cbl, attr_graphics_ready, this_);
 }
 
 static void
@@ -1288,6 +1291,7 @@ navit_init(struct navit *this_)
 {
        struct mapset *ms;
        struct map *map;
+       int callback;
 
        dbg(2,"enter gui %p graphics %p\n",this_->gui,this_->gra);
        if (!this_->gui) {
@@ -1386,10 +1390,13 @@ navit_init(struct navit *this_)
        navit_set_cursors(this_);
 
        callback_list_call_attr_1(this_->attr_cbl, attr_navit, this_);
+       callback=(this_->ready == 2);
        this_->ready|=1;
        dbg(2,"ready=%d\n",this_->ready);
        if (this_->ready == 3)
                navit_draw(this_);
+       if (callback)
+               callback_list_call_attr_1(this_->attr_cbl, attr_graphics_ready, this_);
 #if 0
        routech_test(this_);
 #endif
index b60e4f7..78eb968 100644 (file)
@@ -221,7 +221,7 @@ osd_compass_new(struct navit *nav, struct osd_methods *meth,
        osd_set_std_attr(attrs, &this->osd_item, 2);
        attr = attr_search(attrs, NULL, attr_width);
        this->width=attr ? attr->u.num : 2;
-       navit_add_callback(nav, callback_new_attr_1(callback_cast(osd_compass_init), attr_navit, this));
+       navit_add_callback(nav, callback_new_attr_1(callback_cast(osd_compass_init), attr_graphics_ready, this));
        return (struct osd_priv *) this;
 }
 
@@ -302,7 +302,7 @@ osd_button_new(struct navit *nav, struct osd_methods *meth,
 
        this->src = graphics_icon_path(attr->u.str);
 
-       navit_add_callback(nav, this->navit_init_cb = callback_new_attr_1(callback_cast (osd_button_init), attr_navit, this));
+       navit_add_callback(nav, this->navit_init_cb = callback_new_attr_1(callback_cast (osd_button_init), attr_graphics_ready, this));
 
        return (struct osd_priv *) this;
       error:
@@ -455,7 +455,7 @@ osd_nav_next_turn_new(struct navit *nav, struct osd_methods *meth,
        if (attr)
                this->level=attr->u.num;
 
-       navit_add_callback(nav, callback_new_attr_1(callback_cast(osd_nav_next_turn_init), attr_navit, this));
+       navit_add_callback(nav, callback_new_attr_1(callback_cast(osd_nav_next_turn_init), attr_graphics_ready, this));
        return (struct osd_priv *) this;
 }
 
@@ -571,7 +571,7 @@ osd_nav_toggle_announcer_new(struct navit *nav, struct osd_methods *meth, struct
 
     this->item.command = g_strdup(command);
 
-       navit_add_callback(nav, callback_new_attr_1(callback_cast(osd_nav_toggle_announcer_init), attr_navit, this));
+       navit_add_callback(nav, callback_new_attr_1(callback_cast(osd_nav_toggle_announcer_init), attr_graphics_ready, this));
        return (struct osd_priv *) this;
 }
 
@@ -632,7 +632,7 @@ osd_speed_warner_new(struct navit *nav, struct osd_methods *meth, struct attr **
        if (this->item.h < this->d)
                this->d=this->item.h;
        this->width=this->d/10;
-       navit_add_callback(nav, callback_new_attr_1(callback_cast(osd_speed_warner_init), attr_navit, this));
+       navit_add_callback(nav, callback_new_attr_1(callback_cast(osd_speed_warner_init), attr_graphics_ready, this));
        return (struct osd_priv *) this;
 }
 
@@ -1006,7 +1006,7 @@ osd_text_new(struct navit *nav, struct osd_methods *meth,
        if (attr)
                this->align=attr->u.num;
 
-       navit_add_callback(nav, callback_new_attr_1(callback_cast(osd_text_init), attr_navit, this));
+       navit_add_callback(nav, callback_new_attr_1(callback_cast(osd_text_init), attr_graphics_ready, this));
        return (struct osd_priv *) this;
 }
 
@@ -1124,7 +1124,7 @@ osd_gps_status_new(struct navit *nav, struct osd_methods *meth,
        } else
                this->icon_src = graphics_icon_path("gui_strength_%d_32_32.png");
 
-       navit_add_callback(nav, callback_new_attr_1(callback_cast(osd_gps_status_init), attr_navit, this));
+       navit_add_callback(nav, callback_new_attr_1(callback_cast(osd_gps_status_init), attr_graphics_ready, this));
        return (struct osd_priv *) this;
 }
 
@@ -1227,7 +1227,7 @@ osd_volume_new(struct navit *nav, struct osd_methods *meth,
        } else
                this->icon_src = graphics_icon_path("gui_strength_%d_32_32.png");
 
-       navit_add_callback(nav, callback_new_attr_1(callback_cast(osd_volume_init), attr_navit, this));
+       navit_add_callback(nav, callback_new_attr_1(callback_cast(osd_volume_init), attr_graphics_ready, this));
        return (struct osd_priv *) this;
 }