Skip to content
This repository
Browse code

Improve resilience of volume change.

Building on the previous fix for the audio volume jumps experienced
when switching tracks, this adds a double check that the underlying audio
layer has actually set the volume to the new value. This may fail because
the COMXAudio object it not yet initialised.

If there is a failure, then the volume change is retried in the next
iteration of COMXPlayer::Process().
  • Loading branch information...
commit c8d50211bf9aeb4c9c02d97ec1f718f2615e4aa0 1 parent bc7b563
authored June 26, 2013
4  xbmc/cores/omxplayer/OMXPlayer.cpp
@@ -1332,8 +1332,8 @@ void COMXPlayer::Process()
1332 1332
 
1333 1333
     if(m_change_volume && m_CurrentAudio.started)
1334 1334
     {
1335  
-      m_omxPlayerAudio.SetCurrentVolume(m_current_mute ? VOLUME_MINIMUM : m_current_volume);
1336  
-      m_change_volume = false;
  1335
+      if(m_player_audio.SetCurrentVolume(m_current_mute ? VOLUME_MINIMUM : m_current_volume))
  1336
+        m_change_volume = false;
1337 1337
     }
1338 1338
 
1339 1339
     // process the packet
4  xbmc/cores/omxplayer/OMXPlayerAudio.cpp
@@ -717,9 +717,9 @@ void OMXPlayerAudio::UnRegisterAudioCallback()
717 717
   m_omxAudio.UnRegisterAudioCallback();
718 718
 }
719 719
 
720  
-void OMXPlayerAudio::SetCurrentVolume(float fVolume)
  720
+bool OMXPlayerAudio::SetCurrentVolume(float fVolume)
721 721
 {
722  
-  m_omxAudio.SetCurrentVolume(fVolume);
  722
+  return m_omxAudio.SetCurrentVolume(fVolume);
723 723
 }
724 724
 
725 725
 void OMXPlayerAudio::SetSpeed(int speed)
2  xbmc/cores/omxplayer/OMXPlayerAudio.h
@@ -109,7 +109,7 @@ class OMXPlayerAudio : public CThread
109 109
   void SubmitEOS();
110 110
   void  RegisterAudioCallback(IAudioCallback* pCallback);
111 111
   void  UnRegisterAudioCallback();
112  
-  void SetCurrentVolume(float fVolume);
  112
+  bool SetCurrentVolume(float fVolume);
113 113
   void SetSpeed(int iSpeed);
114 114
   int  GetAudioBitrate();
115 115
   std::string GetPlayerInfo();

0 notes on commit c8d5021

Please sign in to comment.
Something went wrong with that request. Please try again.