修复切换config后异常显示pattern问题
This commit is contained in:
@@ -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/HDR:prepare_session 内部已调用 ``apply_signal_format`` → ``set_video_mode``,
|
||||||
format_changed = getattr(getattr(self, "ucd", None), "format_changed", True)
|
# 此时 ``format_changed`` 反映本次 vs 上次的差异,可直接读取。
|
||||||
|
# - screen_module:prepare_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":
|
||||||
|
|||||||
@@ -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",
|
||||||
|
|||||||
Reference in New Issue
Block a user