oleaut32: Simplify connection point creation.

This commit is contained in:
Nikolay Sivov 2015-05-07 10:39:11 +03:00 committed by Alexandre Julliard
parent 39a5a1c696
commit 72eaeb14a6
1 changed files with 16 additions and 30 deletions

View File

@ -66,9 +66,6 @@ typedef struct ConnectionPointImpl {
DWORD nSinks;
} ConnectionPointImpl;
static const IConnectionPointVtbl ConnectionPointImpl_VTable;
/************************************************************************
* Implementation of IEnumConnections
*/
@ -104,26 +101,6 @@ static inline EnumConnectionsImpl *impl_from_IEnumConnections(IEnumConnections *
return CONTAINING_RECORD(iface, EnumConnectionsImpl, IEnumConnections_iface);
}
/************************************************************************
* ConnectionPointImpl_Construct
*/
static ConnectionPointImpl *ConnectionPointImpl_Construct(IUnknown *pUnk,
REFIID riid)
{
ConnectionPointImpl *Obj;
Obj = HeapAlloc(GetProcessHeap(), 0, sizeof(*Obj));
Obj->IConnectionPoint_iface.lpVtbl = &ConnectionPointImpl_VTable;
Obj->Obj = pUnk;
Obj->ref = 1;
Obj->iid = *riid;
Obj->maxSinks = MAXSINKS;
Obj->sinks = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY,
sizeof(IUnknown*) * MAXSINKS);
Obj->nSinks = 0;
return Obj;
}
/************************************************************************
* ConnectionPointImpl_Destroy
*/
@ -615,13 +592,22 @@ HRESULT CreateConnectionPoint(IUnknown *pUnk, REFIID riid,
IConnectionPoint **pCP)
{
ConnectionPointImpl *Obj;
HRESULT hr;
Obj = ConnectionPointImpl_Construct(pUnk, riid);
if(!Obj) return E_OUTOFMEMORY;
TRACE("(%p %s %p)\n", pUnk, debugstr_guid(riid), pCP);
hr = IConnectionPoint_QueryInterface(&Obj->IConnectionPoint_iface,
&IID_IConnectionPoint, (void**)pCP);
IConnectionPoint_Release(&Obj->IConnectionPoint_iface);
return hr;
*pCP = NULL;
Obj = HeapAlloc(GetProcessHeap(), 0, sizeof(*Obj));
if (!Obj)
return E_OUTOFMEMORY;
Obj->IConnectionPoint_iface.lpVtbl = &ConnectionPointImpl_VTable;
Obj->Obj = pUnk;
Obj->ref = 1;
Obj->iid = *riid;
Obj->maxSinks = MAXSINKS;
Obj->sinks = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(IUnknown*) * MAXSINKS);
Obj->nSinks = 0;
*pCP = &Obj->IConnectionPoint_iface;
return S_OK;
}