バトルのシーンビューを閉じてもwavファイルの音が停止しない

Issue #189 resolved
jinto_ created an issue

バトルのシーンビューのBGMでwavファイルを流してると最初はこう
WS000004.JPGなのですが、
しばらくするとこう
WS000000.JPGなります。(音の長さは短い方が再現しやすい)
この状態になってからバトルのシーンビューを閉じても音が鳴り続けます。

Comments (6)

  1. k4nagatsuki repo owner

    調べてみましたが、これはおそらくDの処理系のバグで、不要メモリの回収処理(GC)が走ると外部DLLのコールバック関数の呼び出しがアクセス違反を誘発するというものです。

    コールバック関数へのポインタをGCの対象外にするなどの対策は効果がなく、アクセス違反を防ぐにはGCを止めるしかありません。これを行うと再生中は不要になったメモリの回収を一切行えないという異なり、最終的にメモリ不足に陥ります。

    一度でもGCが走ると問題が発生する可能性があるため、コールバックが行われないタイミングで一時的にGCを動かすなどの対策も打てません。

    つまり解決方法が無いように見えます。cwxeditorで音声を流しながら作業を行う事は推奨できかねると言う事くらいしかできません。

  2. jinto_ reporter

    ご返答ありがとうございます。
    他の人が同じ問題にぶつかるかもしれないので、課題は開いたままにしておきますね。

  3. k4nagatsuki repo owner

    pull request #206

    要はDランタイムの管理下から外れればいいのだろう、と考えて、コールバック処理をC言語で書くと、少なくとも手許では問題は発生しなくなりました。

    これで直ったかどうかは環境によるかもしれません。お試しください。

  4. jinto_ reporter

    ありがとうございます。大丈夫なようです。
    この課題はこれで解決とします。

  5. Log in to comment