summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas Reufer <thomas@reufer.ch>2015-03-23 19:57:39 +0100
committerThomas Reufer <thomas@reufer.ch>2015-03-23 19:57:39 +0100
commitf489637bfa7fdf9fc32c8b4a793b2866533f5b77 (patch)
tree3605d3e3ca7b3b56c1198bf3229a6d57b021873c
parentecae05d97f6e93808a4e011081aad702ecbc655d (diff)
downloadvdr-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.c8
-rw-r--r--omx.h1
2 files changed, 8 insertions, 1 deletions
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;