From b6da74413a23e4c77d4381ed2ddeaf6949ded5bb Mon Sep 17 00:00:00 2001 From: montellese Date: Thu, 8 Jan 2015 23:37:47 +0100 Subject: [PATCH] CGUIDialogAudioSubtitleSettings: enable volume and volume amplification settings when passthrough is enabled but playback is not using passthrough --- .../dialogs/GUIDialogAudioSubtitleSettings.cpp | 13 +++++++++++-- xbmc/video/dialogs/GUIDialogAudioSubtitleSettings.h | 2 ++ 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/xbmc/video/dialogs/GUIDialogAudioSubtitleSettings.cpp b/xbmc/video/dialogs/GUIDialogAudioSubtitleSettings.cpp index aea90e8948f70..54f0fd3448aec 100644 --- a/xbmc/video/dialogs/GUIDialogAudioSubtitleSettings.cpp +++ b/xbmc/video/dialogs/GUIDialogAudioSubtitleSettings.cpp @@ -293,9 +293,13 @@ void CGUIDialogAudioSubtitleSettings::InitializeSettings() g_application.m_pPlayer->GetSubtitleCapabilities(m_subCaps); } + // register IsPlayingPassthrough condition + m_settingsManager->AddCondition("IsPlayingPassthrough", IsPlayingPassthrough); + CSettingDependency dependencyAudioOutputPassthroughDisabled(SettingDependencyTypeEnable, m_settingsManager); - dependencyAudioOutputPassthroughDisabled.And() - ->Add(CSettingDependencyConditionPtr(new CSettingDependencyCondition(SETTING_AUDIO_PASSTHROUGH, "false", SettingDependencyOperatorEquals, false, m_settingsManager))); + dependencyAudioOutputPassthroughDisabled.Or() + ->Add(CSettingDependencyConditionPtr(new CSettingDependencyCondition(SETTING_AUDIO_PASSTHROUGH, "false", SettingDependencyOperatorEquals, false, m_settingsManager))) + ->Add(CSettingDependencyConditionPtr(new CSettingDependencyCondition("IsPlayingPassthrough", "", "", true, m_settingsManager))); SettingDependencies depsAudioOutputPassthroughDisabled; depsAudioOutputPassthroughDisabled.push_back(dependencyAudioOutputPassthroughDisabled); @@ -406,6 +410,11 @@ void CGUIDialogAudioSubtitleSettings::AddSubtitleStreams(CSettingGroup *group, c AddSpinner(group, settingId, 462, 0, m_subtitleStream, SubtitleStreamsOptionFiller); } +bool CGUIDialogAudioSubtitleSettings::IsPlayingPassthrough(const std::string &condition, const std::string &value, const CSetting *setting) +{ + return g_application.m_pPlayer->IsPassthrough(); +} + void CGUIDialogAudioSubtitleSettings::AudioStreamsOptionFiller(const CSetting *setting, std::vector< std::pair > &list, int ¤t, void *data) { int audioStreamCount = g_application.m_pPlayer->GetAudioStreamCount(); diff --git a/xbmc/video/dialogs/GUIDialogAudioSubtitleSettings.h b/xbmc/video/dialogs/GUIDialogAudioSubtitleSettings.h index 275fb990b2c82..47847a1d2f280 100644 --- a/xbmc/video/dialogs/GUIDialogAudioSubtitleSettings.h +++ b/xbmc/video/dialogs/GUIDialogAudioSubtitleSettings.h @@ -53,6 +53,8 @@ class CGUIDialogAudioSubtitleSettings : public CGUIDialogSettingsManualBase void AddAudioStreams(CSettingGroup *group, const std::string &settingId); void AddSubtitleStreams(CSettingGroup *group, const std::string &settingId); + static bool IsPlayingPassthrough(const std::string &condition, const std::string &value, const CSetting *setting); + static void AudioStreamsOptionFiller(const CSetting *setting, std::vector< std::pair > &list, int ¤t, void *data); static void SubtitleStreamsOptionFiller(const CSetting *setting, std::vector< std::pair > &list, int ¤t, void *data);