[DSHOW-13 try2]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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,

[Index of Archives]     [Gimp for Windows]     [Red Hat]     [Samba]     [Yosemite Camping]     [Graphics Cards]     [Wine Home]

  Powered by Linux