CubismMotionSyncCriEngine が予期せず Dispose される事があるのを修正 #6
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
複数の Live2D を同時にインスタンス化する際に、一部の CubismMotionSyncCriProcessor の enable を落とした状態でインスタンスを作り、enable が true になることなく Destroy された場合に問題が発生した。
(CubismMotionSyncCriProcessor.MotionSyncAudioInput はボイス再生時まで代入したくないのでインスタンス化直後は無効化するようにしていた。その状態でセリフを喋らない Live2D を登場させて退場させるシーンを作ったら再現した)
上記状況では、CubismMotionSyncCriProcessor の Start が呼ばれる回数と Destroy が呼ばれる回数の対称性が崩れる。
それにより CubismMotionSyncCriEngine.ReferenceCount に不整合が生じ、まだ有効な CubismMotionSyncCriProcessor があるのに CubismMotionSyncEngine_CRI.DisposeEngine が呼ばれてしまい、リップシンクが停止してしまう。