修复切换config后异常显示pattern问题

This commit is contained in:
xinzhu.yin
2026-05-24 11:37:45 +08:00
parent 29f7d39fe9
commit a903c17cb3
2 changed files with 29 additions and 7 deletions

View File

@@ -309,9 +309,26 @@ def send_fix_pattern(self, mode):
self.log_gui.log("=" * 50, level="separator") self.log_gui.log("=" * 50, level="separator")
# 信号格式设置后等待电视重新锁定 HDMI 信号 # 判定信号是否变化(决定 settle 长度)。
# format_changed=True 表示本次 set_video_mode 的参数与上次不同TV 需要重新锁定 # - SDR/HDRprepare_session 内部已调用 ``apply_signal_format`` → ``set_video_mode``
format_changed = getattr(getattr(self, "ucd", None), "format_changed", True) # 此时 ``format_changed`` 反映本次 vs 上次的差异,可直接读取。
# - screen_moduleprepare_session 只 stage 了 color_info/timing未调用
# ``set_video_mode````format_changed`` 仍是上次测试的陈旧值,按"潜在变化"处理。
# 注意:必须在 prime 提交之前读取,否则 prime 的 set_video_mode 会拿当次
# 参数与刚写入的 ``_last_sent_config`` 比对,得到 False把这个标志覆盖掉。
if mode == "screen_module":
format_changed = True
else:
format_changed = bool(
getattr(getattr(self, "ucd", None), "format_changed", True)
)
# 预热提交prepare_session 仅 stage 了新的 color/timing/pattern
# 真正的 ``pg.apply()`` 要到第一次发图时才发生。提前发送首个 pattern
# 让 TV 在 signal_settle 期间就开始重新锁定信号;
# 否则前 1~2 个 pattern 会落在 TV 锁定窗口里导致测量错误。
self.pattern_service.send_session_pattern(session, 0)
if format_changed: if format_changed:
signal_settle = max(1.0, float(getattr(self, "signal_settle_time", 5.0))) signal_settle = max(1.0, float(getattr(self, "signal_settle_time", 5.0)))
self.log_gui.log( self.log_gui.log(
@@ -355,8 +372,13 @@ def send_fix_pattern(self, mode):
else: else:
self.log_gui.log(f"发送第 {i+1}/{total_patterns} 个图案...", level="info") self.log_gui.log(f"发送第 {i+1}/{total_patterns} 个图案...", level="info")
self.pattern_service.send_session_pattern(session, i) # 首图已在 prime 阶段发送并经 signal_settle 稳定,无需重发也无需再等
time.sleep(settle_time) # settle_time后续 pattern 走正常发图 + 等待。
if i == 0:
pass
else:
self.pattern_service.send_session_pattern(session, i)
time.sleep(settle_time)
# 测量数据 # 测量数据
if mode == "custom": if mode == "custom":

View File

@@ -1,5 +1,5 @@
{ {
"current_test_type": "sdr_movie", "current_test_type": "screen_module",
"test_types": { "test_types": {
"screen_module": { "screen_module": {
"name": "屏模组性能测试", "name": "屏模组性能测试",
@@ -9,7 +9,7 @@
"cct", "cct",
"contrast" "contrast"
], ],
"timing": "DMT 1600x 1200 @ 60Hz", "timing": "OVT 1280x 720 @ 120Hz",
"color_format": "RGB", "color_format": "RGB",
"bpc": 8, "bpc": 8,
"colorimetry": "sRGB", "colorimetry": "sRGB",