From b35c344c11070b53c320b35e6894a6320a5079f7 Mon Sep 17 00:00:00 2001 From: TangoCash Date: Fri, 19 Oct 2018 19:39:36 +0200 Subject: [PATCH] move external volume control to internal volume/mute handler Signed-off-by: Thilo Graf --- src/driver/volume.cpp | 14 ++++++++++++++ src/gui/audiomute.cpp | 8 ++++++++ src/neutrino.cpp | 45 ++----------------------------------------- 3 files changed, 24 insertions(+), 43 deletions(-) diff --git a/src/driver/volume.cpp b/src/driver/volume.cpp index 55d63b2bb..e65e4553b 100644 --- a/src/driver/volume.cpp +++ b/src/driver/volume.cpp @@ -34,6 +34,7 @@ #include /* compat header from zapit/include */ #include +#include #include #include #include @@ -113,6 +114,10 @@ void CVolume::setVolume(const neutrino_msg_t key) neutrino_msg_data_t data = 0; uint64_t timeoutEnd = 0; +#if HAVE_ARM_HARDWARE + if (g_settings.hdmi_cec_volume) + g_settings.current_volume = hdmi_cec::getInstance()->GetVolume(); +#endif int vol = g_settings.current_volume; do { @@ -132,6 +137,15 @@ void CVolume::setVolume(const neutrino_msg_t key) g_RCInput->getMsg(&tmp, &data, 0); if (tmp != CRCInput::RC_timeout) g_RCInput->postMsg(tmp, data); +#if HAVE_ARM_HARDWARE + } + else if (g_settings.hdmi_cec_volume) + { + (dir > 0) ? hdmi_cec::getInstance()->vol_up() : hdmi_cec::getInstance()->vol_down(); + do_vol = false; + g_settings.current_volume = hdmi_cec::getInstance()->GetVolume(); + printf("Volume: %d\n", g_settings.current_volume); +#endif } else do_vol = true; if (CNeutrinoApp::getInstance()->isMuted() && (dir > 0 || g_settings.current_volume > 0)) { diff --git a/src/gui/audiomute.cpp b/src/gui/audiomute.cpp index 41de6b899..5253de5ad 100644 --- a/src/gui/audiomute.cpp +++ b/src/gui/audiomute.cpp @@ -30,6 +30,7 @@ #endif #include #include +#include #include #include #include @@ -37,6 +38,8 @@ #include +#include + CAudioMute::CAudioMute():CComponentsPicture(0, 0, NEUTRINO_ICON_MUTED) { y_old = -1; @@ -61,6 +64,11 @@ void CAudioMute::AudioMute(int newValue, bool isEvent) CVFD::getInstance()->setMuted(newValue); neutrino->setCurrentMuted(newValue); +#if HAVE_ARM_HARDWARE + if (g_settings.hdmi_cec_volume) + hdmi_cec::getInstance()->toggle_mute(); + else +#endif g_Zapit->muteAudio(newValue); if( isEvent && ( neutrino->getMode() != NeutrinoModes::mode_scart ) && ( neutrino->getMode() != NeutrinoModes::mode_pic)) diff --git a/src/neutrino.cpp b/src/neutrino.cpp index fe2eb65ff..04feade35 100644 --- a/src/neutrino.cpp +++ b/src/neutrino.cpp @@ -1219,7 +1219,8 @@ void CNeutrinoApp::saveSetup(const char * fname) configfile.setInt32( "hdmi_cec_standby", g_settings.hdmi_cec_standby ); configfile.setInt32( "hdmi_cec_volume", g_settings.hdmi_cec_volume ); - configfile.setInt32( "current_volume", g_settings.current_volume ); + if (!g_settings.hdmi_cec_volume) + configfile.setInt32( "current_volume", g_settings.current_volume ); configfile.setInt32( "current_volume_step", g_settings.current_volume_step ); configfile.setInt32( "start_volume", g_settings.start_volume ); configfile.setInt32("audio_volume_percent_ac3", g_settings.audio_volume_percent_ac3); @@ -2845,13 +2846,6 @@ void CNeutrinoApp::RealRun() showInfo(); break; case SNeutrinoSettings::VOLUME: -#if HAVE_ARM_HARDWARE - if (g_settings.hdmi_cec_volume) - { - (msg == (neutrino_msg_t) g_settings.key_volumeup || msg == CRCInput::RC_right) ? hdmi_cec::getInstance()->vol_up() : hdmi_cec::getInstance()->vol_down(); - } - else -#endif g_volume->setVolume(msg); break; default: /* SNeutrinoSettings::ZAP */ @@ -2959,13 +2953,6 @@ void CNeutrinoApp::RealRun() showInfo(); break; case SNeutrinoSettings::VOLUME: -#if HAVE_ARM_HARDWARE - if (g_settings.hdmi_cec_volume) - { - (msg == (neutrino_msg_t) g_settings.key_volumeup || msg == CRCInput::RC_right) ? hdmi_cec::getInstance()->vol_up() : hdmi_cec::getInstance()->vol_down(); - } - else -#endif g_volume->setVolume(msg); break; default: /* SNeutrinoSettings::ZAP */ @@ -3466,13 +3453,6 @@ int CNeutrinoApp::handleMsg(const neutrino_msg_t _msg, neutrino_msg_data_t data) } else if ((msg == CRCInput::RC_plus) || (msg == CRCInput::RC_minus)) { -#if HAVE_ARM_HARDWARE - if (g_settings.hdmi_cec_volume) - { - (msg == (neutrino_msg_t) g_settings.key_volumeup || msg == CRCInput::RC_right) ? hdmi_cec::getInstance()->vol_up() : hdmi_cec::getInstance()->vol_down(); - } - else -#endif g_volume->setVolume(msg); return messages_return::handled; @@ -3484,37 +3464,16 @@ int CNeutrinoApp::handleMsg(const neutrino_msg_t _msg, neutrino_msg_data_t data) } else { //mute -#if HAVE_ARM_HARDWARE - if (g_settings.hdmi_cec_volume) - { - hdmi_cec::getInstance()->toggle_mute(); - } - else -#endif g_audioMute->AudioMute(!current_muted, true); } return messages_return::handled; } else if( msg == CRCInput::RC_mute_on ) { -#if HAVE_ARM_HARDWARE - if (g_settings.hdmi_cec_volume) - { - hdmi_cec::getInstance()->toggle_mute(); - } - else -#endif g_audioMute->AudioMute(true, true); return messages_return::handled; } else if( msg == CRCInput::RC_mute_off ) { -#if HAVE_ARM_HARDWARE - if (g_settings.hdmi_cec_volume) - { - hdmi_cec::getInstance()->toggle_mute(); - } - else -#endif g_audioMute->AudioMute(false, true); return messages_return::handled;