Module: wine Branch: master Commit: 82a199bcee410a32f221595bb07113bfd58ca900 URL: http://source.winehq.org/git/wine.git/?a=commit;h=82a199bcee410a32f221595bb0...
Author: Jacek Caban jacek@codeweavers.com Date: Mon Dec 24 12:48:43 2007 +0100
mshtml: Use IBindCtx passed to Load in BindToStorage call.
---
dlls/mshtml/mshtml_private.h | 2 +- dlls/mshtml/navigate.c | 18 +++++++++++------- dlls/mshtml/persist.c | 2 +- dlls/mshtml/task.c | 2 +- 4 files changed, 14 insertions(+), 10 deletions(-)
diff --git a/dlls/mshtml/mshtml_private.h b/dlls/mshtml/mshtml_private.h index 3e0c8eb..2180184 100644 --- a/dlls/mshtml/mshtml_private.h +++ b/dlls/mshtml/mshtml_private.h @@ -425,7 +425,7 @@ void init_nsevents(NSContainer*); nsresult get_nsinterface(nsISupports*,REFIID,void**);
BSCallback *create_bscallback(IMoniker*); -HRESULT start_binding(HTMLDocument*,BSCallback*); +HRESULT start_binding(HTMLDocument*,BSCallback*,IBindCtx*); HRESULT load_stream(BSCallback*,IStream*); void set_document_bscallback(HTMLDocument*,BSCallback*); void set_current_mon(HTMLDocument*,IMoniker*); diff --git a/dlls/mshtml/navigate.c b/dlls/mshtml/navigate.c index 29a3798..b1b5609 100644 --- a/dlls/mshtml/navigate.c +++ b/dlls/mshtml/navigate.c @@ -829,20 +829,24 @@ void hlink_frame_navigate(HTMLDocument *doc, IHlinkFrame *hlink_frame, IBindStatusCallback_Release(STATUSCLB(callback)); }
-HRESULT start_binding(HTMLDocument *doc, BSCallback *bscallback) +HRESULT start_binding(HTMLDocument *doc, BSCallback *bscallback, IBindCtx *bctx) { IStream *str = NULL; - IBindCtx *bctx; HRESULT hres;
bscallback->doc = doc; call_docview_84(bscallback->doc);
- hres = CreateAsyncBindCtx(0, STATUSCLB(bscallback), NULL, &bctx); - if(FAILED(hres)) { - WARN("CreateAsyncBindCtx failed: %08x\n", hres); - on_stop_nsrequest(bscallback); - return hres; + if(bctx) { + RegisterBindStatusCallback(bctx, STATUSCLB(bscallback), NULL, 0); + IBindCtx_AddRef(bctx); + }else { + hres = CreateAsyncBindCtx(0, STATUSCLB(bscallback), NULL, &bctx); + if(FAILED(hres)) { + WARN("CreateAsyncBindCtx failed: %08x\n", hres); + on_stop_nsrequest(bscallback); + return hres; + } }
hres = IMoniker_BindToStorage(bscallback->mon, bctx, NULL, &IID_IStream, (void**)&str); diff --git a/dlls/mshtml/persist.c b/dlls/mshtml/persist.c index c48fc64..2f3d5cc 100644 --- a/dlls/mshtml/persist.c +++ b/dlls/mshtml/persist.c @@ -429,7 +429,7 @@ static HRESULT WINAPI PersistMoniker_Load(IPersistMoniker *iface, BOOL fFullyAva return hres;
if(!bind_complete) - return start_binding(This, This->bscallback); + return start_binding(This, This->bscallback, pibc);
return S_OK; } diff --git a/dlls/mshtml/task.c b/dlls/mshtml/task.c index e612d81..b154022 100644 --- a/dlls/mshtml/task.c +++ b/dlls/mshtml/task.c @@ -214,7 +214,7 @@ static void set_progress(HTMLDocument *doc) static void task_start_binding(HTMLDocument *doc, BSCallback *bscallback) { if(doc) - start_binding(doc, bscallback); + start_binding(doc, bscallback, NULL); IBindStatusCallback_Release(STATUSCLB(bscallback)); }