Commit 0e695c34 authored by Jacek Caban's avatar Jacek Caban Committed by Alexandre Julliard

shdocvw: Abort pending navigation task when adding a new one.

parent bcffa124
...@@ -62,11 +62,14 @@ LRESULT process_dochost_tasks(DocHost *This) ...@@ -62,11 +62,14 @@ LRESULT process_dochost_tasks(DocHost *This)
return 0; return 0;
} }
static void abort_dochost_tasks(DocHost *This) void abort_dochost_tasks(DocHost *This, task_proc_t proc)
{ {
task_header_t *task, *cursor; task_header_t *task, *cursor;
LIST_FOR_EACH_ENTRY_SAFE(task, cursor, &This->task_queue, task_header_t, entry) { LIST_FOR_EACH_ENTRY_SAFE(task, cursor, &This->task_queue, task_header_t, entry) {
if(proc && proc != task->proc)
continue;
list_remove(&task->entry); list_remove(&task->entry);
task->destr(task); task->destr(task);
} }
...@@ -886,7 +889,7 @@ void DocHost_Init(DocHost *This, IDispatch *disp, const IDocHostContainerVtbl* c ...@@ -886,7 +889,7 @@ void DocHost_Init(DocHost *This, IDispatch *disp, const IDocHostContainerVtbl* c
void DocHost_Release(DocHost *This) void DocHost_Release(DocHost *This)
{ {
abort_dochost_tasks(This); abort_dochost_tasks(This, NULL);
release_dochost_client(This); release_dochost_client(This);
DocHost_ClientSite_Release(This); DocHost_ClientSite_Release(This);
......
...@@ -761,6 +761,7 @@ static HRESULT async_doc_navigate(DocHost *This, LPCWSTR url, LPCWSTR headers, P ...@@ -761,6 +761,7 @@ static HRESULT async_doc_navigate(DocHost *This, LPCWSTR url, LPCWSTR headers, P
} }
task->async_notif = async_notif; task->async_notif = async_notif;
abort_dochost_tasks(This, doc_navigate_proc);
push_dochost_task(This, &task->header, doc_navigate_proc, doc_navigate_task_destr, FALSE); push_dochost_task(This, &task->header, doc_navigate_proc, doc_navigate_task_destr, FALSE);
return S_OK; return S_OK;
} }
......
...@@ -251,6 +251,7 @@ void handle_navigation_error(DocHost*,HRESULT,BSTR,IHTMLWindow2*) DECLSPEC_HIDDE ...@@ -251,6 +251,7 @@ void handle_navigation_error(DocHost*,HRESULT,BSTR,IHTMLWindow2*) DECLSPEC_HIDDE
#define WM_DOCHOSTTASK (WM_USER+0x300) #define WM_DOCHOSTTASK (WM_USER+0x300)
void push_dochost_task(DocHost*,task_header_t*,task_proc_t,task_destr_t,BOOL) DECLSPEC_HIDDEN; void push_dochost_task(DocHost*,task_header_t*,task_proc_t,task_destr_t,BOOL) DECLSPEC_HIDDEN;
LRESULT process_dochost_tasks(DocHost*) DECLSPEC_HIDDEN; LRESULT process_dochost_tasks(DocHost*) DECLSPEC_HIDDEN;
void abort_dochost_tasks(DocHost*,task_proc_t) DECLSPEC_HIDDEN;
HRESULT InternetExplorer_Create(IUnknown*,REFIID,void**) DECLSPEC_HIDDEN; HRESULT InternetExplorer_Create(IUnknown*,REFIID,void**) DECLSPEC_HIDDEN;
void InternetExplorer_WebBrowser_Init(InternetExplorer*) DECLSPEC_HIDDEN; void InternetExplorer_WebBrowser_Init(InternetExplorer*) DECLSPEC_HIDDEN;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment