[project @ 2004-07-30 16:16:07 by bursa]

Implement content_quit() and ro_gui_window_quit() to free resources on quit.

svn path=/import/netsurf/; revision=1164
This commit is contained in:
James Bursa 2004-07-30 16:16:07 +00:00
parent f0c6cb6d1a
commit 54d25de371
6 changed files with 49 additions and 3 deletions

View File

@ -539,7 +539,7 @@ void content_clean(void)
content_stop_check(c);
}
/* attempt to shrike the memory cache (unused fresh contents) */
/* attempt to shrink the memory cache (unused fresh contents) */
size = 0;
next = 0;
for (c = content_list; c; c = c->next) {
@ -613,6 +613,37 @@ void content_reset(struct content *c)
}
/**
* Free all contents in the content_list.
*/
void content_quit(void)
{
bool progress = true;
struct content *c, *next;
while (content_list && progress) {
progress = false;
for (c = content_list; c; c = next) {
next = c->next;
if (c->user_list->next &&
c->status != CONTENT_STATUS_ERROR)
/* content has users */
continue;
/* content can be destroyed */
content_destroy(c);
progress = true;
}
}
if (content_list) {
LOG(("bug: some contents could not be destroyed"));
}
}
/**
* Display content on screen.
*

View File

@ -268,6 +268,7 @@ void content_convert(struct content *c, int width, int height);
void content_reformat(struct content *c, int width, int height);
void content_clean(void);
void content_reset(struct content *c);
void content_quit(void);
void content_redraw(struct content *c, int x, int y,
int width, int height,
int clip_x0, int clip_y0, int clip_x1, int clip_y1,

View File

@ -96,8 +96,9 @@ void netsurf_poll(void)
void netsurf_exit(void)
{
fetch_quit();
gui_quit();
content_quit();
fetch_quit();
}

View File

@ -441,10 +441,11 @@ void gui_init2(void)
void gui_quit(void)
{
ro_gui_window_quit();
ro_gui_hotlist_save();
ro_gui_history_quit();
free(gui_sprites);
wimp_close_down(task_handle);
xwimp_close_down(task_handle);
xhourglass_off();
}

View File

@ -162,6 +162,7 @@ bool ro_gui_401login_keypress(wimp_key *key);
#endif
/* in window.c */
void ro_gui_window_quit(void);
void ro_gui_window_click(struct gui_window *g, wimp_pointer *mouse);
void ro_gui_window_open(struct gui_window *g, wimp_open *open);
void ro_gui_window_redraw(struct gui_window *g, wimp_draw *redraw);

View File

@ -302,6 +302,17 @@ void gui_window_destroy(struct gui_window *g)
}
/**
* Destroy all browser windows.
*/
void ro_gui_window_quit(void)
{
while (window_list)
browser_window_destroy(window_list->bw);
}
/**
* Set the title of a browser window.
*