From f489637bfa7fdf9fc32c8b4a793b2866533f5b77 Mon Sep 17 00:00:00 2001 From: Thomas Reufer Date: Mon, 23 Mar 2015 19:57:39 +0100 Subject: block OMX port event handling when stream has been stopped --- omx.c | 8 +++++++- omx.h | 1 + 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/omx.c b/omx.c index ede5f87..2e21e2f 100644 --- a/omx.c +++ b/omx.c @@ -184,7 +184,8 @@ void cOmx::Action(void) switch (event->event) { case cOmxEvents::ePortSettingsChanged: - HandlePortSettingsChanged(event->data); + if (m_handlePortEvents) + HandlePortSettingsChanged(event->data); break; case cOmxEvents::eConfigChanged: @@ -363,6 +364,7 @@ cOmx::cOmx() : m_clockReference(eClockRefNone), m_clockScale(0), m_portEvents(new cOmxEvents()), + m_handlePortEvents(false), m_onBufferStall(0), m_onBufferStallData(0), m_onEndOfStream(0), @@ -832,6 +834,8 @@ void cOmx::StopVideo(void) m_videoFormat.height = 0; m_videoFormat.frameRate = 0; m_videoFormat.interlaced = false; + + m_handlePortEvents = false; } void cOmx::StopAudio(void) @@ -939,6 +943,8 @@ int cOmx::SetVideoCodec(cVideoCodec::eCodec codec) if (ilclient_setup_tunnel(&m_tun[eClockToVideoScheduler], 0, 0) != 0) ELOG("failed to setup up tunnel from clock to video scheduler!"); + m_handlePortEvents = true; + return 0; } diff --git a/omx.h b/omx.h index 62cd8a3..c678336 100644 --- a/omx.h +++ b/omx.h @@ -149,6 +149,7 @@ private: OMX_S32 m_clockScale; cOmxEvents *m_portEvents; + bool m_handlePortEvents; void (*m_onBufferStall)(void*); void *m_onBufferStallData; -- cgit v1.2.3