Jacek Caban : shdocvw: Do navigation in message handler.
Alexandre Julliard
julliard at winehq.org
Mon Jan 21 05:58:53 CST 2008
Module: wine
Branch: master
Commit: b90346fd623a43089dab72c8dd778be7384c66b4
URL: http://source.winehq.org/git/wine.git/?a=commit;h=b90346fd623a43089dab72c8dd778be7384c66b4
Author: Jacek Caban <jacek at codeweavers.com>
Date: Fri Jan 18 21:54:16 2008 +0100
shdocvw: Do navigation in message handler.
---
dlls/shdocvw/navigate.c | 29 ++++++++++++++++++++++-------
1 files changed, 22 insertions(+), 7 deletions(-)
diff --git a/dlls/shdocvw/navigate.c b/dlls/shdocvw/navigate.c
index 396d978..4439922 100644
--- a/dlls/shdocvw/navigate.c
+++ b/dlls/shdocvw/navigate.c
@@ -638,10 +638,28 @@ static HRESULT navigate_bsc(DocHost *This, BindStatusCallback *bsc, IMoniker *mo
return hres;
}
+typedef struct {
+ task_header_t header;
+ BindStatusCallback *bsc;
+} task_navigate_bsc_t;
+
+static void navigate_bsc_proc(DocHost *This, task_header_t *t)
+{
+ task_navigate_bsc_t *task = (task_navigate_bsc_t*)t;
+
+ if(!This->hwnd)
+ create_doc_view_hwnd(This);
+
+ navigate_bsc(This, task->bsc, NULL);
+
+ IBindStatusCallback_Release(BINDSC(task->bsc));
+}
+
+
HRESULT navigate_url(DocHost *This, LPCWSTR url, const VARIANT *Flags,
const VARIANT *TargetFrameName, VARIANT *PostData, VARIANT *Headers)
{
- BindStatusCallback *bsc;
+ task_navigate_bsc_t *task;
PBYTE post_data = NULL;
ULONG post_data_len = 0;
LPWSTR headers = NULL;
@@ -671,16 +689,13 @@ HRESULT navigate_url(DocHost *This, LPCWSTR url, const VARIANT *Flags,
TRACE("Headers: %s\n", debugstr_w(headers));
}
- if(!This->hwnd)
- create_doc_view_hwnd(This);
+ task = heap_alloc(sizeof(*task));
+ task->bsc = create_callback(This, url, post_data, post_data_len, headers);
- bsc = create_callback(This, url, post_data, post_data_len, headers);
if(post_data)
SafeArrayUnaccessData(V_ARRAY(PostData));
- navigate_bsc(This, bsc, NULL);
-
- IBindStatusCallback_Release(BINDSC(bsc));
+ push_dochost_task(This, &task->header, navigate_bsc_proc, This->url == NULL);
return S_OK;
}
More information about the wine-cvs
mailing list