mshtml: Avoid asynchronous parse_complete call.

This commit is contained in:
Jacek Caban 2010-08-18 13:39:29 +02:00 committed by Alexandre Julliard
parent d607976a74
commit 8507db18a8

View File

@ -312,10 +312,8 @@ static void call_explorer_69(HTMLDocumentObj *doc)
FIXME("handle result\n"); FIXME("handle result\n");
} }
static void parse_complete_proc(task_t *task) static void parse_complete(HTMLDocumentObj *doc)
{ {
HTMLDocumentObj *doc = ((docobj_task_t*)task)->doc;
TRACE("(%p)\n", doc); TRACE("(%p)\n", doc);
if(doc->usermode == EDITMODE) if(doc->usermode == EDITMODE)
@ -328,35 +326,24 @@ static void parse_complete_proc(task_t *task)
call_explorer_69(doc); call_explorer_69(doc);
/* FIXME: IE7 calls EnableModelless(TRUE), EnableModelless(FALSE) and sets interactive state here */ /* FIXME: IE7 calls EnableModelless(TRUE), EnableModelless(FALSE) and sets interactive state here */
set_ready_state(doc->basedoc.window, READYSTATE_INTERACTIVE);
} }
static void handle_end_load(HTMLDocumentNode *This) static void handle_end_load(HTMLDocumentNode *This)
{ {
docobj_task_t *task;
TRACE("\n"); TRACE("\n");
if(!This->basedoc.doc_obj) if(!This->basedoc.doc_obj)
return; return;
if(This != This->basedoc.doc_obj->basedoc.doc_node) { if(This == This->basedoc.doc_obj->basedoc.doc_node) {
set_ready_state(This->basedoc.window, READYSTATE_INTERACTIVE); /*
return; * This should be done in the worker thread that parses HTML,
* but we don't have such thread (Gecko parses HTML for us).
*/
parse_complete(This->basedoc.doc_obj);
} }
task = heap_alloc(sizeof(docobj_task_t)); set_ready_state(This->basedoc.window, READYSTATE_INTERACTIVE);
if(!task)
return;
task->doc = This->basedoc.doc_obj;
/*
* This should be done in the worker thread that parses HTML,
* but we don't have such thread (Gecko parses HTML for us).
*/
push_task(&task->header, &parse_complete_proc, This->basedoc.doc_obj->basedoc.task_magic);
} }
static nsresult NSAPI nsRunnable_Run(nsIRunnable *iface) static nsresult NSAPI nsRunnable_Run(nsIRunnable *iface)