client: 槽位对应队伍,不再按 id 顺序对号入座
裁判端两个槽位的语义应该是"队伍一 / 队伍二",而不是"第 N 块发现的板子"。之前 两者混为一谈,出现两个都会被现场误读成故障的现象: 1. **两块槽位显示同一块板。** 每轮都从 `online_cameras()` 取前两个 id 填满两 个槽位,于是只有一块板在场时两边一模一样。裁判会以为两队的图传串了。 2. **板子掉线时画面左右互换。** 低 id 的板子一离线,候选列表缩短,后面那块就 跳到前面的槽位——同样像串线,而实际上只是排序。 规则改成:每轮最多消费一个候选 id;已填且仍在线的槽位不动;掉线的槽位保留它的 id 并显示"离线",等它回来时还在原位。 空槽的提示文案也改准:左槽"等待队伍一的图传"、右槽"等待队伍二的图传",而不是笼 统的"未收到画面"。 顺带修两个假数字:`frames_shown == 0` 时 `stats.width`/`height` 还是默认值 0,界 面上显示成 `0x0`——一个看起来像分辨率的假分辨率;fps 显示 `0.0` 读起来像"板子 卡死了",而真相是"还没收到"。状态行已经写了"已连接,等待画面…",不该再补一个矛 盾的数字。 关于"别把刚掉线的板子又立刻选回同一个槽位"那条过滤:它只在槽位掉线时起作用, 且会跳过当前 id 去找下一个候选,槽位仍然有机会回来。实测唯一那块在推流的板子正 常占用一个槽位,另一槽保留着在线但不推流的真板子——符合预期。
This commit is contained in:
@@ -491,7 +491,7 @@ export component RefereeApp inherits Window {
|
||||
|
||||
VideoPane {
|
||||
frame: root.frame-a;
|
||||
empty-text: root.stats-a.online ? "已连接,等待画面…" : "未收到画面";
|
||||
empty-text: root.stats-a.online ? "已连接,等待画面…" : "等待队伍一的图传";
|
||||
vertical-stretch: 1;
|
||||
horizontal-stretch: 1;
|
||||
preferred-width: 480px;
|
||||
@@ -500,7 +500,8 @@ export component RefereeApp inherits Window {
|
||||
|
||||
VideoPane {
|
||||
frame: root.frame-b;
|
||||
empty-text: root.stats-b.online ? "已连接,等待画面…" : "未收到画面";
|
||||
// 槽位对应队伍,所以空槽要说清在等谁,而不是笼统的"未收到画面"。
|
||||
empty-text: root.stats-b.online ? "已连接,等待画面…" : "等待队伍二的图传";
|
||||
vertical-stretch: 1;
|
||||
horizontal-stretch: 1;
|
||||
preferred-width: 480px;
|
||||
|
||||
Reference in New Issue
Block a user