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

Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
Huw Davies 2015-10-14 10:33:50 +01:00 committed by Alexandre Julliard
parent e4ec89f2b0
commit 79598c4803
1 changed files with 17 additions and 3 deletions

View File

@ -459,12 +459,20 @@ static void release_delegates(DefaultHandler *This)
/* undoes the work done by DefaultHandler_Run */ /* undoes the work done by DefaultHandler_Run */
static void DefaultHandler_Stop(DefaultHandler *This) static void DefaultHandler_Stop(DefaultHandler *This)
{ {
IOleCacheControl *cache_ctrl;
HRESULT hr;
if (!object_is_running(This)) if (!object_is_running(This))
return; 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) if (This->dataAdviseHolder)
DataAdviseHolder_OnDisconnect(This->dataAdviseHolder); DataAdviseHolder_OnDisconnect(This->dataAdviseHolder);
@ -1331,6 +1339,7 @@ static HRESULT WINAPI DefaultHandler_Run(
{ {
DefaultHandler *This = impl_from_IRunnableObject(iface); DefaultHandler *This = impl_from_IRunnableObject(iface);
HRESULT hr; HRESULT hr;
IOleCacheControl *cache_ctrl;
FIXME("(%p): semi-stub\n", pbc); FIXME("(%p): semi-stub\n", pbc);
@ -1374,7 +1383,6 @@ static HRESULT WINAPI DefaultHandler_Run(
/* FIXME: do more stuff here: /* FIXME: do more stuff here:
* - IOleObject_GetMiscStatus * - IOleObject_GetMiscStatus
* - IOleObject_GetMoniker * - IOleObject_GetMoniker
* - IOleCache_OnRun
*/ */
hr = IOleObject_QueryInterface(This->pOleDelegate, &IID_IDataObject, hr = IOleObject_QueryInterface(This->pOleDelegate, &IID_IDataObject,
@ -1389,6 +1397,12 @@ static HRESULT WINAPI DefaultHandler_Run(
if (FAILED(hr)) goto fail; 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; return hr;
fail: fail: