Skip to content

1.5.0

Choose a tag to compare

@non266 non266 released this 17 Oct 14:46
· 55 commits to main since this release

1.5.0

新增

  • 睡眠定时器(播放 → 睡眠定时器):听完这一首就停 / 15 · 30 · 60 分钟后停 / 自定义分钟数… / 取消,子菜单第一行写着还剩多久。到点暂停(不是退出程序),状态栏说明是它让播放停的;听完这一首就停 在这一首自然播完时不再往下播(优先于单曲循环与「下一首播放」队列)。定时器不落盘。
  • 随机播放改成"一轮不重复"(洗牌袋):把列表洗一遍、每首播一次再重洗,换一轮也不会立刻重复上一首。上一个 仍回列表里的上一项(这条没变)。

修复

  • 换画面旋转内核时偶发硬崩(0xC0000005,1.4.0 时期全量 5 次里崩 2 次):根因是每次 MediaPlayer.Stop() 都会漏掉一整套 libvlc 原生线程(实测每次 +35 个 OS 线程 / +150 个句柄,而且不还回来)——换一次旋转就 Stop() 一次,攒到上千线程之后某个 libvlc 调用就崩。现在每个旋转值缓存"内核 + 它自己的播放器"、换内核只暂停旧播放器、收尾只释放当前那个;顺带把旋转切换变快了(冒烟第 13 步 26 秒 → 12 秒)。
  • 「播放 → 随机播放」菜单项原来点不动(设计器里没 CheckOnClick、也没有 Click 处理器)——已修。
  • 构建基线:去掉唯一一处 C# 14 写法、LangVersion 钉成 12.0,.NET 8 SDK 也能构建(0 警告 0 错误)。
  • 原地升级不再留旧文件:运行时补丁号变化会让 mscordaccore_amd64_amd64_8.0.*.dll 换名字,安装器加了 [InstallDelete] 先清旧的。

验收

  • 全量冒烟仍是 20 步(新检查都挂在第 6 步里),release-check 全绿(148 秒,Debug / Release / 冒烟三个工程 0 警告 0 错误)。
  • 便携版在自己的目录里 20 步一次过关;安装程序原地升级 673 个文件、载荷与便携版逐文件 SHA256 一致;安装目录 20 步一次过关;卸载后 %AppData%\播放器 15 个文件逐字节没变。
  • 已知边界(详见 README):睡眠定时器不落盘、到点只暂停;随机播放的"一轮"从正在播的这一首之后算起;上一个 不是随机历史。