Changeset 333
- Timestamp:
- Oct 5, 2014, 1:57:35 PM (8 years ago)
- Location:
- trunk/DirectShowSpy
- Files:
-
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/DirectShowSpy/FilterGraphHelper.h
r325 r333 1696 1696 TYPE_FILTER, 1697 1697 TYPE_FILTERPROPERTYPAGE, 1698 TYPE_SERVICES, 1699 TYPE_SERVICEPROPERTYPAGE, 1698 1700 TYPE_MEMORYALLOCATOR, 1699 1701 TYPE_ACTION, … … 1748 1750 m_BaseFilterClassIdentifier(CLSID_NULL), 1749 1751 m_PropertyPageClassIdentifier(PropertyPageClassIdentifier), 1752 m_pPropertyPage(pPropertyPage), 1753 m_bSiteActivated(FALSE) 1754 { 1755 _A(pPropertyPage); 1756 } 1757 CData(IPropertyPage* pPropertyPage) : 1758 m_Type(TYPE_SERVICEPROPERTYPAGE), 1759 m_BaseFilterClassIdentifier(CLSID_NULL), 1760 m_PropertyPageClassIdentifier(CLSID_NULL), 1750 1761 m_pPropertyPage(pPropertyPage), 1751 1762 m_bSiteActivated(FALSE) … … 1768 1779 } 1769 1780 }; 1781 1782 //////////////////////////////////////////////////// 1783 // CObjectPropertyPage 1784 1785 class CObjectPropertyPage 1786 { 1787 public: 1788 CComPtr<IUnknown> m_pUnknown; 1789 CComPtr<IPropertyPage> m_pPropertyPage; 1790 1791 public: 1792 // CObjectPropertyPage 1793 CObjectPropertyPage() 1794 { 1795 } 1796 CObjectPropertyPage(IUnknown* pUnknown, IPropertyPage* pPropertyPage) : 1797 m_pUnknown(pUnknown), 1798 m_pPropertyPage(pPropertyPage) 1799 { 1800 } 1801 }; 1802 1803 typedef CRoArrayT<CObjectPropertyPage> CObjectPropertyPageArray; 1770 1804 1771 1805 private: … … 1820 1854 CWindowRedraw TreeViewRedraw(m_TreeView); 1821 1855 m_TreeView.DeleteAllItems(); 1856 CTreeItem LastItem; 1822 1857 #pragma region Filter 1823 1858 CTreeItem FiltersItem = m_TreeView.InsertItem(NULL, NULL, CData(CData::TYPE_FILTERS), _T("Filters")); … … 1876 1911 m_FiltersItem.m_hTreeItem = FiltersItem; 1877 1912 m_FiltersItem.m_pTreeView = &m_TreeView; 1913 LastItem = FiltersItem; 1878 1914 #pragma endregion 1879 CTreeItem MemoryAllocatorItem = m_TreeView.InsertItem(NULL, FiltersItem, CData(CData::TYPE_MEMORYALLOCATOR), _T("Memory Allocators")); 1915 #pragma region Services 1916 _ATLTRY 1917 { 1918 CObjectPropertyPageArray ObjectPropertyPageArray; 1919 const CComQIPtr<IServiceProvider> pServiceProvider = m_Owner.m_pFilterGraph; 1920 if(pServiceProvider) 1921 { 1922 #pragma region RunPropertyBagAware 1923 CComPtr<IRunPropertyBagAware> pRunPropertyBagAware; 1924 if(SUCCEEDED(pServiceProvider->QueryService<IRunPropertyBagAware>(__uuidof(IRunPropertyBagAware), &pRunPropertyBagAware))) 1925 _ATLTRY 1926 { 1927 _A(pRunPropertyBagAware); 1928 CObjectPtr<CRunPropertyBagPropertyPage> pRunPropertyBagPropertyPage; 1929 pRunPropertyBagPropertyPage.Construct(); 1930 ObjectPropertyPageArray.Add(CObjectPropertyPage(pRunPropertyBagAware, pRunPropertyBagPropertyPage)); 1931 } 1932 _ATLCATCHALL() 1933 { 1934 _Z_EXCEPTION(); 1935 } 1936 #pragma endregion 1937 #pragma region RunEventAware 1938 CComPtr<IRunEventAware> pRunEventAware; 1939 if(SUCCEEDED(pServiceProvider->QueryService<IRunEventAware>(__uuidof(IRunEventAware), &pRunEventAware))) 1940 _ATLTRY 1941 { 1942 _A(pRunEventAware); 1943 CObjectPtr<CRunEventPropertyPage> pRunEventPropertyPage; 1944 pRunEventPropertyPage.Construct(); 1945 ObjectPropertyPageArray.Add(CObjectPropertyPage(pRunEventAware, pRunEventPropertyPage)); 1946 } 1947 _ATLCATCHALL() 1948 { 1949 _Z_EXCEPTION(); 1950 } 1951 #pragma endregion 1952 } 1953 if(!ObjectPropertyPageArray.IsEmpty()) 1954 { 1955 CTreeItem ServicesItem = m_TreeView.InsertItem(NULL, LastItem, CData(CData::TYPE_SERVICES), _T("Services")); 1956 LastItem = ServicesItem; 1957 CTreeItem PreviousServiceItem; 1958 for(auto&& ObjectPropertyPage: ObjectPropertyPageArray) 1959 { 1960 CData Data(ObjectPropertyPage.m_pPropertyPage); 1961 Data.m_pSite.Construct()->Initialize(this, ObjectPropertyPage.m_pUnknown, ObjectPropertyPage.m_pPropertyPage); 1962 CTreeItem ServiceItem = m_TreeView.InsertItem(ServicesItem, PreviousServiceItem, Data, Data.GetPropertyPageTitle()); 1963 PreviousServiceItem = ServiceItem; 1964 } 1965 m_TreeView.Expand(ServicesItem); 1966 } 1967 } 1968 _ATLCATCHALL() 1969 { 1970 _Z_EXCEPTION(); 1971 } 1972 #pragma endregion 1973 #pragma region Other 1974 CTreeItem MemoryAllocatorItem = m_TreeView.InsertItem(NULL, LastItem, CData(CData::TYPE_MEMORYALLOCATOR), _T("Memory Allocators")); 1880 1975 m_MemoryAllocatorItem.m_hTreeItem = MemoryAllocatorItem; 1881 1976 m_MemoryAllocatorItem.m_pTreeView = &m_TreeView; … … 1889 1984 m_EmailLogItem.m_hTreeItem = EmailLogItem; 1890 1985 m_EmailLogItem.m_pTreeView = &m_TreeView; 1986 #pragma endregion 1891 1987 m_TreeView.Expand(EmailItem); 1892 1988 } … … 2057 2153 { 2058 2154 _A(pHeader); 2155 #pragma region Tree Item 2059 2156 CTreeItem TreeItem(pHeader->itemNew.hItem); 2060 2157 if(TreeItem) … … 2069 2166 if(Data.m_Type != CData::TYPE_EMAIL_LOG) 2070 2167 m_EmailLogDialog.ShowWindow(SW_HIDE); 2168 #pragma region Filter 2071 2169 if(Data.m_pBaseFilter) 2072 2170 { 2171 #pragma region Property Page 2073 2172 if(Data.m_pPropertyPage) 2074 2173 { … … 2086 2185 HandleStatusChange(m_pCurrentSite); 2087 2186 } else 2187 #pragma endregion 2188 #pragma region Text 2088 2189 { 2089 2190 CWaitCursor WaitCursor; … … 2180 2281 m_ApplyButton.EnableWindow(FALSE); 2181 2282 } 2283 #pragma endregion 2182 2284 } else 2285 #pragma endregion 2286 #pragma region Service Property Page 2287 if(Data.m_pPropertyPage) 2288 { 2289 m_TextEdit.ShowWindow(SW_HIDE); 2290 if(Data.m_pSite != m_pCurrentSite) 2291 HideCurrentSite(); 2292 if(!Data.m_bSiteActivated) 2293 { 2294 __C(Data.m_pPropertyPage->Activate(m_hWnd, GetTextEditPosition(), TRUE)); 2295 Data.m_bSiteActivated = TRUE; 2296 } else 2297 __C(Data.m_pPropertyPage->Move(GetTextEditPosition())); 2298 __C(Data.m_pPropertyPage->Show(SW_SHOWNORMAL)); 2299 m_pCurrentSite = Data.m_pSite; 2300 HandleStatusChange(m_pCurrentSite); 2301 } else 2302 #pragma endregion 2303 #pragma region Other 2183 2304 { 2184 2305 CWaitCursor WaitCursor; … … 2220 2341 m_ApplyButton.EnableWindow(FALSE); 2221 2342 } 2343 #pragma endregion 2222 2344 } else 2345 #pragma endregion 2346 #pragma region No Tree Item 2223 2347 { 2224 2348 HideCurrentSite(); … … 2230 2354 m_ApplyButton.EnableWindow(FALSE); 2231 2355 } 2356 #pragma endregion 2232 2357 return 0; 2233 2358 } … … 2930 3055 if(!pFilterGraph) 2931 3056 return (LPCTSTR) NULL; 3057 const CComQIPtr<IServiceProvider> pServiceProvider = pFilterGraph; 2932 3058 const CComQIPtr<ISpy> pSpy = pFilterGraph; 2933 3059 CString sText; … … 3180 3306 #pragma endregion 3181 3307 #pragma region Runtime Property Bag 3308 const CString sRunPropertyBagHeader = AtlFormatString(_T("## ") _T("Runtime Properties") _T("\r\n") _T("\r\n")); 3182 3309 BOOL bRunPropertyBagHeaderAdded = FALSE; 3183 for(SIZE_T nIndex = 0; nIndex < FilterArray.GetCount(); nIndex++) 3310 { 3311 const CString sPropertyBagText = CRunPropertyBagHelper::GetPropertyBagText(pFilterGraph, pSpy); 3312 if(!sPropertyBagText.IsEmpty()) 3313 { 3314 sText += sRunPropertyBagHeader; 3315 bRunPropertyBagHeaderAdded = TRUE; 3316 sText += sPropertyBagText; 3317 sText += _T("\r\n"); 3318 } 3319 } 3320 for(auto&& pBaseFilter: FilterArray) 3321 { 3184 3322 _ATLTRY 3185 3323 { 3186 const CComPtr<IBaseFilter>& pBaseFilter = FilterArray[nIndex];3187 //_Z4(atlTraceGeneral, 4, _T("pBaseFilter 0x%p \"%ls\"\n"), pBaseFilter, _FilterGraphHelper::GetFilterName(pBaseFilter));3188 3324 const CString sPropertyBagText = CRunPropertyBagHelper::GetPropertyBagText(pBaseFilter, pSpy); 3189 3325 if(sPropertyBagText.IsEmpty()) … … 3191 3327 if(!bRunPropertyBagHeaderAdded) 3192 3328 { 3193 sText += AtlFormatString(_T("## ") _T("Runtime Properties") _T("\r\n") _T("\r\n"));3329 sText += sRunPropertyBagHeader; 3194 3330 bRunPropertyBagHeaderAdded = TRUE; 3195 3331 } … … 3202 3338 _Z_EXCEPTION(); 3203 3339 } 3340 } 3204 3341 #pragma endregion 3205 3342 } -
trunk/DirectShowSpy/RunPropertyBag.h
r312 r333 282 282 __if_exists(ISpy) 283 283 { 284 static CString GetPropertyBagText(IRunPropertyBagAware* pRunPropertyBagAware, ISpy* pSpy = NULL) 285 { 286 if(pSpy) 287 { 288 CComVariantArray vValue; 289 __C(pSpy->ReadRunPropertyBag(pRunPropertyBagAware, ATL_VARIANT_TRUE, &vValue)); 290 return GetPropertyBagText(vValue); 291 } 292 if(!pRunPropertyBagAware) 293 return _T(""); 294 return GetPropertyBagText(ReadRunPropertyBag(pRunPropertyBagAware)); 295 } 284 296 static CString GetPropertyBagText(IUnknown* pBaseFilterUnknown, ISpy* pSpy = NULL) 285 297 { … … 288 300 if(!pEffectiveSpy && pRunPropertyBagAware) 289 301 pEffectiveSpy = _FilterGraphHelper::GetFilterGraph(CComQIPtr<IBaseFilter>(pBaseFilterUnknown)); 290 if(pEffectiveSpy) 291 { 292 CComVariantArray vValue; 293 __C(pEffectiveSpy->ReadRunPropertyBag(pBaseFilterUnknown, ATL_VARIANT_TRUE, &vValue)); 294 return GetPropertyBagText(vValue); 295 } 296 if(!pRunPropertyBagAware) 297 return _T(""); 298 return GetPropertyBagText(ReadRunPropertyBag(pRunPropertyBagAware)); 302 return GetPropertyBagText(pRunPropertyBagAware, pEffectiveSpy); 303 } 304 static CString GetPropertyBagText(IFilterGraph* pFilterGraph, ISpy* pSpy = NULL) 305 { 306 const CComQIPtr<IServiceProvider> pServiceProvider = pFilterGraph; 307 if(pServiceProvider) 308 { 309 CComPtr<IRunPropertyBagAware> pRunPropertyBagAware; 310 pServiceProvider->QueryService<IRunPropertyBagAware>(__uuidof(IRunPropertyBagAware), &pRunPropertyBagAware); 311 if(pRunPropertyBagAware) 312 return GetPropertyBagText(pRunPropertyBagAware, pSpy); 313 } 314 return _T(""); 299 315 } 300 316 }
Note: See TracChangeset
for help on using the changeset viewer.