Huw Davies : ole32: Call the cache's OnRun and OnStop methods.

Alexandre Julliard julliard at wine.codeweavers.com
Wed Oct 14 11:12:50 CDT 2015


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

Author: Huw Davies <huw at codeweavers.com>
Date:   Wed Oct 14 10:33:50 2015 +0100

ole32: Call the cache's OnRun and OnStop methods.

Signed-off-by: Huw Davies <huw at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 dlls/ole32/defaulthandler.c | 20 +++++++++++++++++---
 1 file changed, 17 insertions(+), 3 deletions(-)

diff --git a/dlls/ole32/defaulthandler.c b/dlls/ole32/defaulthandler.c
index 9f6fa2b..dd5a37a 100644
--- a/dlls/ole32/defaulthandler.c
+++ b/dlls/ole32/defaulthandler.c
@@ -459,12 +459,20 @@ static void release_delegates(DefaultHandler *This)
 /* undoes the work done by DefaultHandler_Run */
 static void DefaultHandler_Stop(DefaultHandler *This)
 {
+  IOleCacheControl *cache_ctrl;
+  HRESULT hr;
+
   if (!object_is_running(This))
     return;
 
-  IOleObject_Unadvise(This->pOleDelegate, This->dwAdvConn);
+  hr = IUnknown_QueryInterface( This->dataCache, &IID_IOleCacheControl, (void **)&cache_ctrl );
+  if (SUCCEEDED(hr))
+  {
+    hr = IOleCacheControl_OnStop( cache_ctrl );
+    IOleCacheControl_Release( cache_ctrl );
+  }
 
-  /* FIXME: call IOleCache_OnStop */
+  IOleObject_Unadvise(This->pOleDelegate, This->dwAdvConn);
 
   if (This->dataAdviseHolder)
     DataAdviseHolder_OnDisconnect(This->dataAdviseHolder);
@@ -1331,6 +1339,7 @@ static HRESULT WINAPI DefaultHandler_Run(
 {
   DefaultHandler *This = impl_from_IRunnableObject(iface);
   HRESULT hr;
+  IOleCacheControl *cache_ctrl;
 
   FIXME("(%p): semi-stub\n", pbc);
 
@@ -1374,7 +1383,6 @@ static HRESULT WINAPI DefaultHandler_Run(
   /* FIXME: do more stuff here:
    * - IOleObject_GetMiscStatus
    * - IOleObject_GetMoniker
-   * - IOleCache_OnRun
    */
 
   hr = IOleObject_QueryInterface(This->pOleDelegate, &IID_IDataObject,
@@ -1389,6 +1397,12 @@ static HRESULT WINAPI DefaultHandler_Run(
     if (FAILED(hr)) goto fail;
   }
 
+  hr = IUnknown_QueryInterface( This->dataCache, &IID_IOleCacheControl, (void **)&cache_ctrl );
+  if (FAILED(hr)) goto fail;
+  hr = IOleCacheControl_OnRun( cache_ctrl, This->pDataDelegate );
+  IOleCacheControl_Release( cache_ctrl );
+  if (FAILED(hr)) goto fail;
+
   return hr;
 
 fail:




More information about the wine-cvs mailing list