forked from sdr/gr-osmosdr
fix gain mode caching
As pointed out in https://osmocom.org/issues/5562 and previously discussed in https://github.com/gqrx-sdr/gqrx/issues/979 the current cache fails to set 0, because the first map lookup of the key that does not exist (and is created by accessing it using operator[]) returns 0.
This commit is contained in:
parent
8b33260d66
commit
b581c621fe
|
@ -410,7 +410,7 @@ bool sink_impl::set_gain_mode( bool automatic, size_t chan )
|
|||
for (sink_iface *dev : _devs)
|
||||
for (size_t dev_chan = 0; dev_chan < dev->get_num_channels(); dev_chan++)
|
||||
if ( chan == channel++ ) {
|
||||
if ( _gain_mode[ chan ] != automatic ) {
|
||||
if ( (_gain_mode.count(chan) == 0) || (_gain_mode[ chan ] != automatic) ) {
|
||||
_gain_mode[ chan ] = automatic;
|
||||
bool mode = dev->set_gain_mode( automatic, dev_chan );
|
||||
if (!automatic) // reapply gain value when switched to manual mode
|
||||
|
|
|
@ -617,7 +617,7 @@ bool source_impl::set_gain_mode( bool automatic, size_t chan )
|
|||
for (source_iface *dev : _devs)
|
||||
for (size_t dev_chan = 0; dev_chan < dev->get_num_channels(); dev_chan++)
|
||||
if ( chan == channel++ ) {
|
||||
if ( _gain_mode[ chan ] != automatic ) {
|
||||
if ( (_gain_mode.count(chan) == 0) || (_gain_mode[ chan ] != automatic) ) {
|
||||
_gain_mode[ chan ] = automatic;
|
||||
bool mode = dev->set_gain_mode( automatic, dev_chan );
|
||||
if (!automatic) // reapply gain value when switched to manual mode
|
||||
|
|
Loading…
Reference in New Issue