Vitaliy Margolen : dxdiagn: DirectShowFilters should go under numbered sub-containers.
Alexandre Julliard
julliard at winehq.org
Mon May 18 08:13:13 CDT 2009
Module: wine
Branch: master
Commit: 806ea86be2f2f1bbea09d39b242816624bef2b26
URL: http://source.winehq.org/git/wine.git/?a=commit;h=806ea86be2f2f1bbea09d39b242816624bef2b26
Author: Vitaliy Margolen <wine-patches at kievinfo.com>
Date: Sun May 17 16:02:22 2009 -0600
dxdiagn: DirectShowFilters should go under numbered sub-containers.
---
dlls/dxdiagn/provider.c | 31 ++++++++++++++++++++++---------
1 files changed, 22 insertions(+), 9 deletions(-)
diff --git a/dlls/dxdiagn/provider.c b/dlls/dxdiagn/provider.c
index a6d1066..d3f0a26 100644
--- a/dlls/dxdiagn/provider.c
+++ b/dlls/dxdiagn/provider.c
@@ -613,9 +613,11 @@ static HRESULT DXDiag_InitDXDiagDirectShowFiltersContainer(IDxDiagContainer* pSu
static const WCHAR wszClsidName[] = {'C','L','S','I','D',0};
static const WCHAR wszFriendlyName[] = {'F','r','i','e','n','d','l','y','N','a','m','e',0};
static const WCHAR wszFilterDataName[] = {'F','i','l','t','e','r','D','a','t','a',0};
- /*static const WCHAR wszMeritName[] = {'M','e','r','i','t',0};*/
static const WCHAR szVersionFormat[] = {'v','%','d',0};
+ static const WCHAR szIdFormat[] = {'%','d',0};
+ int i = 0;
+
ICreateDevEnum* pCreateDevEnum = NULL;
IEnumMoniker* pEmCat = NULL;
@@ -676,28 +678,37 @@ static HRESULT DXDiag_InitDXDiagDirectShowFiltersContainer(IDxDiagContainer* pSu
DWORD dwNOutputs = 0;
DWORD dwNInputs = 0;
WCHAR bufferW[10];
+ IDxDiagContainer *pDShowSubCont = NULL;
- add_prop_str(pSubCont, szCatName, wszCatName);
- add_prop_str(pSubCont, ClsidCatW, wszCatClsid);
+ snprintfW(bufferW, sizeof(bufferW)/sizeof(bufferW[0]), szIdFormat, i);
+ if (FAILED(DXDiag_CreateDXDiagContainer(&IID_IDxDiagContainer, (void**) &pDShowSubCont)) ||
+ FAILED(IDxDiagContainerImpl_AddChildContainer(pSubCont, bufferW, pDShowSubCont)))
+ {
+ IPropertyBag_Release(pPropFilterBag);
+ if (pDShowSubCont) IUnknown_Release(pDShowSubCont);
+ continue;
+ }
hr = IPropertyBag_Read(pPropFilterBag, wszFriendlyName, &v, 0);
- hr = IDxDiagContainerImpl_AddProp(pSubCont, szName, &v);
+ hr = IDxDiagContainerImpl_AddProp(pDShowSubCont, szName, &v);
TRACE("\tName:%s\n", debugstr_w(V_BSTR(&v)));
VariantClear(&v);
hr = IPropertyBag_Read(pPropFilterBag, wszClsidName, &v, 0);
TRACE("\tClsid:%s\n", debugstr_w(V_BSTR(&v)));
- hr = IDxDiagContainerImpl_AddProp(pSubCont, ClsidFilterW, &v);
+ hr = IDxDiagContainerImpl_AddProp(pDShowSubCont, ClsidFilterW, &v);
VariantClear(&v);
+ add_prop_str(pDShowSubCont, szCatName, wszCatName);
+ add_prop_str(pDShowSubCont, ClsidCatW, wszCatClsid);
+
hr = IPropertyBag_Read(pPropFilterBag, wszFilterDataName, &v, NULL);
hr = SafeArrayAccessData(V_UNION(&v, parray), (LPVOID*) &pData);
prrf = (struct REG_RF*) pData;
pCurrent = pData;
snprintfW(bufferW, sizeof(bufferW)/sizeof(bufferW[0]), szVersionFormat, prrf->dwVersion);
- add_prop_str(pSubCont, szVersionW, bufferW);
- add_prop_ui4(pSubCont, dwMerit, prrf->dwMerit);
+ add_prop_str(pDShowSubCont, szVersionW, bufferW);
pCurrent += sizeof(struct REG_RF);
for (it = 0; it < prrf->dwPins; ++it) {
@@ -721,11 +732,13 @@ static HRESULT DXDiag_InitDXDiagDirectShowFiltersContainer(IDxDiagContainer* pSu
}
}
- add_prop_ui4(pSubCont, dwInputs, dwNInputs);
- add_prop_ui4(pSubCont, dwOutputs, dwNOutputs);
+ add_prop_ui4(pDShowSubCont, dwInputs, dwNInputs);
+ add_prop_ui4(pDShowSubCont, dwOutputs, dwNOutputs);
+ add_prop_ui4(pDShowSubCont, dwMerit, prrf->dwMerit);
SafeArrayUnaccessData(V_UNION(&v, parray));
VariantClear(&v);
+ i++;
}
IPropertyBag_Release(pPropFilterBag); pPropFilterBag = NULL;
}
More information about the wine-cvs
mailing list