mirror of
https://github.com/rkd77/elinks.git
synced 2025-02-02 15:09:23 -05:00
[js] moved check_for_rerender to ecmascript.c
This commit is contained in:
parent
221f246d4c
commit
927b8fc1a6
@ -492,6 +492,7 @@ html_iframe_do(char *a, char *object_src,
|
||||
html_context->options->framename, html_context);
|
||||
}
|
||||
|
||||
#if 0
|
||||
char *url2 = join_urls(html_context->base_href, url);
|
||||
|
||||
uri = get_uri(url2, URI_BASE);
|
||||
@ -501,7 +502,7 @@ html_iframe_do(char *a, char *object_src,
|
||||
done_uri(uri);
|
||||
mem_free(url2);
|
||||
}
|
||||
|
||||
#endif
|
||||
mem_free(name);
|
||||
mem_free(url);
|
||||
}
|
||||
|
@ -208,6 +208,7 @@ process_snippets(struct ecmascript_interpreter *interpreter,
|
||||
ecmascript_eval(interpreter, &code, NULL);
|
||||
}
|
||||
}
|
||||
check_for_rerender(interpreter, "eval");
|
||||
}
|
||||
#endif
|
||||
|
||||
|
@ -12,11 +12,15 @@
|
||||
#include "config/home.h"
|
||||
#include "config/options.h"
|
||||
#include "document/document.h"
|
||||
#include "document/renderer.h"
|
||||
#include "document/view.h"
|
||||
#include "document/xml/renderer.h"
|
||||
#include "document/xml/renderer2.h"
|
||||
#include "ecmascript/ecmascript.h"
|
||||
#include "ecmascript/spidermonkey.h"
|
||||
#include "intl/gettext/libintl.h"
|
||||
#include "main/module.h"
|
||||
#include "main/select.h"
|
||||
#include "main/timer.h"
|
||||
#include "osdep/osdep.h"
|
||||
#include "protocol/protocol.h"
|
||||
@ -240,6 +244,47 @@ ecmascript_get_interpreter_count(void)
|
||||
return interpreter_count;
|
||||
}
|
||||
|
||||
static void
|
||||
delayed_reload(void *data)
|
||||
{
|
||||
struct delayed_rel *rel = data;
|
||||
|
||||
assert(rel);
|
||||
reset_document(rel->document);
|
||||
render_xhtml_document(rel->cached, rel->document, NULL);
|
||||
sort_links(rel->document);
|
||||
//draw_formatted(rel->ses, 0);
|
||||
mem_free(rel);
|
||||
}
|
||||
|
||||
void
|
||||
check_for_rerender(struct ecmascript_interpreter *interpreter, const char* text)
|
||||
{
|
||||
if (interpreter->changed) {
|
||||
struct document_view *doc_view = interpreter->vs->doc_view;
|
||||
struct document *document = doc_view->document;
|
||||
struct session *ses = doc_view->session;
|
||||
struct cache_entry *cached = document->cached;
|
||||
struct fragment *f = get_cache_fragment(cached);
|
||||
|
||||
//fprintf(stderr, "%s\n", text);
|
||||
|
||||
if (document->dom) {
|
||||
interpreter->changed = false;
|
||||
|
||||
struct delayed_rel *rel = mem_calloc(1, sizeof(*rel));
|
||||
|
||||
if (rel) {
|
||||
rel->cached = cached;
|
||||
rel->document = document;
|
||||
rel->ses = ses;
|
||||
object_lock(document);
|
||||
register_bottom_half(delayed_reload, rel);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
ecmascript_eval(struct ecmascript_interpreter *interpreter,
|
||||
struct string *code, struct string *ret)
|
||||
@ -277,6 +322,9 @@ ecmascript_eval_stringback(struct ecmascript_interpreter *interpreter,
|
||||
interpreter->backend_nesting++;
|
||||
result = spidermonkey_eval_stringback(interpreter, code);
|
||||
interpreter->backend_nesting--;
|
||||
|
||||
check_for_rerender(interpreter, "stringback");
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
@ -292,6 +340,9 @@ ecmascript_eval_boolback(struct ecmascript_interpreter *interpreter,
|
||||
interpreter->backend_nesting++;
|
||||
result = spidermonkey_eval_boolback(interpreter, code);
|
||||
interpreter->backend_nesting--;
|
||||
|
||||
check_for_rerender(interpreter, "boolback");
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
@ -438,6 +489,7 @@ ecmascript_timeout_handler(void *i)
|
||||
/* The expired timer ID has now been erased. */
|
||||
|
||||
ecmascript_eval(interpreter, &interpreter->code, NULL);
|
||||
check_for_rerender(interpreter, "handler");
|
||||
}
|
||||
|
||||
/* Timer callback for @interpreter->vs->doc_view->document->timeout.
|
||||
@ -455,6 +507,7 @@ ecmascript_timeout_handler2(void *i)
|
||||
/* The expired timer ID has now been erased. */
|
||||
|
||||
ecmascript_call_function(interpreter, interpreter->fun, NULL);
|
||||
check_for_rerender(interpreter, "handler2");
|
||||
}
|
||||
|
||||
|
||||
|
@ -111,6 +111,8 @@ void ecmascript_set_timeout2(struct ecmascript_interpreter *interpreter, JS::Han
|
||||
|
||||
int get_ecmascript_enable(struct ecmascript_interpreter *interpreter);
|
||||
|
||||
void check_for_rerender(struct ecmascript_interpreter *interpreter, const char* text);
|
||||
|
||||
extern char *console_log_filename;
|
||||
|
||||
extern char *local_storage_filename;
|
||||
|
@ -362,7 +362,6 @@ spidermonkey_get_interpreter(struct ecmascript_interpreter *interpreter)
|
||||
goto release_and_fail;
|
||||
}
|
||||
|
||||
|
||||
JS_SetCompartmentPrivate(js::GetContextCompartment(ctx), interpreter);
|
||||
|
||||
return ctx;
|
||||
@ -426,7 +425,6 @@ spidermonkey_check_for_exception(JSContext *ctx) {
|
||||
* on each site with javascript enabled */
|
||||
JS_ClearPendingException(ctx);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
void
|
||||
@ -439,47 +437,6 @@ free_document(void *doc)
|
||||
delete docu;
|
||||
}
|
||||
|
||||
static void
|
||||
delayed_reload(void *data)
|
||||
{
|
||||
struct delayed_rel *rel = data;
|
||||
|
||||
assert(rel);
|
||||
reset_document(rel->document);
|
||||
render_xhtml_document(rel->cached, rel->document, NULL);
|
||||
sort_links(rel->document);
|
||||
draw_formatted(rel->ses, 0);
|
||||
mem_free(rel);
|
||||
}
|
||||
|
||||
static void
|
||||
check_for_rerender(struct ecmascript_interpreter *interpreter, const char* text)
|
||||
{
|
||||
if (interpreter->changed) {
|
||||
struct document_view *doc_view = interpreter->vs->doc_view;
|
||||
struct document *document = doc_view->document;
|
||||
struct session *ses = doc_view->session;
|
||||
struct cache_entry *cached = document->cached;
|
||||
struct fragment *f = get_cache_fragment(cached);
|
||||
|
||||
//fprintf(stderr, "%s\n", text);
|
||||
|
||||
if (document->dom) {
|
||||
interpreter->changed = false;
|
||||
|
||||
struct delayed_rel *rel = mem_calloc(1, sizeof(*rel));
|
||||
|
||||
if (rel) {
|
||||
rel->cached = cached;
|
||||
rel->document = document;
|
||||
rel->ses = ses;
|
||||
object_lock(document);
|
||||
register_bottom_half(delayed_reload, rel);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
spidermonkey_eval(struct ecmascript_interpreter *interpreter,
|
||||
struct string *code, struct string *ret)
|
||||
@ -509,8 +466,6 @@ spidermonkey_eval(struct ecmascript_interpreter *interpreter,
|
||||
done_heartbeat(interpreter->heartbeat);
|
||||
JS_LeaveCompartment(ctx, comp);
|
||||
JS_EndRequest(ctx);
|
||||
|
||||
check_for_rerender(interpreter, "eval");
|
||||
}
|
||||
|
||||
void
|
||||
@ -537,8 +492,6 @@ spidermonkey_call_function(struct ecmascript_interpreter *interpreter,
|
||||
done_heartbeat(interpreter->heartbeat);
|
||||
JS_LeaveCompartment(ctx, comp);
|
||||
JS_EndRequest(ctx);
|
||||
|
||||
check_for_rerender(interpreter, "call function");
|
||||
}
|
||||
|
||||
|
||||
@ -584,12 +537,9 @@ spidermonkey_eval_stringback(struct ecmascript_interpreter *interpreter,
|
||||
JS_LeaveCompartment(ctx, comp);
|
||||
JS_EndRequest(ctx);
|
||||
|
||||
check_for_rerender(interpreter, "eval stringback");
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
int
|
||||
spidermonkey_eval_boolback(struct ecmascript_interpreter *interpreter,
|
||||
struct string *code)
|
||||
@ -638,8 +588,6 @@ spidermonkey_eval_boolback(struct ecmascript_interpreter *interpreter,
|
||||
JS_LeaveCompartment(ctx, comp);
|
||||
JS_EndRequest(ctx);
|
||||
|
||||
check_for_rerender(interpreter, "eval boolback");
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user