タスク:スクリーンショット周りの検証

Issue #30 resolved
暗黒 騎士 repo owner created an issue

特定の状況下でスクリーンショットを撮れなくなる(撮影自体が出来ない)環境がある模様。

自分の環境では再現しないが、2xで連打していると処理が重く、応答がなくなることはあるので軽量化を検討する。

Reboot側では再現しない、エラーログはでないようなので考えられるのはPyLite側のコードで入力を無視するような文を入れてしまっているか、パフォーマンスが非常に悪くなっていて入力が無視されているか、WXPythonかPygameのバージョンでパフォーマンスが悪化している可能性(WXの可能性は高そう)。

Comments (6)

  1. 暗黒 騎士 reporter

    スクショの実行処理でサイズと毎回WXバージョンを判定して画像サイズ変更アルゴリズムを決めている部分があったので取り除いてみる。

    if 20 <= cw.s(pixelsize) or wx.VERSION[0] < 3:

    Rebootでは既に取り除かれてwx.IMAGE_QUALITY_HIGHに統一されている模様。最高品質モードっぽいがwx.IMAGE_QUALITY_NORMAL
    wx.IMAGE_QUALITY_BILINEARだと問題があるのかな?

  2. 暗黒 騎士 reporter

    上記はダイアログ中のスクショなので今回の件と関係なかった。タイトルを入れる計算は結構行数あるが、スクショ自体はsurfaceをそのまま書き出してるだけなのでタイミングによって撮れなくなるという可能性は低い。うーんあとはPygameアップデートを試すぐらいか。

  3. 暗黒 騎士 reporter

    多分解決した。Rebootとイベントハンドラを比較したらRebootでは2か3あたりで、ファンクション系のキーにおいては、入力を受け付けるかという判定caninputからcaninput_sysというメソッドに差し替わっていた。こっちではそのままだったのでシステム割り込みができないタイミングが多くなっていたっぽい。つまり、処理が遅いか早すぎるかしている環境では(戦闘中にはイベントが常に走っているため)それらのキーの効きが悪くなっていたっぽい。

    https://bitbucket.org/k4nagatsuki/cardwirthpy-reboot/commits/175aa3f2cba8f8cc3d06d8fae2762c7962ee3a24

    自分は画面が動いてるときはあまり撮らないから体感出来なかったけど、確かに戦闘中にカシャカシャ撮りまくるバトル勢にとってはこりゃ致命的かもしれないな。気付けてよかった。

  4. 暗黒 騎士 reporter

    再現できないので完全に解決したかは分からないけど処置は施したので。

    これ単体では4.4をアプデするほどではないと思うので、一応5.0αから導入予定。

  5. 暗黒 騎士 reporter

    なんで当時移植しなかったかというと、カードが出そろってない状況とか、CWでは出来ないタイミングでF9が出来てしまうからだったか。

    F9に関しては単押しではメニューカードアニメ中はできないようにしてRebootと同等の強制F9はShift同時押ししたときに実行するようにした。

    フレームスキップすると画面に残像が残るエンバグをしてたのでついでに修正。

  6. 暗黒 騎士 reporter

    問題なく動いたようなので解決。 分岐の意味はちゃんと確認しないとダメだな。

  7. Log in to comment