diff options
| author | Thomas Reufer <thomas@reufer.ch> | 2015-03-23 19:57:39 +0100 |
|---|---|---|
| committer | Thomas Reufer <thomas@reufer.ch> | 2015-03-23 19:57:39 +0100 |
| commit | f489637bfa7fdf9fc32c8b4a793b2866533f5b77 (patch) | |
| tree | 3605d3e3ca7b3b56c1198bf3229a6d57b021873c | |
| parent | ecae05d97f6e93808a4e011081aad702ecbc655d (diff) | |
| download | vdr-plugin-rpihddevice-f489637bfa7fdf9fc32c8b4a793b2866533f5b77.tar.gz vdr-plugin-rpihddevice-f489637bfa7fdf9fc32c8b4a793b2866533f5b77.tar.bz2 | |
block OMX port event handling when stream has been stopped
| -rw-r--r-- | omx.c | 8 | ||||
| -rw-r--r-- | omx.h | 1 |
2 files changed, 8 insertions, 1 deletions
@@ -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; } @@ -149,6 +149,7 @@ private: OMX_S32 m_clockScale; cOmxEvents *m_portEvents; + bool m_handlePortEvents; void (*m_onBufferStall)(void*); void *m_onBufferStallData; |
