Vitaliy Margolen : dxdiagn: Use helper functions for adding properties to container.

Alexandre Julliard julliard at winehq.org
Mon Jun 23 07:35:42 CDT 2008


Module: wine
Branch: master
Commit: e938ff9aee7aeb02b8eecec333d0217289c90024
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=e938ff9aee7aeb02b8eecec333d0217289c90024

Author: Vitaliy Margolen <wine-patches at kievinfo.com>
Date:   Sat Jun 21 11:54:00 2008 -0600

dxdiagn: Use helper functions for adding properties to container.

---

 dlls/dxdiagn/provider.c |  120 ++++++++++++++---------------------------------
 1 files changed, 36 insertions(+), 84 deletions(-)

diff --git a/dlls/dxdiagn/provider.c b/dlls/dxdiagn/provider.c
index 630c649..44b30d8 100644
--- a/dlls/dxdiagn/provider.c
+++ b/dlls/dxdiagn/provider.c
@@ -156,15 +156,20 @@ static inline HRESULT add_prop_str( IDxDiagContainer* cont, LPCWSTR prop, LPCWST
 
 static inline HRESULT add_prop_ui4( IDxDiagContainer* cont, LPCWSTR prop, DWORD data )
 {
-    HRESULT hr;
     VARIANT var;
 
     V_VT( &var ) = VT_UI4;
     V_UI4( &var ) = data;
-    hr = IDxDiagContainerImpl_AddProp( cont, prop, &var );
-    VariantClear( &var );
+    return IDxDiagContainerImpl_AddProp( cont, prop, &var );
+}
 
-    return hr;
+static inline HRESULT add_prop_bool( IDxDiagContainer* cont, LPCWSTR prop, BOOL data )
+{
+    VARIANT var;
+
+    V_VT( &var ) = VT_BOOL;
+    V_BOOL( &var ) = data;
+    return IDxDiagContainerImpl_AddProp( cont, prop, &var );
 }
 
 /**
@@ -189,7 +194,6 @@ static HRESULT DXDiag_AddFileDescContainer(IDxDiagContainer* pSubCont, const WCH
   static const WCHAR szFinal_Retail_v[] = {'F','i','n','a','l',' ','R','e','t','a','i','l',0};
   static const WCHAR szEnglish_v[] = {'E','n','g','l','i','s','h',0};
   static const WCHAR szVersionFormat[] = {'%','u','.','%','0','2','u','.','%','0','4','u','.','%','0','4','u',0};
-  VARIANT v;
 
   WCHAR szFile[512];
   WCHAR szVersion_v[1024];
@@ -210,15 +214,9 @@ static HRESULT DXDiag_AddFileDescContainer(IDxDiagContainer* pSubCont, const WCH
   boolret = GetFileVersionInfoW(szFile, 0, retval, pVersionInfo);
   boolret = VerQueryValueW(pVersionInfo, szSlashSep, (LPVOID) &pFileInfo, &uiLength);
 
-  V_VT(&v) = VT_BSTR; V_BSTR(&v) = SysAllocString(szFile);
-  hr = IDxDiagContainerImpl_AddProp(pSubCont, szPath, &v);
-  VariantClear(&v);
-  V_VT(&v) = VT_BSTR; V_BSTR(&v) = SysAllocString(szFileName);
-  hr = IDxDiagContainerImpl_AddProp(pSubCont, szName, &v);
-  VariantClear(&v);
-  V_VT(&v) = VT_BOOL; V_BOOL(&v) = boolret;
-  hr = IDxDiagContainerImpl_AddProp(pSubCont, bExists, &v);  
-  VariantClear(&v);
+  add_prop_str(pSubCont, szPath, szFile);
+  add_prop_str(pSubCont, szName, szFileName);
+  add_prop_bool(pSubCont, bExists, boolret);
 
   if (boolret) {
     snprintfW(szVersion_v, sizeof(szVersion_v)/sizeof(szVersion_v[0]),
@@ -230,27 +228,13 @@ static HRESULT DXDiag_AddFileDescContainer(IDxDiagContainer* pSubCont, const WCH
 
     TRACE("Found version as (%s)\n", debugstr_w(szVersion_v));
 
-    V_VT(&v) = VT_BSTR; V_BSTR(&v) = SysAllocString(szVersion_v);
-    hr = IDxDiagContainerImpl_AddProp(pSubCont, szVersion, &v);
-    VariantClear(&v);
-    V_VT(&v) = VT_BSTR; V_BSTR(&v) = SysAllocString(szFinal_Retail_v);
-    hr = IDxDiagContainerImpl_AddProp(pSubCont, szAttributes, &v);
-    VariantClear(&v);
-    V_VT(&v) = VT_BSTR; V_BSTR(&v) = SysAllocString(szEnglish_v);
-    hr = IDxDiagContainerImpl_AddProp(pSubCont, szLanguageEnglish, &v);
-    VariantClear(&v);
-    V_VT(&v) = VT_UI4; V_UI4(&v) = pFileInfo->dwFileDateMS;
-    hr = IDxDiagContainerImpl_AddProp(pSubCont, dwFileTimeHigh, &v);
-    VariantClear(&v);
-    V_VT(&v) = VT_UI4; V_UI4(&v) = pFileInfo->dwFileDateLS;
-    hr = IDxDiagContainerImpl_AddProp(pSubCont, dwFileTimeLow, &v);
-    VariantClear(&v);
-    V_VT(&v) = VT_BOOL; V_BOOL(&v) = (0 != ((pFileInfo->dwFileFlags & pFileInfo->dwFileFlagsMask) & VS_FF_PRERELEASE));
-    hr = IDxDiagContainerImpl_AddProp(pSubCont, bBeta, &v);  
-    VariantClear(&v);
-    V_VT(&v) = VT_BOOL; V_BOOL(&v) = (0 != ((pFileInfo->dwFileFlags & pFileInfo->dwFileFlagsMask) & VS_FF_DEBUG));
-    hr = IDxDiagContainerImpl_AddProp(pSubCont, bDebug, &v);  
-    VariantClear(&v);
+    add_prop_str(pSubCont, szVersion,         szVersion_v);
+    add_prop_str(pSubCont, szAttributes,      szFinal_Retail_v);
+    add_prop_str(pSubCont, szLanguageEnglish, szEnglish_v);
+    add_prop_ui4(pSubCont, dwFileTimeHigh,    pFileInfo->dwFileDateMS);
+    add_prop_ui4(pSubCont, dwFileTimeLow,     pFileInfo->dwFileDateLS);
+    add_prop_bool(pSubCont, bBeta,  0 != ((pFileInfo->dwFileFlags & pFileInfo->dwFileFlagsMask) & VS_FF_PRERELEASE));
+    add_prop_bool(pSubCont, bDebug, 0 != ((pFileInfo->dwFileFlags & pFileInfo->dwFileFlagsMask) & VS_FF_DEBUG));
   }
 
   HeapFree(GetProcessHeap(), 0, pVersionInfo);
@@ -280,21 +264,12 @@ static HRESULT DXDiag_InitDXDiagSystemInfoContainer(IDxDiagContainer* pSubCont)
   OSVERSIONINFOW info;
   VARIANT v;
 
-  V_VT(&v) = VT_UI4; V_UI4(&v) = 9;
-  IDxDiagContainerImpl_AddProp(pSubCont, dwDirectXVersionMajor, &v);
-  V_VT(&v) = VT_UI4; V_UI4(&v) = 0;
-  IDxDiagContainerImpl_AddProp(pSubCont, dwDirectXVersionMinor, &v);
-  V_VT(&v) = VT_BSTR; V_BSTR(&v) = SysAllocString(szDirectXVersionLetter_v);
-  IDxDiagContainerImpl_AddProp(pSubCont, szDirectXVersionLetter, &v);
-  VariantClear(&v);
-  V_VT(&v) = VT_BSTR; V_BSTR(&v) = SysAllocString(szDirectXVersionEnglish_v);
-  IDxDiagContainerImpl_AddProp(pSubCont, szDirectXVersionEnglish, &v);
-  VariantClear(&v);
-  V_VT(&v) = VT_BSTR; V_BSTR(&v) = SysAllocString(szDirectXVersionLongEnglish_v);
-  IDxDiagContainerImpl_AddProp(pSubCont, szDirectXVersionLongEnglish, &v);
-  VariantClear(&v);
-  V_VT(&v) = VT_BOOL; V_BOOL(&v) = FALSE;
-  IDxDiagContainerImpl_AddProp(pSubCont, bDebug, &v);
+  add_prop_ui4(pSubCont, dwDirectXVersionMajor, 9);
+  add_prop_ui4(pSubCont, dwDirectXVersionMinor, 0);
+  add_prop_str(pSubCont, szDirectXVersionLetter, szDirectXVersionLetter_v);
+  add_prop_str(pSubCont, szDirectXVersionEnglish, szDirectXVersionEnglish_v);
+  add_prop_str(pSubCont, szDirectXVersionLongEnglish, szDirectXVersionLongEnglish_v);
+  add_prop_bool(pSubCont, bDebug, FALSE);
 
   msex.dwLength = sizeof(msex);
   GlobalMemoryStatusEx( &msex );
@@ -306,18 +281,10 @@ static HRESULT DXDiag_InitDXDiagSystemInfoContainer(IDxDiagContainer* pSubCont)
 
   info.dwOSVersionInfoSize = sizeof(info);
   GetVersionExW( &info );
-  V_VT(&v) = VT_UI4;
-  V_UI4(&v) = info.dwMajorVersion;
-  IDxDiagContainerImpl_AddProp(pSubCont, dwOSMajorVersion, &v);
-  V_VT(&v) = VT_UI4;
-  V_UI4(&v) = info.dwMinorVersion;
-  IDxDiagContainerImpl_AddProp(pSubCont, dwOSMinorVersion, &v);
-  V_VT(&v) = VT_UI4;
-  V_UI4(&v) = info.dwBuildNumber;
-  IDxDiagContainerImpl_AddProp(pSubCont, dwOSBuildNumber, &v);
-  V_VT(&v) = VT_UI4;
-  V_UI4(&v) = info.dwPlatformId;
-  IDxDiagContainerImpl_AddProp(pSubCont, dwOSPlatformID, &v);
+  add_prop_ui4(pSubCont, dwOSMajorVersion, info.dwMajorVersion);
+  add_prop_ui4(pSubCont, dwOSMinorVersion, info.dwMinorVersion);
+  add_prop_ui4(pSubCont, dwOSBuildNumber,  info.dwBuildNumber);
+  add_prop_ui4(pSubCont, dwOSPlatformID,   info.dwPlatformId);
 
   return S_OK;
 }
@@ -643,18 +610,12 @@ static HRESULT DXDiag_InitDXDiagDirectShowFiltersContainer(IDxDiagContainer* pSu
 	    LPBYTE pData = NULL;
 	    LPBYTE pCurrent = NULL;
 	    struct REG_RF* prrf = NULL;
-	    VARIANT v_data;
 	    DWORD it;
 	    DWORD dwNOutputs = 0;
 	    DWORD dwNInputs = 0;
-	    	    
-	    V_VT(&v) = VT_BSTR; V_BSTR(&v) = SysAllocString(wszCatName);
-	    hr = IDxDiagContainerImpl_AddProp(pSubCont, szCatName, &v);
-	    VariantClear(&v);
 
-	    V_VT(&v) = VT_BSTR; V_BSTR(&v) = SysAllocString(wszCatClsid);
-	    hr = IDxDiagContainerImpl_AddProp(pSubCont, szClsidCat, &v);
-	    VariantClear(&v);
+            add_prop_str(pSubCont, szCatName, wszCatName);
+            add_prop_str(pSubCont, szClsidCat, wszCatClsid);
 
 	    hr = IPropertyBag_Read(pPropFilterBag, wszFriendlyName, &v, 0);
 	    hr = IDxDiagContainerImpl_AddProp(pSubCont, szName, &v);
@@ -670,14 +631,9 @@ static HRESULT DXDiag_InitDXDiagDirectShowFiltersContainer(IDxDiagContainer* pSu
 	    hr = SafeArrayAccessData(V_UNION(&v, parray), (LPVOID*) &pData);	    
 	    prrf = (struct REG_RF*) pData;
 	    pCurrent = pData;
- 
-	    VariantInit(&v_data);
-	    V_VT(&v_data) = VT_UI4; V_UI4(&v_data) = prrf->dwVersion;
-	    hr = IDxDiagContainerImpl_AddProp(pSubCont, szName, &v_data);
-	    VariantClear(&v_data);
-	    V_VT(&v_data) = VT_UI4; V_UI4(&v_data) = prrf->dwMerit;
-	    hr = IDxDiagContainerImpl_AddProp(pSubCont, dwMerit, &v_data);
-	    VariantClear(&v_data);
+
+            add_prop_ui4(pSubCont, szName, prrf->dwVersion);
+            add_prop_ui4(pSubCont, dwMerit, prrf->dwMerit);
 
 	    pCurrent += sizeof(struct REG_RF);
 	    for (it = 0; it < prrf->dwPins; ++it) {
@@ -701,12 +657,8 @@ static HRESULT DXDiag_InitDXDiagDirectShowFiltersContainer(IDxDiagContainer* pSu
 	      }
 	    }
 
-	    V_VT(&v_data) = VT_UI4; V_UI4(&v_data) = dwNInputs;
-	    hr = IDxDiagContainerImpl_AddProp(pSubCont, dwInputs, &v_data);
-	    VariantClear(&v_data);
-	    V_VT(&v_data) = VT_UI4; V_UI4(&v_data) = dwNOutputs;
-	    hr = IDxDiagContainerImpl_AddProp(pSubCont, dwOutputs, &v_data);
-	    VariantClear(&v_data);
+            add_prop_ui4(pSubCont, dwInputs,  dwNInputs);
+            add_prop_ui4(pSubCont, dwOutputs, dwNOutputs);
 
 	    SafeArrayUnaccessData(V_UNION(&v, parray));
 	    VariantClear(&v);




More information about the wine-cvs mailing list