[PATCH 4/6] ole32: Call the cache's OnRun and OnStop methods.

Huw Davies huw at codeweavers.com
Wed Oct 14 04:33:50 CDT 2015


Signed-off-by: Huw Davies <huw at codeweavers.com>
---
 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:
-- 
1.8.0




More information about the wine-patches mailing list