Jacek Caban : mshtml: Store BSCallback in NSContainer and use it instead of load_call.

Alexandre Julliard julliard at wine.codeweavers.com
Sat Jun 3 05:24:41 CDT 2006


Module: wine
Branch: refs/heads/master
Commit: e0157ba201703cec1a098dd40c02462f32a2185e
URL:    http://source.winehq.org/git/?p=wine.git;a=commit;h=e0157ba201703cec1a098dd40c02462f32a2185e

Author: Jacek Caban <jacek at codeweavers.com>
Date:   Sat Jun  3 00:39:39 2006 +0200

mshtml: Store BSCallback in NSContainer and use it instead of load_call.

---

 dlls/mshtml/mshtml_private.h |    2 +-
 dlls/mshtml/nsembed.c        |    2 +-
 dlls/mshtml/nsio.c           |    2 +-
 dlls/mshtml/persist.c        |   13 ++++++++++---
 4 files changed, 13 insertions(+), 6 deletions(-)

diff --git a/dlls/mshtml/mshtml_private.h b/dlls/mshtml/mshtml_private.h
index 83bae7f..7223a7e 100644
--- a/dlls/mshtml/mshtml_private.h
+++ b/dlls/mshtml/mshtml_private.h
@@ -112,7 +112,7 @@ struct NSContainer {
 
     HWND hwnd;
 
-    BOOL load_call; /* hack */
+    BSCallback *bscallback; /* hack */
 };
 
 struct BSCallback {
diff --git a/dlls/mshtml/nsembed.c b/dlls/mshtml/nsembed.c
index 907b0f5..d12326b 100644
--- a/dlls/mshtml/nsembed.c
+++ b/dlls/mshtml/nsembed.c
@@ -1153,7 +1153,7 @@ NSContainer *NSContainer_Create(HTMLDocu
 
     ret->doc = doc;
     ret->ref = 1;
-    ret->load_call = FALSE;
+    ret->bscallback = NULL;
 
     if(parent)
         nsIWebBrowserChrome_AddRef(NSWBCHROME(parent));
diff --git a/dlls/mshtml/nsio.c b/dlls/mshtml/nsio.c
index f0344e8..561a750 100644
--- a/dlls/mshtml/nsio.c
+++ b/dlls/mshtml/nsio.c
@@ -589,7 +589,7 @@ static nsresult NSAPI nsChannel_AsyncOpe
             return NS_ERROR_UNEXPECTED;
         }
 
-        if(container->load_call) {
+        if(container->bscallback) {
             nsIWebBrowserChrome_Release(NSWBCHROME(container));
         }else {
             BOOL cont = before_async_open(This, container);
diff --git a/dlls/mshtml/persist.c b/dlls/mshtml/persist.c
index a663fe9..55462ad 100644
--- a/dlls/mshtml/persist.c
+++ b/dlls/mshtml/persist.c
@@ -154,6 +154,7 @@ static HRESULT WINAPI PersistMoniker_Loa
         IMoniker *pimkName, LPBC pibc, DWORD grfMode)
 {
     HTMLDocument *This = PERSISTMON_THIS(iface);
+    BSCallback *bscallback;
     LPOLESTR url;
     HRESULT hres;
     nsresult nsres;
@@ -214,24 +215,27 @@ static HRESULT WINAPI PersistMoniker_Loa
         }
     }
 
+    bscallback = create_bscallback(This, url);
+
     if(This->nscontainer) {
         nsIInputStream *post_data_stream = get_post_data_stream(pibc);
 
-        This->nscontainer->load_call = TRUE;
+        This->nscontainer->bscallback = bscallback;
         nsres = nsIWebNavigation_LoadURI(This->nscontainer->navigation, url,
                 LOAD_FLAGS_NONE, NULL, post_data_stream, NULL);
-        This->nscontainer->load_call = FALSE;
+        This->nscontainer->bscallback = NULL;
 
         if(post_data_stream)
             nsIInputStream_Release(post_data_stream);
 
         if(NS_SUCCEEDED(nsres)) {
+            IBindStatusCallback_Release(STATUSCLB(bscallback));
             CoTaskMemFree(url);
             return S_OK;
         }else {
             WARN("LoadURI failed: %08lx\n", nsres);
         }
-    }    
+    }
 
     /* FIXME: Use grfMode */
 
@@ -240,6 +244,9 @@ static HRESULT WINAPI PersistMoniker_Loa
     if(pibc)
         FIXME("not supported pibc\n");
 
+    IBindStatusCallback_Release(STATUSCLB(bscallback));
+    CoTaskMemFree(url);
+
     return S_OK;
 }
 




More information about the wine-cvs mailing list