Ignore:
Timestamp:
Aug 21, 2012, 3:09:45 PM (10 years ago)
Author:
roman
Message:
  • logs IMediaEvent, IMediaEventEx, IMediaEventSink calls
  • logs call stack for IMediaEventSink::Notify with EC_ERRORABORT
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/DirectShowSpy/FilterGraphSpy.h

    r97 r98  
    506506                return FALSE;
    507507        }
     508        static BOOL LookupEventCodeName(LONG nEventCode, LPCSTR& pszName) throw()
     509        {
     510                // NOTE: See Windows SDK evcode.h
     511                static const struct { LONG nEventCode; LPCSTR pszName; } g_pMap[] =
     512                {
     513                        #define A(x) { x, #x },
     514                        A(EC_COMPLETE)
     515                        A(EC_USERABORT)
     516                        A(EC_ERRORABORT)
     517                        A(EC_TIME)
     518                        A(EC_REPAINT)
     519                        A(EC_STREAM_ERROR_STOPPED)
     520                        A(EC_STREAM_ERROR_STILLPLAYING)
     521                        A(EC_ERROR_STILLPLAYING)
     522                        A(EC_PALETTE_CHANGED)
     523                        A(EC_VIDEO_SIZE_CHANGED)
     524                        A(EC_QUALITY_CHANGE)
     525                        A(EC_SHUTTING_DOWN)
     526                        A(EC_CLOCK_CHANGED)
     527                        A(EC_PAUSED)
     528                        A(EC_OPENING_FILE)
     529                        A(EC_BUFFERING_DATA)
     530                        A(EC_FULLSCREEN_LOST)
     531                        A(EC_ACTIVATE)
     532                        A(EC_NEED_RESTART)
     533                        A(EC_WINDOW_DESTROYED)
     534                        A(EC_DISPLAY_CHANGED)
     535                        A(EC_STARVATION)
     536                        A(EC_OLE_EVENT)
     537                        A(EC_NOTIFY_WINDOW)
     538                        A(EC_STREAM_CONTROL_STOPPED)
     539                        A(EC_STREAM_CONTROL_STARTED)
     540                        A(EC_END_OF_SEGMENT)
     541                        A(EC_SEGMENT_STARTED)
     542                        A(EC_LENGTH_CHANGED)
     543                        A(EC_DEVICE_LOST)
     544                        A(EC_SAMPLE_NEEDED)
     545                        A(EC_PROCESSING_LATENCY)
     546                        A(EC_SAMPLE_LATENCY)
     547                        A(EC_SCRUB_TIME)
     548                        A(EC_STEP_COMPLETE)
     549                        #undef A
     550                };
     551                for(SIZE_T nIndex = 0; nIndex < DIM(g_pMap); nIndex++)
     552                        if(g_pMap[nIndex].nEventCode == nEventCode)
     553                        {
     554                                pszName = g_pMap[nIndex].pszName;
     555                                return TRUE;
     556                        }
     557                return FALSE;
     558        }
    508559
    509560// ISpy
     
    793844    STDMETHOD(Notify)(LONG nEventCode, LONG_PTR nParameter1, LONG_PTR nParameter2) throw()
    794845        {
     846                #if TRUE
     847                        LPCSTR pszEventName = NULL;
     848                        if(LookupEventCodeName(nEventCode, pszEventName))
     849                        {
     850                                _Z4(atlTraceCOM, 4, _T("nEventCode %hs (0x%02X), nParameter1 0x%p, nParameter2 0x%p\n"), pszEventName, nEventCode, nParameter1, nParameter2);
     851                        } else
     852                #endif
    795853                _Z4(atlTraceCOM, 4, _T("nEventCode 0x%02X, nParameter1 0x%p, nParameter2 0x%p\n"), nEventCode, nParameter1, nParameter2);
    796854                #if defined(_M_IX86)
    797855                        // WARN: Guarding section around might be preventing from walknig frame up the stack
    798                         if(nEventCode == EC_ERRORABORT)
     856                        if(nEventCode == EC_ERRORABORT) // || nEventCode == EC_VIDEO_SIZE_CHANGED)
    799857                        {
    800858                                CONTEXT ThreadContext = { CONTEXT_FULL };
    801859                                GetCurrentThreadContext(&ThreadContext);
    802                                 CDebugTraceCallStack::TraceCallStack(ThreadContext, (nEventCode == EC_ERRORABORT) ? 32 : 8);
     860                                CDebugTraceCallStack::TraceCallStack(ThreadContext, 32); //(nEventCode == EC_ERRORABORT) ? 32 : 8);
    803861                        }
    804862                #endif // defined(_M_IX86)
     863                if(!m_pInnerMediaEventSink)
     864                        return S_FALSE;
    805865                return m_pInnerMediaEventSink->Notify(nEventCode, nParameter1, nParameter2);
    806866        }
     
    830890        STDMETHOD(CancelDefaultHandling)(LONG nEventCode) throw()
    831891        {
     892                #if TRUE
     893                        LPCSTR pszEventName = NULL;
     894                        if(LookupEventCodeName(nEventCode, pszEventName))
     895                        {
     896                                _Z4(atlTraceCOM, 4, _T("nEventCode %hs (0x%02X)\n"), pszEventName, nEventCode);
     897                        } else
     898                #endif
    832899                _Z4(atlTraceCOM, 4, _T("nEventCode 0x%02X\n"), nEventCode);
    833900                return m_pInnerMediaEventEx->CancelDefaultHandling(nEventCode);
     
    835902        STDMETHOD(RestoreDefaultHandling)(LONG nEventCode) throw()
    836903        {
     904                #if TRUE
     905                        LPCSTR pszEventName = NULL;
     906                        if(LookupEventCodeName(nEventCode, pszEventName))
     907                        {
     908                                _Z4(atlTraceCOM, 4, _T("nEventCode %hs (0x%02X)\n"), pszEventName, nEventCode);
     909                        } else
     910                #endif
    837911                _Z4(atlTraceCOM, 4, _T("nEventCode 0x%02X\n"), nEventCode);
    838912                return m_pInnerMediaEventEx->RestoreDefaultHandling(nEventCode);
Note: See TracChangeset for help on using the changeset viewer.