mirror of
https://github.com/linuxdeepin/dde-dock.git
synced 2025-06-04 09:23:03 +00:00
fix: 解决任务栏音量和控制中心显示不一致问题
1.SoundApplet.cpp中defaultSinkChanged()信号先触发然后再设置浮框slider当前值导致sounditem.cpp中m_applet->volumeValue()获取的总是切换前的数据. 2.输出音频设备切换时SoundApplet.cpp中onDefaultSinkChanged()比increaseVolumeChanged()先执行,导致当声音输出设备开启音量增强且音量值超过100时,切换设备后,获取slider的当前值总是100. 3.设置完最大值后需要重新设置当前值,需要更新左键点击浮框slider当前值. Log: 修复任务栏声音插件悬浮信息异常问题 Bug: https://pms.uniontech.com/zentao/bug-view-90297.html Change-Id: I2459b8418c9872da1f0a9f7c26bb7494ee225d31
This commit is contained in:
parent
52e7de8198
commit
10a774288f
@ -296,8 +296,8 @@ void SoundApplet::onDefaultSinkChanged()
|
||||
}
|
||||
activePort(portId,cardId);
|
||||
|
||||
emit defaultSinkChanged(m_defSinkInter);
|
||||
onVolumeChanged(m_defSinkInter->volume());
|
||||
emit defaultSinkChanged(m_defSinkInter);
|
||||
}
|
||||
|
||||
void SoundApplet::onVolumeChanged(double volume)
|
||||
@ -381,7 +381,15 @@ void SoundApplet::cardsChanged(const QString &cards)
|
||||
|
||||
void SoundApplet::increaseVolumeChanged()
|
||||
{
|
||||
// 触发VolumeSlider::valueChanged
|
||||
m_volumeSlider->setMaximum(m_audioInter->maxUIVolume() * 100.0f);
|
||||
|
||||
// onDefaultSinkChanged()比increaseVolumeChanged()先执行,设置完最大值后需要重新设置当前值
|
||||
if (m_defSinkInter) {
|
||||
// 规避因开启声音增强,声音值超过100后,关闭声音增强后读取到数据为旧数据的问题
|
||||
if (m_audioInter->increaseVolume())
|
||||
m_volumeSlider->setValue(std::min(150, qRound(m_defSinkInter->volume() * 100.0)));
|
||||
}
|
||||
}
|
||||
|
||||
void SoundApplet::refreshIcon()
|
||||
|
@ -65,7 +65,10 @@ SoundItem::SoundItem(QWidget *parent)
|
||||
|
||||
QWidget *SoundItem::tipsWidget()
|
||||
{
|
||||
refreshTips(m_applet->volumeValue(), true);
|
||||
if (m_sinkInter)
|
||||
refreshTips(std::min(150, qRound(m_sinkInter->volume() * 100.0)), true);
|
||||
else
|
||||
refreshTips(m_applet->volumeValue(), true);
|
||||
|
||||
m_tipsLabel->resize(m_tipsLabel->sizeHint().width() + 10,
|
||||
m_tipsLabel->sizeHint().height());
|
||||
@ -237,5 +240,9 @@ void SoundItem::refreshTips(const int volume, const bool force)
|
||||
void SoundItem::sinkChanged(DBusSink *sink)
|
||||
{
|
||||
m_sinkInter = sink;
|
||||
refresh(m_applet->volumeValue());
|
||||
|
||||
if (m_sinkInter)
|
||||
refresh(std::min(150, qRound(m_sinkInter->volume() * 100.0)));
|
||||
else
|
||||
refresh(m_applet->volumeValue());
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user