Ignore:
Timestamp:
May 18, 2015, 10:11:11 AM (8 years ago)
Author:
roman
Message:

Added filtering in media sample trace UI; fixed thread safety problem; fixed file mapping initialization issue; removed media sample leak feature (to extend file mapping lifetime) and replaced with file mapping ownership transfer to UI process; added menu item to jump right to filter graph

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/DirectShowSpy/FilterGraphList.h

    r432 r441  
    249249                        return ((CListPropertyPage*) nParameter)->SortGraphListViewItems(nItemParameter1, nItemParameter2);
    250250                }
    251                 VOID Refresh()
    252                 {
    253                         CRoMapT<CStringW, CItem> ItemMap;
    254                         #pragma region Enumerate
     251                static VOID EnumerateItems(IRunningObjectTable* pRunningObjectTable, CRoMapT<CStringW, CItem>& ItemMap, const LONG* pnProcessIdentifier = NULL)
     252                {
     253                        _A(pRunningObjectTable);
     254                        _A(ItemMap.IsEmpty());
    255255                        _ATLTRY
    256256                        {
    257                                 LONG nProcessIdentifier;
    258                                 const BOOL bProcessIdentifierAvailable = m_PropertySheet.m_Options.TryGetLongValue(_T("FilterGraphListPropertySheet.ProcessIdentifier"), nProcessIdentifier);
    259                                 if(!m_pRunningObjectTable)
    260                                         __C(GetRunningObjectTable(0, &m_pRunningObjectTable));
    261257                                CComPtr<IEnumMoniker> pEnumMoniker;
    262                                 __C(m_pRunningObjectTable->EnumRunning(&pEnumMoniker));
     258                                __C(pRunningObjectTable->EnumRunning(&pEnumMoniker));
    263259                                CComPtr<IMalloc> pMalloc;
    264260                                __C(CoGetMalloc(1, &pMalloc));
     
    288284                                                        Item.m_sTime = CString(MatchContext.GetMatchString(3));
    289285                                                        Item.m_sTime.Replace(_T("-"), _T(":"));
    290                                                         if(bProcessIdentifierAvailable && Item.m_nProcessIdentifier != (DWORD) nProcessIdentifier)
     286                                                        if(pnProcessIdentifier && Item.m_nProcessIdentifier != (DWORD) *pnProcessIdentifier)
    291287                                                                continue; // Skip
    292288                                                        _W(ItemMap.SetAt(sDisplayName, Item) >= 0);
     
    303299                                _Z_EXCEPTION();
    304300                        }
    305                         #pragma endregion
     301                }
     302                VOID Refresh()
     303                {
     304                        if(!m_pRunningObjectTable)
     305                                __C(GetRunningObjectTable(0, &m_pRunningObjectTable));
     306                        LONG nProcessIdentifier;
     307                        const BOOL bProcessIdentifierAvailable = m_PropertySheet.m_Options.TryGetLongValue(_T("FilterGraphListPropertySheet.ProcessIdentifier"), nProcessIdentifier);
     308                        CRoMapT<CStringW, CItem> ItemMap;
     309                        EnumerateItems(m_pRunningObjectTable, ItemMap, bProcessIdentifierAvailable ? &nProcessIdentifier : NULL);
    306310                        CWindowRedraw GraphListViewRedraw(m_GraphListView);
    307311                        BOOL bSortNeeded = FALSE;
Note: See TracChangeset for help on using the changeset viewer.