move external volume control to internal volume/mute handler

Signed-off-by: Thilo Graf <dbt@novatux.de>
This commit is contained in:
TangoCash
2018-10-19 19:39:36 +02:00
committed by Thilo Graf
parent 2b0b867e2e
commit b35c344c11
3 changed files with 24 additions and 43 deletions

View File

@@ -34,6 +34,7 @@
#include <system/debug.h> #include <system/debug.h>
/* compat header from zapit/include */ /* compat header from zapit/include */
#include <audio.h> #include <audio.h>
#include <video.h>
#include <system/settings.h> #include <system/settings.h>
#include <system/helpers.h> #include <system/helpers.h>
#include <daemonc/remotecontrol.h> #include <daemonc/remotecontrol.h>
@@ -113,6 +114,10 @@ void CVolume::setVolume(const neutrino_msg_t key)
neutrino_msg_data_t data = 0; neutrino_msg_data_t data = 0;
uint64_t timeoutEnd = 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; int vol = g_settings.current_volume;
do { do {
@@ -132,6 +137,15 @@ void CVolume::setVolume(const neutrino_msg_t key)
g_RCInput->getMsg(&tmp, &data, 0); g_RCInput->getMsg(&tmp, &data, 0);
if (tmp != CRCInput::RC_timeout) if (tmp != CRCInput::RC_timeout)
g_RCInput->postMsg(tmp, data); 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 } else
do_vol = true; do_vol = true;
if (CNeutrinoApp::getInstance()->isMuted() && (dir > 0 || g_settings.current_volume > 0)) { if (CNeutrinoApp::getInstance()->isMuted() && (dir > 0 || g_settings.current_volume > 0)) {

View File

@@ -30,6 +30,7 @@
#endif #endif
#include <global.h> #include <global.h>
#include <neutrino.h> #include <neutrino.h>
#include <video.h>
#include <driver/display.h> #include <driver/display.h>
#include <gui/infoclock.h> #include <gui/infoclock.h>
#include <gui/volumebar.h> #include <gui/volumebar.h>
@@ -37,6 +38,8 @@
#include <driver/display.h> #include <driver/display.h>
#include <system/helpers.h>
CAudioMute::CAudioMute():CComponentsPicture(0, 0, NEUTRINO_ICON_MUTED) CAudioMute::CAudioMute():CComponentsPicture(0, 0, NEUTRINO_ICON_MUTED)
{ {
y_old = -1; y_old = -1;
@@ -61,6 +64,11 @@ void CAudioMute::AudioMute(int newValue, bool isEvent)
CVFD::getInstance()->setMuted(newValue); CVFD::getInstance()->setMuted(newValue);
neutrino->setCurrentMuted(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); g_Zapit->muteAudio(newValue);
if( isEvent && ( neutrino->getMode() != NeutrinoModes::mode_scart ) && ( neutrino->getMode() != NeutrinoModes::mode_pic)) if( isEvent && ( neutrino->getMode() != NeutrinoModes::mode_scart ) && ( neutrino->getMode() != NeutrinoModes::mode_pic))

View File

@@ -1219,7 +1219,8 @@ void CNeutrinoApp::saveSetup(const char * fname)
configfile.setInt32( "hdmi_cec_standby", g_settings.hdmi_cec_standby ); configfile.setInt32( "hdmi_cec_standby", g_settings.hdmi_cec_standby );
configfile.setInt32( "hdmi_cec_volume", g_settings.hdmi_cec_volume ); 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( "current_volume_step", g_settings.current_volume_step );
configfile.setInt32( "start_volume", g_settings.start_volume ); configfile.setInt32( "start_volume", g_settings.start_volume );
configfile.setInt32("audio_volume_percent_ac3", g_settings.audio_volume_percent_ac3); configfile.setInt32("audio_volume_percent_ac3", g_settings.audio_volume_percent_ac3);
@@ -2845,13 +2846,6 @@ void CNeutrinoApp::RealRun()
showInfo(); showInfo();
break; break;
case SNeutrinoSettings::VOLUME: 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); g_volume->setVolume(msg);
break; break;
default: /* SNeutrinoSettings::ZAP */ default: /* SNeutrinoSettings::ZAP */
@@ -2959,13 +2953,6 @@ void CNeutrinoApp::RealRun()
showInfo(); showInfo();
break; break;
case SNeutrinoSettings::VOLUME: 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); g_volume->setVolume(msg);
break; break;
default: /* SNeutrinoSettings::ZAP */ 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)) 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); g_volume->setVolume(msg);
return messages_return::handled; return messages_return::handled;
@@ -3484,37 +3464,16 @@ int CNeutrinoApp::handleMsg(const neutrino_msg_t _msg, neutrino_msg_data_t data)
} }
else { else {
//mute //mute
#if HAVE_ARM_HARDWARE
if (g_settings.hdmi_cec_volume)
{
hdmi_cec::getInstance()->toggle_mute();
}
else
#endif
g_audioMute->AudioMute(!current_muted, true); g_audioMute->AudioMute(!current_muted, true);
} }
return messages_return::handled; return messages_return::handled;
} }
else if( msg == CRCInput::RC_mute_on ) { 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); g_audioMute->AudioMute(true, true);
return messages_return::handled; return messages_return::handled;
} }
else if( msg == CRCInput::RC_mute_off ) { 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); g_audioMute->AudioMute(false, true);
return messages_return::handled; return messages_return::handled;