diff options
-rw-r--r-- | content/content.c | 4 | ||||
-rw-r--r-- | content/fetchcache.c | 25 | ||||
-rw-r--r-- | content/fetchcache.h | 6 | ||||
-rw-r--r-- | desktop/browser.c | 32 | ||||
-rw-r--r-- | desktop/browser.h | 4 | ||||
-rw-r--r-- | riscos/jpeg.c | 3 |
6 files changed, 45 insertions, 29 deletions
diff --git a/content/content.c b/content/content.c index 1b75f14ae..ecca5c2fd 100644 --- a/content/content.c +++ b/content/content.c @@ -1,5 +1,5 @@ /** - * $Id: content.c,v 1.2 2003/02/25 21:00:27 bursa Exp $ + * $Id: content.c,v 1.3 2003/02/28 11:49:13 bursa Exp $ */ #include <assert.h> @@ -39,7 +39,7 @@ static const struct handler_entry handler_map[] = { {html_create, html_process_data, html_convert, html_revive, html_reformat, html_destroy}, {textplain_create, textplain_process_data, textplain_convert, textplain_revive, textplain_reformat, textplain_destroy}, - {jpeg_create, jpeg_process_data, jpeg_convert, jpeg_revive, jpeg_destroy}, + {jpeg_create, jpeg_process_data, jpeg_convert, jpeg_revive, jpeg_reformat, jpeg_destroy}, /* {css_create, css_process_data, css_convert, css_revive, css_destroy}, {png_create, png_process_data, png_convert, png_revive, png_destroy},*/ }; diff --git a/content/fetchcache.c b/content/fetchcache.c index 96c865b67..b950da093 100644 --- a/content/fetchcache.c +++ b/content/fetchcache.c @@ -1,8 +1,9 @@ /** - * $Id: fetchcache.c,v 1.2 2003/02/25 21:00:27 bursa Exp $ + * $Id: fetchcache.c,v 1.3 2003/02/28 11:49:13 bursa Exp $ */ #include <assert.h> +#include <string.h> #include "netsurf/content/cache.h" #include "netsurf/content/fetchcache.h" #include "netsurf/content/fetch.h" @@ -12,20 +13,21 @@ struct fetchcache { void *url; - void (*callback)(fetchcache_msg msg, struct content *c, void *p, char *error); + void (*callback)(fetchcache_msg msg, struct content *c, void *p, const char *error); void *p; struct fetch *f; struct content *c; unsigned long width, height; + unsigned long size; }; void fetchcache_free(struct fetchcache *fc); -void fetchcache_callback(fetchcache_msg msg, struct fetchcache *fc, char *data, unsigned long size); +void fetchcache_callback(fetchcache_msg msg, void *p, char *data, unsigned long size); void fetchcache(char *url, char *referer, - void (*callback)(fetchcache_msg msg, struct content *c, void *p, char *error), + void (*callback)(fetchcache_msg msg, struct content *c, void *p, const char *error), void *p, unsigned long width, unsigned long height) { struct content *c; @@ -33,11 +35,13 @@ void fetchcache(char *url, char *referer, c = cache_get(url); if (c != 0) { + callback(FETCHCACHE_STATUS, c, p, "Found in cache"); content_revive(c, width, height); callback(FETCHCACHE_OK, c, p, 0); return; } + callback(FETCHCACHE_STATUS, c, p, "Starting fetch"); fc = xcalloc(1, sizeof(struct fetchcache)); fc->url = xstrdup(url); fc->callback = callback; @@ -45,6 +49,7 @@ void fetchcache(char *url, char *referer, fc->c = 0; fc->width = width; fc->height = height; + fc->size = 0; fc->f = fetch_start(url, referer, fetchcache_callback, fc); } @@ -56,35 +61,41 @@ void fetchcache_free(struct fetchcache *fc) } -void fetchcache_callback(fetch_msg msg, struct fetchcache *fc, char *data, unsigned long size) +void fetchcache_callback(fetch_msg msg, void *p, char *data, unsigned long size) { + struct fetchcache *fc = p; content_type type; char *mime_type; char *semic; + char status[40]; switch (msg) { case FETCH_TYPE: mime_type = strdup(data); if ((semic = strchr(mime_type, ';')) != 0) *semic = 0; /* remove "; charset=..." */ type = content_lookup(mime_type); - free(mime_type); LOG(("FETCH_TYPE, type %u", type)); if (type == CONTENT_OTHER) { fetch_abort(fc->f); - fc->callback(FETCHCACHE_BADTYPE, 0, fc->p, 0); + fc->callback(FETCHCACHE_BADTYPE, 0, fc->p, mime_type); free(fc); } else { fc->c = content_create(type, fc->url); } + free(mime_type); break; case FETCH_DATA: LOG(("FETCH_DATA")); assert(fc->c != 0); + fc->size += size; + sprintf(status, "Received %lu bytes", fc->size); + fc->callback(FETCHCACHE_STATUS, fc->c, fc->p, status); content_process_data(fc->c, data, size); break; case FETCH_FINISHED: LOG(("FETCH_FINISHED")); assert(fc->c != 0); + sprintf(status, "Converting %lu bytes", fc->size); if (content_convert(fc->c, fc->width, fc->height) == 0) { cache_put(fc->c); fc->callback(FETCHCACHE_OK, fc->c, fc->p, 0); diff --git a/content/fetchcache.h b/content/fetchcache.h index d212b56a5..37fa8176b 100644 --- a/content/fetchcache.h +++ b/content/fetchcache.h @@ -1,5 +1,5 @@ /** - * $Id: fetchcache.h,v 1.1 2003/02/09 12:58:14 bursa Exp $ + * $Id: fetchcache.h,v 1.2 2003/02/28 11:49:13 bursa Exp $ */ #ifndef _NETSURF_DESKTOP_FETCHCACHE_H_ @@ -7,10 +7,10 @@ #include "netsurf/content/content.h" -typedef enum {FETCHCACHE_OK, FETCHCACHE_BADTYPE, FETCHCACHE_ERROR} fetchcache_msg; +typedef enum {FETCHCACHE_OK, FETCHCACHE_BADTYPE, FETCHCACHE_ERROR, FETCHCACHE_STATUS} fetchcache_msg; void fetchcache(char *url, char *referer, - void (*callback)(fetchcache_msg msg, struct content *c, void *p, char *error), + void (*callback)(fetchcache_msg msg, struct content *c, void *p, const char *error), void *p, unsigned long width, unsigned long height); #endif diff --git a/desktop/browser.c b/desktop/browser.c index cb64d22f2..e76e97547 100644 --- a/desktop/browser.c +++ b/desktop/browser.c @@ -1,5 +1,5 @@ /** - * $Id: browser.c,v 1.27 2003/02/26 18:22:24 bursa Exp $ + * $Id: browser.c,v 1.28 2003/02/28 11:49:13 bursa Exp $ */ #include "netsurf/content/cache.h" @@ -28,7 +28,7 @@ void browser_window_redraw_boxes(struct browser_window* bw, struct box_position* void browser_window_follow_link(struct browser_window* bw, int click_x, int click_y, int click_type); void browser_window_callback(fetchcache_msg msg, struct content *c, - struct browser_window* bw, char *error); + struct browser_window* bw, const char *error); void box_under_area(struct box* box, int x, int y, int ox, int oy, struct box_selection** found, int* count, int* plot_index); @@ -48,9 +48,6 @@ void browser_window_stop_throbber(struct browser_window* bw) void browser_window_reformat(struct browser_window* bw) { - char status[100]; - clock_t time0, time1; - LOG(("Entering...")); assert(bw != 0); if (bw->current_content == NULL) @@ -60,26 +57,23 @@ void browser_window_reformat(struct browser_window* bw) { case CONTENT_HTML: LOG(("HTML content.")); - time0 = clock(); if (bw->current_content->title == 0) gui_window_set_title(bw->window, bw->url); else gui_window_set_title(bw->window, bw->current_content->title); - time1 = clock(); LOG(("Setting extent")); gui_window_set_extent(bw->window, bw->current_content->width, bw->current_content->height); LOG(("Setting scroll")); gui_window_set_scroll(bw->window, 0, 0); - LOG(("Redraw window")); - gui_window_redraw_window(bw->window); LOG(("Complete")); - sprintf(status, "Format complete (%gs).", ((float) time1 - time0) / CLOCKS_PER_SEC); - browser_window_set_status(bw, status); break; default: - LOG(("Unknown content type")); + LOG(("Unknown content type")); break; } + + LOG(("Redraw window")); + gui_window_redraw_window(bw->window); } /* create a new history item */ @@ -225,6 +219,7 @@ void browser_window_open_location_historical(struct browser_window* bw, char* ur assert(bw != 0 && url != 0); browser_window_set_status(bw, "Opening page..."); + bw->time0 = clock(); fetchcache(url, 0, browser_window_callback, bw, gui_window_get_width(bw->window), 0); LOG(("end")); @@ -248,14 +243,14 @@ void browser_window_open_location(struct browser_window* bw, char* url) } void browser_window_callback(fetchcache_msg msg, struct content *c, - struct browser_window* bw, char *error) + struct browser_window* bw, const char *error) { gui_safety previous_safety; + char status[40]; switch (msg) { case FETCHCACHE_OK: - browser_window_set_status(bw, "Request complete."); { struct gui_message gmsg; if (bw->url != 0) @@ -279,6 +274,8 @@ void browser_window_callback(fetchcache_msg msg, struct content *c, bw->current_content = c; browser_window_reformat(bw); gui_window_set_redraw_safety(bw->window, previous_safety); + sprintf(status, "Page complete (%gs)", ((float) clock() - bw->time0) / CLOCKS_PER_SEC); + browser_window_set_status(bw, status); browser_window_stop_throbber(bw); } break; @@ -289,10 +286,15 @@ void browser_window_callback(fetchcache_msg msg, struct content *c, break; case FETCHCACHE_BADTYPE: - browser_window_set_status(bw, "Unknown type"); + fprintf(status, "Unknown type '%s'", error); + browser_window_set_status(bw, status); browser_window_stop_throbber(bw); break; + case FETCHCACHE_STATUS: + browser_window_set_status(bw, error); + break; + default: assert(0); } diff --git a/desktop/browser.h b/desktop/browser.h index a1206f7af..00cb937a8 100644 --- a/desktop/browser.h +++ b/desktop/browser.h @@ -1,10 +1,11 @@ /** - * $Id: browser.h,v 1.8 2003/02/09 19:33:19 bursa Exp $ + * $Id: browser.h,v 1.9 2003/02/28 11:49:13 bursa Exp $ */ #ifndef _NETSURF_DESKTOP_BROWSER_H_ #define _NETSURF_DESKTOP_BROWSER_H_ +#include <time.h> #include "netsurf/content/content.h" #include "netsurf/desktop/gui.h" #include "netsurf/render/box.h" @@ -48,6 +49,7 @@ struct browser_window struct content* current_content; struct history* history; + clock_t time0; char* url; diff --git a/riscos/jpeg.c b/riscos/jpeg.c index 48f43ca8e..f8ef1c7d0 100644 --- a/riscos/jpeg.c +++ b/riscos/jpeg.c @@ -1,5 +1,5 @@ /** - * $Id: jpeg.c,v 1.1 2003/02/25 21:00:27 bursa Exp $ + * $Id: jpeg.c,v 1.2 2003/02/28 11:49:13 bursa Exp $ * * This is just a temporary implementation using the JPEG renderer * available in some versions of RISC OS. @@ -26,6 +26,7 @@ void jpeg_process_data(struct content *c, char *data, unsigned long size) c->data.jpeg.data = xrealloc(c->data.jpeg.data, c->data.jpeg.length + size); memcpy(c->data.jpeg.data + c->data.jpeg.length, data, size); c->data.jpeg.length += size; + c->size += size; } |