Files
StellarX-kaifa/开发记录/BUG/BUG-20260206-0001-对话框打开时持续触发全量重绘.md

1.9 KiB
Raw Permalink Blame History

BUG-20260206-0001

适用场景:记录问题本身,不展开完整修复方案。修复内容写入对应的 Fix 文档。

基本信息

  • ID: BUG-20260206-0001
  • 标题: 对话框打开时持续触发全量重绘
  • 状态:已修复
  • 严重性:S3
  • 优先级:P2
  • 模块: Window
  • 版本 / 分支: v3.0.0 / master
  • 环境: Windows 10/11 x64 + Visual Studio 2022(MSVC)Debug / Release
  • 发现人: 用户
  • 关联 Fix ID: Fix-BUG-20260206-0001

问题描述

  • 现象: 对话框保持打开时持续触发全量重绘,重复重绘所有打开的对话框和可见控件。
  • 影响范围: 对话框打开期间产生不必要的全量绘制,造成性能影响。
  • 期望结果: 只在对话框打开或关闭时触发必要重绘,确保对话框顶层显示并清除关闭残留。
  • 实际结果: 重绘前以“是否有对话框可见或关闭”为依据,导致对话框保持可见时持续触发重绘。

复现信息

  • 前置条件:[可选] 存在可弹出的对话框。
  • 复现步骤:
  1. 触发对话框弹出。
  2. 保持对话框打开。
  3. 观察日志中是否持续输出全量重绘相关记录。
  • 复现概率:必现
  • 最小复现 Demo:触发任意对话框即可。
  • 证据:PDF 日志中同一时间片持续出现“对话框打开/关闭,触发全量重绘”。

初步分析

  • 疑似位置: Window::runEventLoop()
  • 触发条件: 对话框处于可见状态且事件循环持续运行。
  • 相关线索:
    • 相关变量为 needredraw。
    • 重绘判断基于“是否存在可见对话框”,而不是“是否刚刚打开 / 关闭对话框”。
  • 最近相关改动:[可选]

跟踪信息

  • 首次发现时间: 2026-02-06
  • 最后更新时间: 2026-09-19(从 PDF 整理入库)
  • 修复版本: v3.0.1
  • 验证版本:[可选] v3.0.1
  • 备注:[可选] 来源原始 ID 为 BUG-20260206;PDF 未包含 -XXXX 后缀,入库时补充序号。