Jacek Caban : mshtml: Use IBindCtx passed to Load in BindToStorage call.

Alexandre Julliard julliard at winehq.org
Mon Dec 24 14:21:38 CST 2007


Module: wine
Branch: master
Commit: 82a199bcee410a32f221595bb07113bfd58ca900
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=82a199bcee410a32f221595bb07113bfd58ca900

Author: Jacek Caban <jacek at 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));
 }
 




More information about the wine-cvs mailing list