fix: fix audio input volume initialization issue#1058
fix: fix audio input volume initialization issue#1058fly602 wants to merge 1 commit intolinuxdeepin:masterfrom
Conversation
The refresh() function now calls GetPriorityManager().Init(a.cards) to ensure audio configuration is properly initialized during refresh operations. This addresses the issue where audio input volume was not initializing to 50% by ensuring the priority manager configuration is loaded during refresh cycles. Previously, the priority manager initialization was only called during the initial audio system setup in the init() function. However, when the system refreshes audio devices or configurations, the priority settings were not being reapplied, leading to incorrect volume initialization for audio inputs. Log: Fixed audio input volume initialization to correctly set to 50% on startup Influence: 1. Test audio input volume initialization after system boot 2. Verify audio input volume is correctly set to 50% when new audio devices are connected 3. Check that audio configuration persists correctly during refresh operations 4. Test with multiple audio input devices to ensure consistent behavior 5. Verify volume settings are maintained after audio system restarts fix: 修复音频输入音量初始化问题 refresh() 函数现在会调用 GetPriorityManager().Init(a.cards) 来确保在刷新 操作期间正确初始化音频配置。这解决了音频输入音量未初始化为50%的问题,通 过在刷新周期中加载优先级管理器配置。 之前优先级管理器初始化仅在 init() 函数的初始音频系统设置期间调用。然而, 当系统刷新音频设备或配置时,优先级设置没有被重新应用,导致音频输入音量初 始化不正确。 Log: 修复音频输入音量初始化,确保启动时正确设置为50% PMS: BUG-347769 Influence: 1. 测试系统启动后的音频输入音量初始化 2. 验证连接新音频设备时音频输入音量正确设置为50% 3. 检查音频配置在刷新操作期间是否正确保持 4. 使用多个音频输入设备测试以确保一致行为 5. 验证音频系统重启后音量设置是否保持
|
[APPROVALNOTIFIER] This PR is NOT APPROVED This pull-request has been approved by: fly602 The full list of commands accepted by this bot can be found here. DetailsNeeds approval from an approver in each of these files:Approvers can indicate their approval by writing |
Reviewer's guide (collapsed on small PRs)Reviewer's GuideThis PR ensures the audio priority manager is re‑initialized during audio refresh cycles instead of only at initial setup, so that audio input volumes consistently initialize to 50% when devices or configurations change. Sequence diagram for audio refresh with priority manager reinitializationsequenceDiagram
actor User
participant Audio
participant PriorityManager
User ->> Audio: triggerRefresh()
Audio ->> Audio: refreshSources()
Audio ->> Audio: refershSinkInputs()
Audio ->> PriorityManager: Init(cards)
Audio ->> Audio: refreshDefaultSinkSource()
Audio ->> Audio: refreshBluetoothModeOpts()
Updated class diagram for Audio and PriorityManager interactionclassDiagram
class Audio {
+refresh()
+init() error
+refreshSources()
+refershSinkInputs()
+refreshDefaultSinkSource()
+refreshBluetoothModeOpts()
ctx
eventChan
stateChan
cards
}
class PriorityManager {
+Init(cards)
}
Audio --> PriorityManager : uses
File-Level Changes
Tips and commandsInteracting with Sourcery
Customizing Your ExperienceAccess your dashboard to:
Getting Help
|
deepin pr auto review这段代码的 1. 语法逻辑
2. 代码质量
3. 代码性能
4. 代码安全
总结建议这段代码的修改意图可能是为了在设备变动时动态更新优先级配置。为了避免逻辑混淆和潜在的性能问题,建议:
修改后的代码示例建议: func (a *Audio) refresh() {
a.refreshSources()
logger.Debug("refresh sinkinputs")
a.refreshSinkInputs() // 修正拼写
// 使用更明确的语义,并确保线程安全
logger.Debug("update priority config based on cards")
if pm := GetPriorityManager(); pm != nil {
pm.UpdatePriorities(a.cards)
}
logger.Debug("refresh default")
a.refreshDefaultSinkSource()
// ...
} |
There was a problem hiding this comment.
Hey - I've left some high level feedback:
- By moving
GetPriorityManager().Init(a.cards)frominit()torefresh(), ensure thatrefresh()is always invoked during startup so that priority configuration is initialized before any audio operations that depend on it. - Since
GetPriorityManager().Init(a.cards)is now called on every refresh, confirm thatInitis cheap and idempotent, or consider a guard (e.g. only re-init whena.cardschanges) to avoid unnecessary repeated initialization work during frequent refreshes.
Prompt for AI Agents
Please address the comments from this code review:
## Overall Comments
- By moving `GetPriorityManager().Init(a.cards)` from `init()` to `refresh()`, ensure that `refresh()` is always invoked during startup so that priority configuration is initialized before any audio operations that depend on it.
- Since `GetPriorityManager().Init(a.cards)` is now called on every refresh, confirm that `Init` is cheap and idempotent, or consider a guard (e.g. only re-init when `a.cards` changes) to avoid unnecessary repeated initialization work during frequent refreshes.Help me be more useful! Please click 👍 or 👎 on each comment and I'll use the feedback to improve your reviews.
The refresh() function now calls GetPriorityManager().Init(a.cards) to ensure audio configuration is properly initialized during refresh operations. This addresses the issue where audio input volume was not initializing to 50% by ensuring the priority manager configuration is loaded during refresh cycles.
Previously, the priority manager initialization was only called during the initial audio system setup in the init() function. However, when the system refreshes audio devices or configurations, the priority settings were not being reapplied, leading to incorrect volume initialization for audio inputs.
Log: Fixed audio input volume initialization to correctly set to 50% on startup
Influence:
fix: 修复音频输入音量初始化问题
refresh() 函数现在会调用 GetPriorityManager().Init(a.cards) 来确保在刷新 操作期间正确初始化音频配置。这解决了音频输入音量未初始化为50%的问题,通
过在刷新周期中加载优先级管理器配置。
之前优先级管理器初始化仅在 init() 函数的初始音频系统设置期间调用。然而,
当系统刷新音频设备或配置时,优先级设置没有被重新应用,导致音频输入音量初
始化不正确。
Log: 修复音频输入音量初始化,确保启动时正确设置为50%
PMS: BUG-347769
Influence:
Summary by Sourcery
Bug Fixes: