Skip to content

Commit 9c1c9f0

Browse files
committed
fix: 修复桌宠贴边状态启动异常
1 parent 0d7adb7 commit 9c1c9f0

10 files changed

Lines changed: 46 additions & 8 deletions

File tree

README.en.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -109,7 +109,7 @@ Qt tests need an available Windows desktop session; installer builds require Inn
109109

110110
## Versions
111111

112-
Main app: `1.14.2`; optional pet extension: `0.1.1`. See [GitHub Releases](https://github.com/zensoku142/TokenMeter/releases) for changes and checksums.
112+
Main app: `1.14.2`; optional pet extension: `0.1.3`. See [GitHub Releases](https://github.com/zensoku142/TokenMeter/releases) for changes and checksums.
113113

114114
## License and acknowledgments
115115

README.ja.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -109,7 +109,7 @@ Qt テストには利用可能な Windows デスクトップセッション、
109109

110110
## バージョン
111111

112-
本体 `1.14.2`、任意のペット拡張 `0.1.1`。変更履歴とチェックサムは [GitHub Releases](https://github.com/zensoku142/TokenMeter/releases) にあります。
112+
本体 `1.14.2`、任意のペット拡張 `0.1.3`。変更履歴とチェックサムは [GitHub Releases](https://github.com/zensoku142/TokenMeter/releases) にあります。
113113

114114
## ライセンスと謝辞
115115

README.ko.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -109,7 +109,7 @@ Qt 테스트에는 사용 가능한 Windows 데스크톱 세션이, 설치 파
109109

110110
## 버전
111111

112-
메인 앱 `1.14.2`, 선택적 펫 확장 `0.1.1`. 변경 기록과 체크섬은 [GitHub Releases](https://github.com/zensoku142/TokenMeter/releases)에서 확인하세요.
112+
메인 앱 `1.14.2`, 선택적 펫 확장 `0.1.3`. 변경 기록과 체크섬은 [GitHub Releases](https://github.com/zensoku142/TokenMeter/releases)에서 확인하세요.
113113

114114
## 라이선스 및 감사의 말
115115

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -109,7 +109,7 @@ Qt 测试需要可用的 Windows 桌面会话;生成安装器需要 Inno Setup
109109

110110
## 版本
111111

112-
主程序 `1.14.2`,可选桌宠扩展 `0.1.1`。更新记录与校验文件见 [GitHub Releases](https://github.com/zensoku142/TokenMeter/releases)
112+
主程序 `1.14.2`,可选桌宠扩展 `0.1.3`。更新记录与校验文件见 [GitHub Releases](https://github.com/zensoku142/TokenMeter/releases)
113113

114114
## 许可与致谢
115115

README.zh-TW.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -109,7 +109,7 @@ Qt 測試需要可用的 Windows 桌面工作階段;產生安裝程式需要 I
109109

110110
## 版本
111111

112-
主程式 `1.14.2`,選用桌寵擴充套件 `0.1.1`。更新記錄與校驗檔見 [GitHub Releases](https://github.com/zensoku142/TokenMeter/releases)
112+
主程式 `1.14.2`,選用桌寵擴充套件 `0.1.3`。更新記錄與校驗檔見 [GitHub Releases](https://github.com/zensoku142/TokenMeter/releases)
113113

114114
## 授權與致謝
115115

pet_host/PetWindow.Drag.cs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -166,6 +166,8 @@ private void EndPetGesture(bool cancel)
166166

167167
private bool TrySnapPetToEdge(bool? leftEdge = null)
168168
{
169+
// 内核切换动画时会停止另一画布;首帧初始化完成前调用会解引用空的画布动画。
170+
if (!PetAnimationSlotsReady) return false;
169171
var handle = new WindowInteropHelper(this).Handle;
170172
if (!GetWindowRect(handle, out var rect)) return false;
171173
var work = System.Windows.Forms.Screen.FromHandle(handle).WorkingArea;
@@ -189,6 +191,9 @@ private bool TrySnapPetToEdge(bool? leftEdge = null)
189191
return true;
190192
}
191193

194+
private bool PetAnimationSlotsReady =>
195+
pet?.PetGrid.Tag is IGraph && pet.PetGrid2.Tag is IGraph;
196+
192197
private void ClampDraggedWindow()
193198
{
194199
var handle = new WindowInteropHelper(this).Handle;

pet_host/PetWindow.cs

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -155,7 +155,12 @@ private async Task LoadPet()
155155
pet.MouseMove += (_, e) => quotaCloud.NotifyPointerMovement(PointToScreen(e.GetPosition(this)));
156156
pet.MouseLeave += (_, _) => quotaCloud.NotifyActivity();
157157
ready = true;
158-
if (manualDockedEdge is bool edge) TrySnapPetToEdge(edge);
158+
if (manualDockedEdge is bool edge)
159+
{
160+
// LoadALL 会异步播放启动动画;两个画布都取得首帧后再恢复贴边,避免内核停止空画布。
161+
while (!closing && !PetAnimationSlotsReady) await Task.Delay(50);
162+
if (!closing) TrySnapPetToEdge(edge);
163+
}
159164
InitializeNotifications();
160165
if (pendingUsage is { } usage) UpdateUsage(usage);
161166
UpdateQuotaCloud();

pet_host/README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@
4141

4242
## 独立版本清单
4343

44-
`pet_host/extension.json` 是桌宠版本的唯一来源,当前正式版为 `0.1.2`,最低兼容主程序 `1.14.0-beta.1`,建议配合正式主程序 `1.14.2` 使用,协议版本为 `1`。体验版主程序可发现兼容的预发布扩展,正式版仍只选择稳定包:
44+
`pet_host/extension.json` 是桌宠版本的唯一来源,当前正式版为 `0.1.3`,最低兼容主程序 `1.14.0-beta.1`,建议配合正式主程序 `1.14.2` 使用,协议版本为 `1`。体验版主程序可发现兼容的预发布扩展,正式版仍只选择稳定包:
4545

4646
- `version`:桌宠自己的语义化版本,不与 `APP_VERSION` 同步递增。
4747
- `protocol`:桌宠与主程序的通信协议版本。改变协议时应同步评估主程序桥接兼容性。

pet_host/extension.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
{
2-
"version": "0.1.2",
2+
"version": "0.1.3",
33
"protocol": 1,
44
"platform": "win-x64",
55
"min_app_version": "1.14.0-beta.1"

release-notes/pet-v0.1.3.md

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
更新类型:Bug 修复
2+
3+
本版本修复桌宠保存贴边状态后重新启动时可能异常退出的问题。最低兼容主程序仍为 `1.14.0-beta.1`,平台为 Windows x64,通信协议保持 `1`
4+
5+
### 修复
6+
7+
- 等待 VPet 两个动画画布完成首帧初始化后再恢复已保存的贴边状态,避免启动动画切换期间访问空画布。
8+
- 为贴边入口增加初始化保护,防止其他早期调用再次触发同类异常。
9+
- 保留左右贴边、重启后恢复贴边、额度气泡和自主活动的现有行为。
10+
11+
### 验证
12+
13+
- 桌宠宿主 Release 构建通过,0 个编译错误。
14+
- 使用真实故障布局 `dockedEdge: false` 启动成功,宿主进入 `ready` 状态并加载 `318` 组动画;标准错误为空,未生成 `host-error.log`
15+
- 扩展安装、更新、打包与更新客户端相关测试 `147` 项通过;`git diff --check` 通过。
16+
- 完整桌宠冒烟检查未出现启动崩溃或动画加载错误;其中既有的 `cloudHiddenAfterNormalRestore` 时序断言在修复前后均可能波动,与本次改动无关。
17+
18+
### 安装、兼容与校验
19+
20+
- 主程序 `1.14.1` 或更新版本可在启动检查时提示已安装桌宠更新,也可进入“设置 → 桌宠”手动检查并升级。
21+
- 附件:`TokenMeter-Pet-v0.1.3-x64.zip``TokenMeter-Pet-Host-v0.1.3-x64.zip``extension.json``SHA256SUMS.txt`。校验文件覆盖两个 ZIP 与版本清单;SHA256 不等同于独立发布签名。
22+
- 通信协议和最低兼容主程序版本未变,`pet-v0.1.2` 用户可直接升级;稳定主程序只选择稳定桌宠扩展。
23+
24+
### 来源与授权
25+
26+
- 默认角色及动画来自 [LorisYounger/VPet](https://github.com/LorisYounger/VPet),版权所有:虚拟主播模拟器制作组;核心源码采用 Apache License 2.0,动画和图片采用上游单独授权。
27+
- 本扩展免费分发并附完整上游授权声明、来源链接和依赖许可证;不得收费分发动画文件,商业用途需遵守上游额外要求。详见包内 `VPet-README.md``VPet-LICENSE.txt``THIRD_PARTY_NOTICES.md`
28+
- 完整差异:[pet-v0.1.2 → pet-v0.1.3](https://github.com/zensoku142/TokenMeter/compare/pet-v0.1.2...pet-v0.1.3)

0 commit comments

Comments
 (0)