[rbp/omxplayer] Avoid segfault when switching fullscreen
authorpopcornmix <popcornmix@gmail.com>
Sat, 30 Nov 2013 18:35:41 +0000 (18:35 +0000)
committerpopcornmix <popcornmix@gmail.com>
Sun, 1 Dec 2013 20:45:21 +0000 (20:45 +0000)
Switching fullscreen causes a brief UnregisterAudioCallback/RegsisterAudioCallback.
If this occurs while audio thread is inside VizPacket then we segfault on dereferencing m_pCallback.

Using the m_critSection lock means the higher level test for m_pCallback will protect us.

xbmc/cores/omxplayer/OMXAudio.cpp

index 5f0ccc1..dbd065f 100644 (file)
@@ -1198,6 +1198,7 @@ int COMXAudio::SetPlaySpeed(int iSpeed)
 
 void COMXAudio::RegisterAudioCallback(IAudioCallback *pCallback)
 {
+  CSingleLock lock (m_critSection);
   if(!m_Passthrough && !m_HWDecode)
   {
     m_pCallback = pCallback;
@@ -1210,6 +1211,7 @@ void COMXAudio::RegisterAudioCallback(IAudioCallback *pCallback)
 
 void COMXAudio::UnRegisterAudioCallback()
 {
+  CSingleLock lock (m_critSection);
   m_pCallback = NULL;
 }