diff options
Diffstat (limited to 'render/html.c')
-rw-r--r-- | render/html.c | 47 |
1 files changed, 26 insertions, 21 deletions
diff --git a/render/html.c b/render/html.c index 60d218121..b8db76ad1 100644 --- a/render/html.c +++ b/render/html.c @@ -96,6 +96,8 @@ int html_convert(struct content *c, unsigned int width, unsigned int height) /* convert xml tree to box tree */ LOG(("XML to box")); + sprintf(c->status_message, "Processing document"); + content_broadcast(c, CONTENT_MSG_STATUS, 0); xml_to_box(html, c); /*box_dump(c->data.html.layout->children, 0);*/ @@ -103,18 +105,18 @@ int html_convert(struct content *c, unsigned int width, unsigned int height) xmlFreeDoc(document); content_remove_user(c->data.html.stylesheet_content[0], - html_convert_css_callback, c, 0); + html_convert_css_callback, c, 0, 0); if (c->data.html.stylesheet_content[1] != 0) content_destroy(c->data.html.stylesheet_content[1]); for (i = 2; i != c->data.html.stylesheet_count; i++) if (c->data.html.stylesheet_content[i] != 0) content_remove_user(c->data.html.stylesheet_content[i], - html_convert_css_callback, c, i); + html_convert_css_callback, c, i, 0); xfree(c->data.html.stylesheet_content); /* layout the box tree */ - sprintf(c->status_message, "Formatting document"); - content_broadcast(c, CONTENT_MSG_STATUS, 0); + sprintf(c->status_message, "Formatting document"); + content_broadcast(c, CONTENT_MSG_STATUS, 0); LOG(("Layout document")); layout_document(c->data.html.layout->children, width); /*box_dump(c->data.html.layout->children, 0);*/ @@ -145,7 +147,7 @@ void html_convert_css_callback(content_msg msg, struct content *css, c->error = 1; sprintf(c->status_message, "Warning: stylesheet is not CSS"); content_broadcast(c, CONTENT_MSG_STATUS, 0); - content_remove_user(css, html_convert_css_callback, c, i); + content_remove_user(css, html_convert_css_callback, c, i, 0); } break; @@ -173,7 +175,7 @@ void html_convert_css_callback(content_msg msg, struct content *css, c->active--; c->data.html.stylesheet_content[i] = fetchcache( error, c->url, html_convert_css_callback, - c, i, css->width, css->height); + c, i, css->width, css->height, 0); if (c->data.html.stylesheet_content[i]->status != CONTENT_STATUS_DONE) c->active++; break; @@ -225,7 +227,7 @@ void html_find_stylesheets(struct content *c, xmlNode *head) #endif c->url, html_convert_css_callback, - c, 0, c->width, c->height); + c, 0, c->width, c->height, 0); if (c->data.html.stylesheet_content[0]->status != CONTENT_STATUS_DONE) c->active++; @@ -275,7 +277,7 @@ void html_find_stylesheets(struct content *c, xmlNode *head) (i + 1) * sizeof(*c->data.html.stylesheet_content)); c->data.html.stylesheet_content[i] = fetchcache(url, c->url, html_convert_css_callback, c, i, - c->width, c->height); + c->width, c->height, 0); if (c->data.html.stylesheet_content[i]->status != CONTENT_STATUS_DONE) c->active++; free(url); @@ -356,7 +358,7 @@ void html_fetch_object(struct content *c, char *url, struct box *box) /* start fetch */ c->data.html.object[i].content = fetchcache(url, c->url, html_object_callback, - c, i, 0, 0); + c, i, 0, 0, box->object_params); c->active++; if (c->data.html.object[i].content->status == CONTENT_STATUS_DONE) html_object_callback(CONTENT_MSG_DONE, @@ -379,7 +381,7 @@ void html_object_callback(content_msg msg, struct content *object, c->error = 1; sprintf(c->status_message, "Warning: bad object type"); content_broadcast(c, CONTENT_MSG_STATUS, 0); - content_remove_user(object, html_object_callback, c, i); + content_remove_user(object, html_object_callback, c, i, 0); } break; @@ -447,7 +449,8 @@ void html_object_callback(content_msg msg, struct content *object, c->data.html.object[i].url = xstrdup(error); c->data.html.object[i].content = fetchcache( error, c->url, html_object_callback, - c, i, 0, 0); + c, i, 0, 0, + c->data.html.object[i].box->object_params); if (c->data.html.object[i].content->status != CONTENT_STATUS_DONE) c->active++; break; @@ -479,7 +482,8 @@ void html_revive(struct content *c, unsigned int width, unsigned int height) c->data.html.object[i].content = fetchcache( c->data.html.object[i].url, c->url, html_object_callback, - c, i, 0, 0); + c, i, 0, 0, + c->data.html.object[i].box->object_params); if (c->data.html.object[i].content->status != CONTENT_STATUS_DONE) c->active++; } @@ -507,6 +511,16 @@ void html_destroy(struct content *c) unsigned int i; LOG(("content %p", c)); + for (i = 0; i != c->data.html.object_count; i++) { + LOG(("object %i %p", i, c->data.html.object[i].content)); + if (c->data.html.object[i].content != 0) + content_remove_user(c->data.html.object[i].content, + html_object_callback, c, i, + c->data.html.object[i].box->object_params); + free(c->data.html.object[i].url); + } + free(c->data.html.object); + LOG(("layout %p", c->data.html.layout)); if (c->data.html.layout != 0) box_free(c->data.html.layout); @@ -516,14 +530,5 @@ void html_destroy(struct content *c) LOG(("title %p", c->title)); if (c->title != 0) xfree(c->title); - - for (i = 0; i != c->data.html.object_count; i++) { - LOG(("object %i %p", i, c->data.html.object[i].content)); - if (c->data.html.object[i].content != 0) - content_remove_user(c->data.html.object[i].content, - html_object_callback, c, i); - free(c->data.html.object[i].url); - } - free(c->data.html.object); } |