| /* |
| * Implementation of CLSID_FilterMapper2. |
| * |
| * FIXME - stub. |
| * |
| * hidenori@a2.ctktv.ne.jp |
| */ |
| |
| #include "config.h" |
| |
| #include "windef.h" |
| #include "winbase.h" |
| #include "wingdi.h" |
| #include "winerror.h" |
| #include "winuser.h" |
| #include "wine/obj_base.h" |
| #include "wine/obj_oleaut.h" |
| #include "strmif.h" |
| #include "control.h" |
| #include "uuids.h" |
| |
| #include "debugtools.h" |
| DEFAULT_DEBUG_CHANNEL(quartz); |
| |
| #include "quartz_private.h" |
| #include "fmap2.h" |
| |
| /* can I use offsetof safely? - FIXME? */ |
| static QUARTZ_IFEntry IFEntries[] = |
| { |
| { &IID_IFilterMapper2, offsetof(CFilterMapper2,fmap3)-offsetof(CFilterMapper2,unk) }, |
| { &IID_IFilterMapper3, offsetof(CFilterMapper2,fmap3)-offsetof(CFilterMapper2,unk) }, |
| }; |
| |
| |
| static void QUARTZ_DestroyFilterMapper2(IUnknown* punk) |
| { |
| CFilterMapper2_THIS(punk,unk); |
| |
| CFilterMapper2_UninitIFilterMapper3( This ); |
| } |
| |
| HRESULT QUARTZ_CreateFilterMapper2(IUnknown* punkOuter,void** ppobj) |
| { |
| CFilterMapper2* pfm; |
| HRESULT hr; |
| |
| TRACE("(%p,%p)\n",punkOuter,ppobj); |
| |
| pfm = (CFilterMapper2*)QUARTZ_AllocObj( sizeof(CFilterMapper2) ); |
| if ( pfm == NULL ) |
| return E_OUTOFMEMORY; |
| |
| QUARTZ_IUnkInit( &pfm->unk, punkOuter ); |
| hr = CFilterMapper2_InitIFilterMapper3( pfm ); |
| if ( FAILED(hr) ) |
| { |
| QUARTZ_FreeObj( pfm ); |
| return hr; |
| } |
| |
| pfm->unk.pEntries = IFEntries; |
| pfm->unk.dwEntries = sizeof(IFEntries)/sizeof(IFEntries[0]); |
| pfm->unk.pOnFinalRelease = QUARTZ_DestroyFilterMapper2; |
| |
| *ppobj = (void*)(&pfm->unk); |
| |
| return S_OK; |
| } |