Re: Android版:音系デッドロックその3? ( No.1 ) |
- 名前:ギウ 日時:2017/03/21 23:41
それと、止まった時ですが、BGMが1秒くらいの範囲でループしてました。
|
Re: Android版:音系デッドロックその3? ( No.2 ) |
- 名前:ギウ 日時:2017/03/22 11:38
もう少し絞り込んでみました。
箇条書きします。
============
・BGMを読み込まない&再生しない状態でも、SE再生時に止る(なのでBGMは関係ない)
・1個の音をいろんなタイミングで鳴らしてると、10秒〜1分以内くらいに止まる。(複数の音でも止まる)
・前回のように音を毎フレーム1000回とか再生しても止まらない。(タイミングが影響?)
・SEの読み込みまでを行い、再生だけを行わない場合は止まらない。(なのでゲーム側の問題ではない、はず)
============
SEのハンドル取得後に、元のoggデータを解放してることが問題ないなら、
再生するタイミングによって止まるのかなという気がしてます。
|
Re: Android版:音系デッドロックその3? ( No.3 ) |
- 名前:ギウ 日時:2017/03/22 11:55
追記。
・リリースモード、デバッグモード、どちらも止まる。
あと、一部訂正で、止まらない時は暫く止まらなかったので、「10秒〜3分くらいで止まる」に修正します。
|
Re: Android版:音系デッドロックその3? ( No.4 ) |
- 名前:管理人 日時:2017/03/23 01:10
バグのご報告に加え詳細な再現の方法まで教えていただきありがとうございます
すぐにでも対応したいのですが、今週は週末まで作業の時間を確保できそうにないので、
申し訳ありませんが週末までお待ちください m(_ _;m
|
Re: Android版:音系デッドロックその3? ( No.5 ) |
- 名前:ギウ 日時:2017/03/23 22:07
ご返信有難うございます。お時間のある時で大丈夫です。
追加報告です。
0.3秒から1秒程度の効果音を、画面をタッチしたらランダムで鳴らす、ということをすると止まりやすかったです。
例)
================
while(ProcessMessage()!=-1)
{
if( GetMouseInput()&MOUSE_INPUT_LEFT )
{
if( GetRand(200)<10 )
PlaySoundMem(id[10],DX_PLAYTYPE_BACK);
if( GetRand(200)<20 )
PlaySoundMem(id[20],DX_PLAYTYPE_BACK);
if( GetRand(200)<30 )
PlaySoundMem(id[30],DX_PLAYTYPE_BACK);
}
ScreenFlip();
}
================
このプログラムを実行し、画面をタッチしたり離したり、連打したりする感じです。
(止まるタイミングは、効果音が終わる前後で再生とか?)
よろしくお願いいたします。
|
Re: Android版:音系デッドロックその3? ( No.6 ) |
- 名前:管理人 日時:2017/03/26 03:57
簡単に再現できるコードを載せていただきありがとうございます
お陰で直ぐに手元でデッドロックを再現することができました
原因はDXライブラリ内部で行っている『複数のクリティカルセクションのロックを取る』処理の際に
ロックを取る順番が誤っていたために StopSoundMem を実行するタイミングによってはデッドロックが
発生するというものでした
修正版をアップしましたので、よろしければお試しください m(_ _;m
https://dxlib.xsrv.jp/temp/DxLibAndroidTest_ARM.exe // Android版 ARM用
|
Re: Android版:音系デッドロックその3? ( No.7 ) |
- 名前:ギウ(解決) 日時:2017/03/28 08:46
こちらも問題なく再生できるようになりました。
有難うございます!
|