Module: wine Branch: master Commit: 79598c48034066f4cbd80a7b7e563e6206645b90 URL: http://source.winehq.org/git/wine.git/?a=commit;h=79598c48034066f4cbd80a7b7e...
Author: Huw Davies huw@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@codeweavers.com Signed-off-by: Alexandre Julliard julliard@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: