From f116811a4e9748722a2f1b8178ebfe68737b57d0 Mon Sep 17 00:00:00 2001 From: Christian Hoffmann Date: Wed, 17 Feb 2021 01:17:31 +0100 Subject: [PATCH] Client: Always update gain levels Previously, gain levels had only been updated when a channel's name changed. This leads to missing gain level updates when reconnecting to a restarted server. Therefore, always update gain levels when receiving a new channel list. Fixes #955. Signed-off-by: Christian Hoffmann --- src/audiomixerboard.cpp | 43 +++++++++++++++++++---------------------- 1 file changed, 20 insertions(+), 23 deletions(-) diff --git a/src/audiomixerboard.cpp b/src/audiomixerboard.cpp index 5ffa00f779..5a1ebe2da4 100755 --- a/src/audiomixerboard.cpp +++ b/src/audiomixerboard.cpp @@ -1182,30 +1182,27 @@ void CAudioMixerBoard::ApplyNewConClientList ( CVector& vecChanInf } } - // restore gain (if new name is different from the current one) - if ( vecpChanFader[i]->GetReceivedName().compare ( vecChanInfo[j].strName ) ) + // restore gain: + // the text has actually changed, search in the list of + // stored settings if we have a matching entry + int iStoredFaderLevel; + int iStoredPanValue; + bool bStoredFaderIsSolo; + bool bStoredFaderIsMute; + int iGroupID; + + if ( GetStoredFaderSettings ( vecChanInfo[j].strName, + iStoredFaderLevel, + iStoredPanValue, + bStoredFaderIsSolo, + bStoredFaderIsMute, + iGroupID ) ) { - // the text has actually changed, search in the list of - // stored settings if we have a matching entry - int iStoredFaderLevel; - int iStoredPanValue; - bool bStoredFaderIsSolo; - bool bStoredFaderIsMute; - int iGroupID; - - if ( GetStoredFaderSettings ( vecChanInfo[j].strName, - iStoredFaderLevel, - iStoredPanValue, - bStoredFaderIsSolo, - bStoredFaderIsMute, - iGroupID ) ) - { - vecpChanFader[i]->SetFaderLevel ( iStoredFaderLevel, true ); // suppress group update - vecpChanFader[i]->SetPanValue ( iStoredPanValue ); - vecpChanFader[i]->SetFaderIsSolo ( bStoredFaderIsSolo ); - vecpChanFader[i]->SetFaderIsMute ( bStoredFaderIsMute ); - vecpChanFader[i]->SetGroupID ( iGroupID ); // Must be the last to be set in the fader! - } + vecpChanFader[i]->SetFaderLevel ( iStoredFaderLevel, true ); // suppress group update + vecpChanFader[i]->SetPanValue ( iStoredPanValue ); + vecpChanFader[i]->SetFaderIsSolo ( bStoredFaderIsSolo ); + vecpChanFader[i]->SetFaderIsMute ( bStoredFaderIsMute ); + vecpChanFader[i]->SetGroupID ( iGroupID ); // Must be the last to be set in the fader! } // set the channel infos