msxml3: Implemented IConnectionPoint_Advise for document object
Nikolay Sivov
nsivov at codeweavers.com
Mon Sep 24 03:11:52 CDT 2012
http://bugs.winehq.org/show_bug.cgi?id=31681
-------------- next part --------------
>From 6fd00231550f0db55a933c8c6db585f2e4552324 Mon Sep 17 00:00:00 2001
From: Nikolay Sivov <nsivov at codeweavers.com>
Date: Sun, 23 Sep 2012 15:55:13 +0400
Subject: [PATCH 1/2] Implemented IConnectionPoint_Advise for document object
---
dlls/msxml3/domdoc.c | 39 +++++++++++++++++++++++++++++++++++----
1 files changed, 35 insertions(+), 4 deletions(-)
diff --git a/dlls/msxml3/domdoc.c b/dlls/msxml3/domdoc.c
index 54c601e..d1e0ebb 100644
--- a/dlls/msxml3/domdoc.c
+++ b/dlls/msxml3/domdoc.c
@@ -3248,12 +3248,43 @@ static HRESULT WINAPI ConnectionPoint_GetConnectionPointContainer(IConnectionPoi
return S_OK;
}
-static HRESULT WINAPI ConnectionPoint_Advise(IConnectionPoint *iface, IUnknown *pUnkSink,
- DWORD *pdwCookie)
+static HRESULT WINAPI ConnectionPoint_Advise(IConnectionPoint *iface, IUnknown *unk_sink,
+ DWORD *cookie)
{
ConnectionPoint *This = impl_from_IConnectionPoint(iface);
- FIXME("(%p)->(%p %p): stub\n", This, pUnkSink, pdwCookie);
- return E_NOTIMPL;
+ IUnknown *sink;
+ HRESULT hr;
+ int i;
+
+ TRACE("(%p)->(%p %p)\n", This, unk_sink, cookie);
+
+ hr = IUnknown_QueryInterface(unk_sink, This->iid, (void**)&sink);
+ if(FAILED(hr) && !IsEqualGUID(&IID_IPropertyNotifySink, This->iid))
+ hr = IUnknown_QueryInterface(unk_sink, &IID_IDispatch, (void**)&sink);
+ if(FAILED(hr))
+ return CONNECT_E_CANNOTCONNECT;
+
+ if(This->sinks)
+ {
+ for (i = 0; i < This->sinks_size; i++)
+ if (!This->sinks[i].unk)
+ break;
+
+ if (i == This->sinks_size)
+ This->sinks = heap_realloc(This->sinks,(++This->sinks_size)*sizeof(*This->sinks));
+ }
+ else
+ {
+ This->sinks = heap_alloc(sizeof(*This->sinks));
+ This->sinks_size = 1;
+ i = 0;
+ }
+
+ This->sinks[i].unk = sink;
+ if (cookie)
+ *cookie = i+1;
+
+ return S_OK;
}
static HRESULT WINAPI ConnectionPoint_Unadvise(IConnectionPoint *iface, DWORD cookie)
--
1.5.6.5
More information about the wine-patches
mailing list