バグ: β2でwx側のカードイメージが名前以外表示されなくなる

Issue #185 resolved
k4nagatsuki repo owner created an issue

β2で手札等が表示されなくなる問題があるようです。手元でも発生を確認しました。

リビジョンを巻き戻して確認したところ、cw.image.CardImage.get_wxbmp()ConvertToBitmap()ConvertToImage()を使用してキャッシュのコピーを生成しているところで問題が起きているようです。対応を考えます。

奇妙なのは、これが11月3日に入った変更で、それ以降つい先程まで一度もこのような問題が発生していない事です。デバッグモードならちゃんと動くのかと思ったらやはり同問題が発生したので、wxのConvert**()の中に時間に依存するような何かが入っているのかもしれません。これを使用している他の箇所も調べたほうがよさそうです。

β2を使用した方にはご迷惑をおかけします。申し訳ありません。バグ報告に感謝いたします。

大きなバグなので直ちに修正にかかってβ3をリリースしようと考えています。対応完了まで今しばらくお待ちください。

Comments (4)

  1. k4nagatsuki reporter

    wx.Bitmap#ConvertToImage()を使用しているのは次の箇所です。

    1. 手札ビューにおけるスター(クリックした時)。問題無し。
    2. cw.image.CardImage#get_wxbmp()get_wxclickedbmp()。今回問題になった箇所。wx.Bitmap#ConvertToImage()を使わないようにして問題を回避。
    3. キャラクター情報の称号(履歴)欄。問題無し。
    4. cw.wins()。これはイメージの拡大時にほとんど全てのリソースが通るのですが、ほとんどの画像が問題なく拡大されているようです。
    5. cw.imageretouch.to_disabledimage()。問題無し。

    また、キャラクター情報のステータス欄でいつの間にか能力修正の背景色が出なくなっています(コードは最初期から変わっていないはず)。これは修正できました。wx.DC#DrawBitmap()mask引数を指定していなかったためで、むしろこれまで背景色が表示されていたことが不思議です。この問題は0.12.1、0.12.2β1にも存在します。

    上のリストで今後問題になりえるのは4.だと思います。とりあえずもう少し調べてから見つかった問題を修正してβ3を出しますが、完全ではないかもしれません。何かありましたらまた報告いただけると非常に助かります。申し訳ありませんがよろしくお願いします。

  2. k4nagatsuki reporter

    pull request #634

    CardWirthPy 0.12.2β3をリリース。

    これでとりあえず対処できましたが、上の通り継続監視が必要です。このIssueは優先度を下げて残します。

    実は最初に発生した時、私はリリースしたのと同じバージョンでシナリオをプレイ中だったのですが、何度もカードを使用した上、3~4時頃に画面のスケールを変更して手札ダイアログを開くと突然カードが表示されなくなっていました。すわスケール変更のバグかと思って調査を始めたのですが、実際にはスケールを変更するまでもなく、何度再起動してもカードが表示されませんでした。

    聞いた限り様々なハードウェア環境でもれなく発生しているようなので、wxPythonの画像処理ライブラリの問題でしょうか。画像の変換で時刻を参照するような処理を行うなんてありえないと思うのですが(乱数の種くらいか? しかし乱数を使うような処理ではありません)。

  3. Log in to comment