1
0
mirror of https://github.com/rkd77/elinks.git synced 2024-12-04 14:46:47 -05:00

bug 1009: id variables renamed, added document_id to the document.

cached->id => cached->cache_id
document->id => document->cache_id
onload_snippets_owner => onload_snippets_document_id
Added the distinct document->document_id.
Always reset ecmascript when a document changes for example a next chunk
of it is loaded.
This commit is contained in:
Witold Filipczyk 2008-04-20 22:25:10 +02:00 committed by Kalle Olavi Niemitalo
parent 10caf7a4bc
commit 232c07aa7f
8 changed files with 19 additions and 15 deletions

6
src/cache/cache.c vendored
View File

@ -150,7 +150,7 @@ get_cache_entry(struct uri *uri)
cached->valid = 1; cached->valid = 1;
init_list(cached->frag); init_list(cached->frag);
cached->id = id_counter++; cached->cache_id = id_counter++;
object_nolock(cached, "cache_entry"); /* Debugging purpose. */ object_nolock(cached, "cache_entry"); /* Debugging purpose. */
cached->box_item = add_listbox_leaf(&cache_browser, NULL, cached); cached->box_item = add_listbox_leaf(&cache_browser, NULL, cached);
@ -385,7 +385,7 @@ add_fragment(struct cache_entry *cached, off_t offset,
/* id marks each entry, and change each time it's modified, /* id marks each entry, and change each time it's modified,
* used in HTML renderer. */ * used in HTML renderer. */
cached->id = id_counter++; cached->cache_id = id_counter++;
/* Possibly insert the new data in the middle of existing fragment. */ /* Possibly insert the new data in the middle of existing fragment. */
foreach (f, cached->frag) { foreach (f, cached->frag) {
@ -639,7 +639,7 @@ delete_entry_content(struct cache_entry *cached)
del_from_list(f); del_from_list(f);
frag_free(f); frag_free(f);
} }
cached->id = id_counter++; cached->cache_id = id_counter++;
cached->length = 0; cached->length = 0;
cached->incomplete = 1; cached->incomplete = 1;

2
src/cache/cache.h vendored
View File

@ -42,7 +42,7 @@ struct cache_entry {
unsigned char *ssl_info; /* SSL ciphers used during transfer */ unsigned char *ssl_info; /* SSL ciphers used during transfer */
unsigned char *encoding_info; /* Encoding used during transfer */ unsigned char *encoding_info; /* Encoding used during transfer */
unsigned int id; /* Change each time entry is modified. */ unsigned int cache_id; /* Change each time entry is modified. */
time_t seconds; /* Access time. Used by 'If-Modified-Since' */ time_t seconds; /* Access time. Used by 'If-Modified-Since' */

2
src/cache/dialogs.c vendored
View File

@ -146,7 +146,7 @@ get_cache_entry_info(struct listbox_item *item, struct terminal *term)
#ifdef CONFIG_DEBUG #ifdef CONFIG_DEBUG
add_format_to_string(&msg, "\n%s: %d", "Refcount", get_object_refcount(cached)); add_format_to_string(&msg, "\n%s: %d", "Refcount", get_object_refcount(cached));
add_format_to_string(&msg, "\n%s: %u", _("ID", term), cached->id); add_format_to_string(&msg, "\n%s: %u", _("ID", term), cached->cache_id);
if (cached->head && *cached->head) { if (cached->head && *cached->head) {
add_format_to_string(&msg, "\n%s:\n\n%s", _("Header", term), add_format_to_string(&msg, "\n%s:\n\n%s", _("Header", term),

View File

@ -33,6 +33,7 @@
#include "util/string.h" #include "util/string.h"
#include "viewer/text/link.h" #include "viewer/text/link.h"
static int document_init_counter = 0;
static INIT_LIST_OF(struct document, format_cache); static INIT_LIST_OF(struct document, format_cache);
@ -46,7 +47,7 @@ init_document(struct cache_entry *cached, struct document_options *options)
document->uri = get_uri_reference(cached->uri); document->uri = get_uri_reference(cached->uri);
object_lock(cached); object_lock(cached);
document->id = cached->id; document->cache_id = cached->cache_id;
document->cached = cached; document->cached = cached;
init_list(document->forms); init_list(document->forms);
@ -55,6 +56,7 @@ init_document(struct cache_entry *cached, struct document_options *options)
#ifdef CONFIG_ECMASCRIPT #ifdef CONFIG_ECMASCRIPT
init_list(document->onload_snippets); init_list(document->onload_snippets);
document->document_id = ++document_init_counter;
#endif #endif
#ifdef CONFIG_COMBINE #ifdef CONFIG_COMBINE
@ -214,7 +216,7 @@ get_document_css_magic(struct document *document)
foreach_uri (uri, index, &document->css_imports) { foreach_uri (uri, index, &document->css_imports) {
struct cache_entry *cached = find_in_cache(uri); struct cache_entry *cached = find_in_cache(uri);
if (cached) css_magic += cached->id + cached->data_size; if (cached) css_magic += cached->cache_id + cached->data_size;
} }
return css_magic; return css_magic;
@ -256,7 +258,7 @@ get_cached_document(struct cache_entry *cached, struct document_options *options
continue; continue;
if (options->no_cache if (options->no_cache
|| cached->id != document->id || cached->cache_id != document->cache_id
|| !check_document_css_magic(document)) { || !check_document_css_magic(document)) {
if (!is_object_used(document)) { if (!is_object_used(document)) {
done_document(document); done_document(document);
@ -289,7 +291,7 @@ shrink_format_cache(int whole)
/* Destroy obsolete renderer documents which are already /* Destroy obsolete renderer documents which are already
* out-of-sync. */ * out-of-sync. */
if (document->cached->id == document->id) if (document->cached->cache_id == document->cache_id)
continue; continue;
done_document(document); done_document(document);

View File

@ -166,6 +166,7 @@ struct document {
struct uri_list ecmascript_imports; struct uri_list ecmascript_imports;
/** used by setTimeout */ /** used by setTimeout */
timer_id_T timeout; timer_id_T timeout;
unsigned int document_id;
#endif #endif
#ifdef CONFIG_CSS #ifdef CONFIG_CSS
/** @todo FIXME: We should externally maybe using cache_entry store the /** @todo FIXME: We should externally maybe using cache_entry store the
@ -210,7 +211,7 @@ struct document {
/* Positions of the last base character.*/ /* Positions of the last base character.*/
int comb_x, comb_y; int comb_x, comb_y;
#endif #endif
unsigned int id; /**< Used to check cache entries. */ unsigned int cache_id; /**< Used to check cache entries. */
int cp; int cp;
int width, height; /**< size of document */ int width, height; /**< size of document */

View File

@ -383,11 +383,12 @@ render_document(struct view_state *vs, struct document_view *doc_view,
* XXX: What happens if a document is still loading in the * XXX: What happens if a document is still loading in the
* other tab when we press ^L here? */ * other tab when we press ^L here? */
if (vs->ecmascript_fragile if (vs->ecmascript_fragile
|| (vs->ecmascript && vs->ecmascript->onload_snippets_owner || (vs->ecmascript
&& document->id != vs->ecmascript->onload_snippets_owner)) && vs->ecmascript->onload_snippets_document_id
&& document->document_id != vs->ecmascript->onload_snippets_document_id))
ecmascript_reset_state(vs); ecmascript_reset_state(vs);
assert(vs->ecmascript); assert(vs->ecmascript);
vs->ecmascript->onload_snippets_owner = document->id; vs->ecmascript->onload_snippets_document_id = document->document_id;
/* Passing of the onload_snippets pointers gives *_snippets() /* Passing of the onload_snippets pointers gives *_snippets()
* some feeling of universality, shall we ever get any other * some feeling of universality, shall we ever get any other

View File

@ -50,7 +50,7 @@ struct ecmascript_interpreter {
* ecmascript_fragile, but it can happen i.e. when the urrent document * ecmascript_fragile, but it can happen i.e. when the urrent document
* is reloaded in another tab and then you just cause the current tab * is reloaded in another tab and then you just cause the current tab
* to redraw. */ * to redraw. */
unsigned int onload_snippets_owner; unsigned int onload_snippets_document_id;
}; };
/* Why is the interpreter bound to {struct view_state} instead of {struct /* Why is the interpreter bound to {struct view_state} instead of {struct

View File

@ -67,7 +67,7 @@ check_document_fragment(struct session *ses, struct document_view *doc_view)
struct cache_entry *cached = document->cached; struct cache_entry *cached = document->cached;
assert(cached); assert(cached);
if (cached->incomplete || cached->id != document->id) { if (cached->incomplete || cached->cache_id != document->cache_id) {
done_string(&fragment); done_string(&fragment);
return -2; return -2;
} }