Skip to content

Conversation

@robertkill
Copy link
Contributor

Fixed an issue where the lock screen would be triggered during screensaver preview mode. Added a check for m_previewing flag to ensure lock screen is not activated when previewing screensavers.

The previous logic would trigger lock screen when screensaver stopped if certain conditions were met, including when the screensaver was awakened by the window itself. However, this didn't account for preview mode where users are just testing screensavers and shouldn't be locked out. Added !m_previewing condition to prevent lock screen activation during preview sessions.

Log: Fixed screensaver preview triggering unintended lock screen

Influence:

  1. Test screensaver preview functionality - ensure preview works without locking screen
  2. Test normal screensaver timeout - ensure lock screen still activates after timeout
  3. Test manual lock screen activation - ensure it still works when requested
  4. Verify screensaver stops correctly in both preview and normal modes
  5. Test awakening from screensaver - ensure lock screen activates only when appropriate

fix: 修复屏保预览时触发锁屏的问题

修复了在屏保预览模式下会触发锁屏的问题。添加了对 m_previewing 标志的检
查,确保在预览屏保时不会激活锁屏。

之前的逻辑会在屏保停止时触发锁屏,前提是满足某些条件,包括当屏保被窗口自
身唤醒时。但这没有考虑到预览模式,用户只是测试屏保效果,不应该被锁定。添
加了 !m_previewing 条件来防止在预览会话期间激活锁屏。

Log: 修复屏保预览时意外触发锁屏的问题

Influence:

  1. 测试屏保预览功能 - 确保预览工作正常且不会锁定屏幕
  2. 测试正常屏保超时 - 确保超时后锁屏仍然激活
  3. 测试手动锁屏激活 - 确保请求锁屏时仍然正常工作
  4. 验证屏保在预览和正常模式下都能正确停止
  5. 测试从屏保唤醒 - 确保只在适当时机激活锁屏

PMS: BUG-345823

Fixed an issue where the lock screen would be triggered during
screensaver preview mode. Added a check for m_previewing flag to ensure
lock screen is not activated when previewing screensavers.

The previous logic would trigger lock screen when screensaver stopped if
certain conditions were met, including when the screensaver was awakened
by the window itself. However, this didn't account for preview mode
where users are just testing screensavers and shouldn't be locked out.
Added !m_previewing condition to prevent lock screen activation during
preview sessions.

Log: Fixed screensaver preview triggering unintended lock screen

Influence:
1. Test screensaver preview functionality - ensure preview works without
locking screen
2. Test normal screensaver timeout - ensure lock screen still activates
after timeout
3. Test manual lock screen activation - ensure it still works when
requested
4. Verify screensaver stops correctly in both preview and normal modes
5. Test awakening from screensaver - ensure lock screen activates only
when appropriate

fix: 修复屏保预览时触发锁屏的问题

修复了在屏保预览模式下会触发锁屏的问题。添加了对 m_previewing 标志的检
查,确保在预览屏保时不会激活锁屏。

之前的逻辑会在屏保停止时触发锁屏,前提是满足某些条件,包括当屏保被窗口自
身唤醒时。但这没有考虑到预览模式,用户只是测试屏保效果,不应该被锁定。添
加了 !m_previewing 条件来防止在预览会话期间激活锁屏。

Log: 修复屏保预览时意外触发锁屏的问题

Influence:
1. 测试屏保预览功能 - 确保预览工作正常且不会锁定屏幕
2. 测试正常屏保超时 - 确保超时后锁屏仍然激活
3. 测试手动锁屏激活 - 确保请求锁屏时仍然正常工作
4. 验证屏保在预览和正常模式下都能正确停止
5. 测试从屏保唤醒 - 确保只在适当时机激活锁屏

PMS: BUG-345823
@deepin-ci-robot
Copy link

deepin pr auto review

我来对这段代码的修改进行审查:

  1. 代码逻辑审查:
  • 增加了 !m_previewing 条件判断,这是合理的,因为预览模式下确实不应该触发锁屏
  • 保持了原有的 m_lockScreenAtAwake!m_lockScreenTimer.isActive() 条件
  • 保留了 (lock || qobject_cast<ScreenSaverWindow*>(sender())) 的判断逻辑
  1. 代码质量:
  • 代码注释更新得很及时,准确反映了新增的条件
  • 条件判断的顺序合理,从简单到复杂
  • 代码格式保持一致
  1. 代码性能:
  • 新增的条件 !m_previewing 是一个简单的布尔值判断,对性能影响很小
  • 条件判断采用短路逻辑,一旦前面的条件不满足就会立即返回
  1. 代码安全:
  • 新增的预览模式检查增加了安全性,防止在预览时意外触发锁屏
  • 保持了原有的类型安全检查 qobject_cast<ScreenSaverWindow*>(sender())

改进建议:

  1. 考虑将复杂的条件判断拆分成更小的、具有语义的函数,例如:
bool shouldLockScreen() const {
    return m_lockScreenAtAwake 
        && !m_lockScreenTimer.isActive() 
        && !m_previewing
        && (lock || qobject_cast<ScreenSaverWindow*>(sender()));
}
  1. 可以考虑添加更多的日志记录,帮助调试预览模式下的行为:
qDebug() << "Checking lock screen conditions:" 
         << "lockScreenAtAwake:" << m_lockScreenAtAwake
         << "timerActive:" << m_lockScreenTimer.isActive()
         << "previewing:" << m_previewing
         << "lock:" << lock;
  1. 建议为 m_previewing 添加文档注释,说明其作用和预期的行为模式。

总的来说,这是一个很好的改进,增加了预览模式的安全检查,代码质量良好,逻辑清晰。

@deepin-ci-robot
Copy link

[APPROVALNOTIFIER] This PR is NOT APPROVED

This pull-request has been approved by: lzwind, mhduiy, robertkill

The full list of commands accepted by this bot can be found here.

Details Needs approval from an approver in each of these files:

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

@robertkill
Copy link
Contributor Author

/merge

@deepin-bot
Copy link
Contributor

deepin-bot bot commented Jan 6, 2026

This pr cannot be merged! (status: unstable)

@lzwind lzwind merged commit b01b881 into linuxdeepin:master Jan 6, 2026
15 of 17 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants