diff --git a/HdmiCecSink/HdmiCecSink.cpp b/HdmiCecSink/HdmiCecSink.cpp index d8a60b507f..707e17ed50 100644 --- a/HdmiCecSink/HdmiCecSink.cpp +++ b/HdmiCecSink/HdmiCecSink.cpp @@ -1213,7 +1213,8 @@ namespace WPEFramework JsonObject params; if(!HdmiCecSink::_instance) return; - if (m_audioStatusTimerStarted) + m_audioDeviceNewVolumeLevel = msg.status.getAudioVolume(); + if (m_audioStatusTimerStarted && (m_audioDeviceNewVolumeLevel != m_audioDevicePrevVolumeLevel)) { m_audioStatusReceived = true; m_isAudioStatusInfoUpdated = true; @@ -1231,7 +1232,7 @@ namespace WPEFramework params["muteStatus"] = msg.status.getAudioMuteStatus(); params["volumeLevel"] = msg.status.getAudioVolume(); sendNotify(eventString[HDMICECSINK_EVENT_REPORT_AUDIO_STATUS], params); - + m_audioDevicePrevVolumeLevel = m_audioDeviceNewVolumeLevel; } void HdmiCecSink::sendKeyPressEvent(const int logicalAddress, int keyCode) { @@ -3548,7 +3549,11 @@ namespace WPEFramework else if(keyInfo.UserControl == "sendUserControlReleased") { LOGINFO("sendUserControlReleased : logical addr:0x%x queue size :%zu \n",keyInfo.logicalAddr,_instance->m_SendKeyQueue.size()); - _instance->sendUserControlReleased(keyInfo.logicalAddr); + if(!_instance->m_isAudioStatusInfoUpdated) + { + _instance->sendGiveAudioStatusMsg(); + } + _instance->sendUserControlReleased(keyInfo.logicalAddr); } else { diff --git a/HdmiCecSink/HdmiCecSink.h b/HdmiCecSink/HdmiCecSink.h index 5b7d908175..44d4e7f95b 100644 --- a/HdmiCecSink/HdmiCecSink.h +++ b/HdmiCecSink/HdmiCecSink.h @@ -635,6 +635,8 @@ namespace WPEFramework { bool m_audioStatusReceived; bool m_audioStatusTimerStarted; int m_audioStatusRequestedCount; + int m_audioDeviceNewVolumeLevel; + int m_audioDevicePrevVolumeLevel; std::thread m_sendKeyEventThread; std::mutex m_sendKeyEventMutex; std::queue m_SendKeyQueue;