Now with patch: Hi, Keeping this patch small because of superstition and all that :) Note: the second item in the change log should have been included in DSHOW-12, but I forgot about it. It won't harm to merge these patches at different times, but people with no-windows installs won't be able to register DevEnum without this fix. Rob Changelog: - Fix IGraphBuilder::ConnectDirect - Register IFilterMapper and IFilterMapper2 in DllRegisterServer
Index: wine/dlls/quartz/regsvr.c =================================================================== RCS file: /home/wine/wine/dlls/quartz/regsvr.c,v retrieving revision 1.8 diff -u -r1.8 regsvr.c --- wine/dlls/quartz/regsvr.c 5 Sep 2003 23:08:32 -0000 1.8 +++ wine/dlls/quartz/regsvr.c 26 Dec 2003 23:26:08 -0000 @@ -509,6 +509,18 @@ "quartz.dll", "Both" }, + { &CLSID_FilterMapper, + "Filter Mapper", + NULL, + "quartz.dll", + "Both" + }, + { &CLSID_FilterMapper2, + "Filter Mapper 2", + NULL, + "quartz.dll", + "Both" + }, { NULL } /* list terminator */ }; Index: wine/dlls/quartz/filtergraph.c =================================================================== RCS file: /home/wine/wine/dlls/quartz/filtergraph.c,v retrieving revision 1.6 diff -u -r1.6 filtergraph.c --- wine/dlls/quartz/filtergraph.c 5 Sep 2003 23:08:32 -0000 1.6 +++ wine/dlls/quartz/filtergraph.c 26 Dec 2003 23:26:11 -0000 @@ -261,15 +261,31 @@ return E_FAIL; /* FIXME: check this error code */ } +/* NOTE: despite the implication, it doesn't matter which + * way round you put in the input and output pins */ static HRESULT WINAPI Graphbuilder_ConnectDirect(IGraphBuilder *iface, IPin *ppinIn, IPin *ppinOut, const AM_MEDIA_TYPE *pmt) { + PIN_DIRECTION dir; + HRESULT hr; + ICOM_THIS_MULTI(IFilterGraphImpl, IGraphBuilder_vtbl, iface); TRACE("(%p/%p)->(%p, %p, %p)\n", This, iface, ppinIn, ppinOut, pmt); - return IPin_Connect(ppinOut, ppinIn, pmt); + /* FIXME: check pins are in graph */ + + hr = IPin_QueryDirection(ppinIn, &dir); + if (SUCCEEDED(hr)) + { + if (dir == PINDIR_INPUT) + hr = IPin_Connect(ppinOut, ppinIn, pmt); + else + hr = IPin_Connect(ppinIn, ppinOut, pmt); + } + + return hr; } static HRESULT WINAPI Graphbuilder_Reconnect(IGraphBuilder *iface,