refactor(plotview): 面板状态/滚动量收敛为唯一派发点,消除 20+ 处手写分支
问题:`Lane` 里 7 种实验性功能各自持有一份 `LanePanelState` 与滚动偏移(共 14 个字段)。 旧实现在每个需要“按种类取用”的地方各写一遍多层嵌套三元式或 switch: - EdgePanelLayoutFor 的 enabled / open / collapsed / storedX / storedY 共 5 条 7 层嵌套三元式(历史上多次因多/少一个右括号编译失败); - 标题栏拖拽、✕ 关闭、滚轮翻页、滚动条拖动、错开序数统计各自再写一遍。 新增一种面板要改 20+ 处,漏一处就是「面板拖不动 / 关不掉 / 滚轮滚不到底」 (MARK、RESAMPLE、CLIP 三种面板都真实踩过)。 改法(PlotViewInternal.hpp 新增唯一派发点): - LanePanelEnabled(lane, kind) - LanePanelStateOf(lane, kind) 可写/只读 - LanePanelScrollOf(lane, kind) 可写/只读 这些 switch **穷举全部 7 种且不写 default**,因此 -Wswitch(属 -Wall)会在新增 EdgePanelKind 而漏登记时直接报警 —— 已用最小程序验证 -Wswitch 确实会报。 调用点改造: - EdgePanelLayoutFor:5 条嵌套三元式 -> 3 行访问器调用;局部 kOrder[] -> kEdgePanelKinds。 - 标题栏拖拽:整个 7 分支 switch -> 一次访问器写入。 - 滚轮翻页:current 的三元式链 -> LanePanelScrollOf;switch 补全 MEAN/MARK 并去掉 default。 - 滚动条拖动:switch 补全 MEAN/MARK 并去掉 default。 - ✕ 关闭:去掉 `case COUNT: default:` 的兜底,改为穷举。 - SetLanePanelCollapsed / LanePanelCollapsed:两个 switch -> 一次访问器。 - 滚轮“是否可滚面板”的 kind 列举改为 `hoveredKind != MARK`。 验证:release / debug 全量编译零 warning;产物大小不变(793,088 B,逻辑等价)。
This commit is contained in:
1 parent
94fc1c45da
commit
7a3fefb9c2
5 files changed
+173
-181
No files matched your search
@@ -54,3 +54,28 @@
|
||||
**验证**:release + debug **全量重建**(删 `*.o`/`*.d`)零 error 零 warning;
|
||||
map 中 `cp-demangle.o` 已无 `.text` 段分配。
|
||||
|
||||
### P2 Release 关闭异步展开表 + 修正 Debug 构建参数 —— ✅ 完成(提交 `94fc1c4`)
|
||||
|
||||
**改动**
|
||||
|
||||
1. 新增 `RELEASE_ONLY_OPT = -fno-asynchronous-unwind-tables`,**只**加在 Release 的两条
|
||||
编译规则上。`-fno-exceptions` 下绝大多数函数不再需要 `.pdata`/`.xdata`。
|
||||
* 代价(已评估接受):Release 崩溃时 WER 拿不到可靠调用栈;不打印栈回溯的程序
|
||||
功能不受影响,Debug 构建保留完整展开表。
|
||||
* `-fno-unwind-tables`(全关)会链接失败,不采用。
|
||||
2. **修正真实缺陷**:`DEBUG_OPT = -O0` 定义了却**从未被使用** —— Debug 的两条编译规则
|
||||
误用 `$(RELEASE_OPT)`(`-Oz`),且全程没有 `-g`。所谓 "Debug 构建" 其实只是
|
||||
"不 strip 的 Release",根本无法调试。现改用 `$(DEBUG_OPT) -g`,链接也加 `-g`。
|
||||
|
||||
**实测**
|
||||
|
||||
| 指标 | 改前 | 改后 |
|
||||
| --- | --- | --- |
|
||||
| Release | 829,440 B | **793,088 B**(−36,352) |
|
||||
| `.pdata` | 30,420 B | 12,684 B |
|
||||
| `.xdata` | 28,904 B | 10,156 B |
|
||||
| Debug | 1,734,578 B | 5,992,064 B(真实 `-O0 -g`,属预期) |
|
||||
|
||||
**验证**:release 与 debug 均全量重建,零 error 零 warning(`-O0` 下也没有新警告)。
|
||||
|
||||
|
||||
Reference in new issue
Block a user