From 79598c48034066f4cbd80a7b7e563e6206645b90 Mon Sep 17 00:00:00 2001 From: Huw Davies Date: Wed, 14 Oct 2015 10:33:50 +0100 Subject: [PATCH] ole32: Call the cache's OnRun and OnStop methods. Signed-off-by: Huw Davies Signed-off-by: Alexandre Julliard --- 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 9f6fa2be563..dd5a37a566e 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: