[DSHOW] Misc fixes and traces improvements

Christian Costa titan.costa at wanadoo.fr
Sun Jan 9 03:02:12 CST 2005


Hi,

Changelog:
Fixed error handling in Graphbuilder_RenderFile.
Improved traces.

Christian Costa   titan.costa at wanadoo.fr

-------------- next part --------------
Index: dlls/devenum/mediacatenum.c
===================================================================
RCS file: /home/wine/wine/dlls/devenum/mediacatenum.c,v
retrieving revision 1.12
diff -u -r1.12 mediacatenum.c
--- dlls/devenum/mediacatenum.c	23 Dec 2004 18:33:44 -0000	1.12
+++ dlls/devenum/mediacatenum.c	9 Jan 2005 07:32:07 -0000
@@ -717,10 +717,11 @@
 static ULONG WINAPI DEVENUM_IEnumMoniker_AddRef(LPENUMMONIKER iface)
 {
     EnumMonikerImpl *This = (EnumMonikerImpl *)iface;
+    ULONG ref = InterlockedIncrement(&This->ref);
 
-    TRACE("\n");
+    TRACE("(%p)->() AddRef from %ld\n", iface, ref - 1);
 
-    return InterlockedIncrement(&This->ref);
+    return ref;
 }
 
 /**********************************************************************
@@ -729,17 +730,18 @@
 static ULONG WINAPI DEVENUM_IEnumMoniker_Release(LPENUMMONIKER iface)
 {
     EnumMonikerImpl *This = (EnumMonikerImpl *)iface;
+    ULONG ref = InterlockedDecrement(&This->ref);
 
-    TRACE("\n");
+    TRACE("(%p)->() Release from %ld\n", iface, ref + 1);
 
-    if (!InterlockedDecrement(&This->ref))
+    if (!ref)
     {
         RegCloseKey(This->hkey);
         CoTaskMemFree(This);
         DEVENUM_UnlockModule();
         return 0;
     }
-    return This->ref;
+    return ref;
 }
 
 static HRESULT WINAPI DEVENUM_IEnumMoniker_Next(LPENUMMONIKER iface, ULONG celt, IMoniker ** rgelt, ULONG * pceltFetched)
@@ -750,7 +752,7 @@
     MediaCatMoniker * pMoniker;
     EnumMonikerImpl *This = (EnumMonikerImpl *)iface;
 
-    TRACE("(%ld, %p, %p)\n", celt, rgelt, pceltFetched);
+    TRACE("(%p)->(%ld, %p, %p)\n", iface, celt, rgelt, pceltFetched);
 
     while (fetched < celt)
     {
@@ -789,7 +791,7 @@
 {
     EnumMonikerImpl *This = (EnumMonikerImpl *)iface;
 
-    TRACE("(%ld)\n", celt);
+    TRACE("(%p)->(%ld)\n", iface, celt);
 
     This->index += celt;
 
@@ -800,7 +802,7 @@
 {
     EnumMonikerImpl *This = (EnumMonikerImpl *)iface;
 
-    TRACE("()\n");
+    TRACE("(%p)->()\n", iface);
 
     This->index = 0;
 
@@ -809,7 +811,7 @@
 
 static HRESULT WINAPI DEVENUM_IEnumMoniker_Clone(LPENUMMONIKER iface, IEnumMoniker ** ppenum)
 {
-    FIXME("(%p): stub\n", ppenum);
+    FIXME("(%p)->(%p): stub\n", iface, ppenum);
 
     return E_NOTIMPL;
 }
Index: dlls/quartz/enummoniker.c
===================================================================
RCS file: /home/wine/wine/dlls/quartz/enummoniker.c,v
retrieving revision 1.9
diff -u -r1.9 enummoniker.c
--- dlls/quartz/enummoniker.c	6 Jan 2005 19:36:47 -0000	1.9
+++ dlls/quartz/enummoniker.c	9 Jan 2005 07:32:11 -0000
@@ -106,12 +106,15 @@
 static ULONG WINAPI EnumMonikerImpl_AddRef(LPENUMMONIKER iface)
 {
     EnumMonikerImpl *This = (EnumMonikerImpl *)iface;
-
-    TRACE("\n");
+    ULONG ref;
 
     if (This == NULL) return E_POINTER;
 
-    return InterlockedIncrement(&This->ref);
+    ref = InterlockedIncrement(&This->ref);
+
+    TRACE("(%p)->() AddRef from %ld\n", iface, ref - 1);
+
+    return ref;
 }
 
 /**********************************************************************
@@ -122,7 +125,7 @@
     EnumMonikerImpl *This = (EnumMonikerImpl *)iface;
     ULONG ref = InterlockedDecrement(&This->ref);
 
-    TRACE("\n");
+    TRACE("(%p)->() Release from %ld\n", iface, ref + 1);
 
     if (!ref)
     {
@@ -139,7 +142,7 @@
     ULONG fetched;
     EnumMonikerImpl *This = (EnumMonikerImpl *)iface;
 
-    TRACE("(%ld, %p, %p)\n", celt, rgelt, pceltFetched);
+    TRACE("(%p)->(%ld, %p, %p)\n", iface, celt, rgelt, pceltFetched);
 
     for (fetched = 0; (This->index + fetched < This->nMonikerCount) && (fetched < celt); fetched++)
     {
@@ -149,6 +152,8 @@
 
     This->index += fetched;
 
+    TRACE("-- fetched %ld\n", fetched);
+
     if (pceltFetched)
         *pceltFetched = fetched;
 
@@ -162,7 +167,7 @@
 {
     EnumMonikerImpl *This = (EnumMonikerImpl *)iface;
 
-    TRACE("(%ld)\n", celt);
+    TRACE("(%p)->(%ld)\n", iface, celt);
 
     This->index += celt;
 
@@ -173,7 +178,7 @@
 {
     EnumMonikerImpl *This = (EnumMonikerImpl *)iface;
 
-    TRACE("()\n");
+    TRACE("(%p)->()\n", iface);
 
     This->index = 0;
 
@@ -182,7 +187,7 @@
 
 static HRESULT WINAPI EnumMonikerImpl_Clone(LPENUMMONIKER iface, IEnumMoniker ** ppenum)
 {
-    FIXME("(%p): stub\n", ppenum);
+    FIXME("(%p)->(%p): stub\n", iface, ppenum);
 
     return E_NOTIMPL;
 }
Index: dlls/quartz/filtergraph.c
===================================================================
RCS file: /home/wine/wine/dlls/quartz/filtergraph.c,v
retrieving revision 1.24
diff -u -r1.24 filtergraph.c
--- dlls/quartz/filtergraph.c	6 Jan 2005 19:36:47 -0000	1.24
+++ dlls/quartz/filtergraph.c	9 Jan 2005 07:32:16 -0000
@@ -875,7 +875,10 @@
         tab[0] = mt.majortype;
         tab[1] = mt.subtype;
         hr = IFilterMapper2_EnumMatchingFilters(This->pFilterMapper2, &pEnumMoniker, 0, FALSE, 0, TRUE, 1, tab, NULL, NULL, FALSE, FALSE, 0, NULL, NULL, NULL);
-    } else {
+    }
+
+    if (FAILED(hr))
+    {
         if (preader) {
              IGraphBuilder_RemoveFilter(iface, preader);
              IBaseFilter_Release(preader);
@@ -883,6 +886,7 @@
         return hr;
     }
 
+    hr = E_FAIL;
     while(IEnumMoniker_Next(pEnumMoniker, 1, &pMoniker, &nb) == S_OK)
     {
         VARIANT var;
Index: dlls/quartz/filtermapper.c
===================================================================
RCS file: /home/wine/wine/dlls/quartz/filtermapper.c,v
retrieving revision 1.19
diff -u -r1.19 filtermapper.c
--- dlls/quartz/filtermapper.c	6 Jan 2005 19:36:47 -0000	1.19
+++ dlls/quartz/filtermapper.c	9 Jan 2005 07:32:19 -0000
@@ -949,6 +949,15 @@
                     ZeroMemory(&rf2, sizeof(rf2));
 
                     hrSub = IMoniker_BindToStorage(pMoniker, NULL, NULL, &IID_IPropertyBag, (LPVOID*)&pPropBag);
+
+                    if (TRACE_ON(quartz))
+                    {
+                        VARIANT temp;
+                        V_VT(&temp) = VT_EMPTY;
+                        IPropertyBag_Read(pPropBag, wszFriendlyName, &temp, NULL);
+                        TRACE("Considering filter %s\n", debugstr_w(V_UNION(&temp, bstrVal)));
+                        VariantClear(&temp);
+                    }
 
                     if (SUCCEEDED(hrSub))
                         hrSub = FM2_ReadFilterData(pPropBag, &rf2);


More information about the wine-patches mailing list