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