diff options
author | Daniel Silverstone <dsilvers@netsurf-browser.org> | 2010-04-12 10:40:55 +0000 |
---|---|---|
committer | Daniel Silverstone <dsilvers@netsurf-browser.org> | 2010-04-12 10:40:55 +0000 |
commit | 8fd3bb959acb6b43710621000bdbe44d984ce79d (patch) | |
tree | 508e7399bb7a57eb373f416fd33a8ade19046d88 /render/favicon.c | |
parent | 2a0b0dab5b44c3cdafaf297199ffb8f246cd4d18 (diff) | |
download | netsurf-8fd3bb959acb6b43710621000bdbe44d984ce79d.tar.gz netsurf-8fd3bb959acb6b43710621000bdbe44d984ce79d.tar.bz2 |
Make favourite icons part of the HTML content's active set so that we don't complete the fetch until the favicon is finished loading
svn path=/trunk/netsurf/; revision=10384
Diffstat (limited to 'render/favicon.c')
-rw-r--r-- | render/favicon.c | 17 |
1 files changed, 16 insertions, 1 deletions
diff --git a/render/favicon.c b/render/favicon.c index d1eaaacdd..abab3eb7c 100644 --- a/render/favicon.c +++ b/render/favicon.c @@ -171,6 +171,10 @@ bool favicon_get_icon(struct content *c, xmlNode *html) content__get_url(c), NULL, favicon_callback, c, NULL, permitted_types, &c->data.html.favicon); + if (error == NSERROR_OK) { + c->active += 1; + } + free(url); return error == NSERROR_OK; @@ -196,6 +200,7 @@ nserror favicon_callback(hlcache_handle *icon, hlcache_handle_abort(icon); hlcache_handle_release(icon); c->data.html.favicon = NULL; + c->active -= 1; content_add_error(c, "NotFavIco", 0); @@ -205,8 +210,9 @@ nserror favicon_callback(hlcache_handle *icon, break; case CONTENT_MSG_READY: - /* Fall through */ + break; case CONTENT_MSG_DONE: + c->active -= 1; break; case CONTENT_MSG_ERROR: @@ -216,6 +222,8 @@ nserror favicon_callback(hlcache_handle *icon, c->data.html.favicon = NULL; content_add_error(c, "?", 0); + + c->active -= 1; break; case CONTENT_MSG_STATUS: @@ -233,5 +241,12 @@ nserror favicon_callback(hlcache_handle *icon, assert(0); } + if (c->active == 0) { + /* all objects have arrived */ + content__reformat(c, c->available_width, c->height); + html_set_status(c, ""); + content_set_done(c); + } + return NSERROR_OK; } |