shdocvw: Abort pending navigation task when adding a new one.
This commit is contained in:
parent
bcffa12484
commit
0e695c3444
|
@ -62,11 +62,14 @@ LRESULT process_dochost_tasks(DocHost *This)
|
|||
return 0;
|
||||
}
|
||||
|
||||
static void abort_dochost_tasks(DocHost *This)
|
||||
void abort_dochost_tasks(DocHost *This, task_proc_t proc)
|
||||
{
|
||||
task_header_t *task, *cursor;
|
||||
|
||||
LIST_FOR_EACH_ENTRY_SAFE(task, cursor, &This->task_queue, task_header_t, entry) {
|
||||
if(proc && proc != task->proc)
|
||||
continue;
|
||||
|
||||
list_remove(&task->entry);
|
||||
task->destr(task);
|
||||
}
|
||||
|
@ -886,7 +889,7 @@ void DocHost_Init(DocHost *This, IDispatch *disp, const IDocHostContainerVtbl* c
|
|||
|
||||
void DocHost_Release(DocHost *This)
|
||||
{
|
||||
abort_dochost_tasks(This);
|
||||
abort_dochost_tasks(This, NULL);
|
||||
release_dochost_client(This);
|
||||
DocHost_ClientSite_Release(This);
|
||||
|
||||
|
|
|
@ -761,6 +761,7 @@ static HRESULT async_doc_navigate(DocHost *This, LPCWSTR url, LPCWSTR headers, P
|
|||
}
|
||||
|
||||
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);
|
||||
return S_OK;
|
||||
}
|
||||
|
|
|
@ -251,6 +251,7 @@ void handle_navigation_error(DocHost*,HRESULT,BSTR,IHTMLWindow2*) DECLSPEC_HIDDE
|
|||
#define WM_DOCHOSTTASK (WM_USER+0x300)
|
||||
void push_dochost_task(DocHost*,task_header_t*,task_proc_t,task_destr_t,BOOL) 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;
|
||||
void InternetExplorer_WebBrowser_Init(InternetExplorer*) DECLSPEC_HIDDEN;
|
||||
|
|
Loading…
Reference in New Issue