◀ANSI版開発トップへ
  • 5587 Wineでの動作について(修正)
    • 5588 Re:Wineでの動作について(修正)
      • 5589 Re2:Wineでの動作について(修正)
        • 5591 Re3:Wineでの動作について(修正)
        • 5595 Re3:Wineでの動作について(修正)
          • 5600 Re4:Wineでの動作について(修正)
            • 5604 Re5:Wineでの動作について(修正)
              • 5605 Re6:Wineでの動作について(修正)
                • 5611 Re7:Wineでの動作について(修正)
                  • 5614 Re8:Wineでの動作について(修正)
                    • 5615 Re9:Wineでの動作について(修正)
  • [5587] Wineでの動作について(修正) Hidetaka Sakai 2009年08月02日 17:07

    Unix系でのOSでのサクラエディタ使用はWineを使用すると
    FAQ(http://sakura.qp.land.to/?FAQ%2F47)にあるのですが、
    矢印キー、BackSpace、CTRL+Cなどが効かないという
    現象が発生しております。

    そもそもWine側の問題ではあるとは思うのですが、
    サクラエディタ側の修正で対応版を作成してみました。
    http://sakaihdt.gozaru.jp/sakura.html

    問題(Wine側のですが・・・)は、アクセラレータ
    テーブルが共有メモリにあることのようです。
    TranslateAccelerator呼び出し前に、
    ローカル変数にアクセラレータテーブルを
    生成することで、Wineでも正常に動作することが
    できます。


    修正に関して取り込んでいただけるかどうか、
    ご検討をお願い申し上げます。
    >>開発メンバー殿
    • [5588] Re:Wineでの動作について(修正) なすこじ 2009年08月04日 18:00

      ▼ Hidetaka Sakaiさん
      こんにちは。

      共有メモリにあるというより、プロセス間で共有できるのかということですよね?
      1つのAccelerator Tableをプロセスを跨いで使用できるのはundocumentedじゃなかったと思うのですが、ちょっと憶えていません (^^;

      で、Wineのソースをちょろっと見てみました。
      CreateAcceleratorTableがGlobalAlloc16でメモリを取りにいっているようですが、最終的にプロセスヒープから割り当てられたりしていないでしょうか?
      processHeapという変数へ行き着いているのが気になります。
      そのため、プロセスを跨げなくなっているとか?

      まぁ、私の間違いの可能性の方が大きいですが…… (^^;

      サクラエディタのソースの修正部分については、毎回Accelerator Tableを作って破棄するのはちょっとコストが高いかなと思いましたが、そんなに大量のコードが走るわけでもないので大丈夫でしょうか。
      Wineでの使用時に速度低下とかしてませんか?

      ではでは。
      • [5589] Re2:Wineでの動作について(修正) Hidetaka Sakai 2009年08月04日 23:44

        ▼ なすこじさん
        こんばんわ。

        ご確認ありがとうございます。
        (Wine側まで見ていただけるとは・・・)

        Accelerator Tableの仕様について、まだ未調査です。
        なすこじさんの情報も含め調べてみます。
        (2chでの情報提供もありましたので)
        Wine側には、調査後報告するようにします。
        (ちょっと時間が開くかもしれませんが、
         またこのBBSに報告します。)

        > サクラエディタのソースの修正部分については、
        > 毎回Accelerator Tableを作って破棄するのは
        > ちょっとコストが高いかなと思いましたが、
        > そんなに大量のコードが走るわけでもないので大丈夫でしょうか。
        > Wineでの使用時に速度低下とかしてませんか?

        「CEditWnd::MessageLoop」関数の、
        初めに生成し、最後に開放しています。

        ブレークポイントをはって確認しましたが、
        生成は、起動時に1回しか呼び出されていないようです。
        • [5591] Re3:Wineでの動作について(修正) ryoji 2009年08月05日 00:36

          ▼ Hidetaka Sakaiさん
          > ブレークポイントをはって確認しましたが、
          > 生成は、起動時に1回しか呼び出されていないようです。

          現状、起動時にCEditApp::CEditApp()で生成してる以外に、
          共通設定画面がOKで閉じられた時も再生成してるです。
          ↑
          CEditDoc::OpenPropertySheet()の中で、
          トレイウィンドウにMYWM_CHANGESETTINGを送っていて、
          これを受けてCEditApp::DispatchEvent()で破棄&生成。
        • [5595] Re3:Wineでの動作について(修正) なすこじ 2009年08月06日 04:17

          ▼ Hidetaka Sakaiさん
          > (2chでの情報提供もありましたので)

          確認しました。
          User Objectsの項でしたね。ありがとうございます。

          2chから遡ってBug 19368にたどり着きました。
          共有メモリにあるのはAcceletor Tableのハンドルだけです。実体はデスクトップヒープに作られると思います
          なので、他のプロセスからも参照できるが、Destroyを忘れるとアプリを終了してもメモリに残る……と思う。

          一方Wineではプロセスヒープに作られてしまい他のプロセスから見れなくなっているのでは?というのが私の推測です。
          怪しいですが (^^;

          > 生成は、起動時に1回しか呼び出されていないようです。

          ご、ごめんなさい m(_ _)m
          再作成のために毎回やっていると思い込んでいました。確かにループの外にありますね。

          > Wine側には、調査後報告するようにします。
          > (ちょっと時間が開くかもしれませんが、
          >  またこのBBSに報告します。)

          お手数をお掛けしますが宜しくお願いします。

          ではでは。
          • [5600] Re4:Wineでの動作について(修正) Hidetaka Sakai 2009年08月06日 22:37

            ▼ なすこじさん
            > 確認しました。
            > User Objectsの項でしたね。ありがとうございます。
            >
            > 2chから遡ってBug 19368にたどり着きました。
            すみません。リンク貼っとけばよかったですね。
            今更だけど。。。
            http://bugs.winehq.org/show_bug.cgi?id=19368

            > 共有メモリにあるのはAcceletor Tableのハンドルだけです。実体はデスクトップヒープに作られると思います
            > なので、他のプロセスからも参照できるが、Destroyを忘れるとアプリを終了してもメモリに残る……と思う。
            そのようですね。
            Dmitry Timoshkov 氏の解答によるとによると、
            Acceletor Tableは、user32 kernel objectとして
            作成されるから、複数プロセスからも参照できる。
            だそうです。(解釈あってるか不安ですが。。。)

            # In Windows an accelerator is a user32 kernel object,
            # like windows and menus, and an accelerator created
            # in one process is visible to anotherone.


            > 一方Wineではプロセスヒープに作られてしまい
            > 他のプロセスから見れなくなっているのでは?
            > というのが私の推測です。
            > 怪しいですが (^^;
            これはYesでしょうね。
            なすこじさんがが教えてくださったAlloc16は
            最終的にヒープを取得しているようです。

            Dmitry Timoshkov 氏の解答によると、
            Wineは、window handleしか、
            user32 kernel object実装していない
            とのこと。(和訳あってるかしら・・・)

            # Wine implements this only for window handles.


            > > 生成は、起動時に1回しか呼び出されていないようです。
            >
            > ご、ごめんなさい m(_ _)m
            > 再作成のために毎回やっていると思い込んでいました。確かにループの外にありますね。

            ryoji さんが報告してくださった箇所でも
            Acceletor Tableは生成されているようですが、
            文章を書くのに支障はでないのではとおもいます。
            (ryojiさんありがとうございます。)


            > > Wine側には、調査後報告するようにします。
            > > (ちょっと時間が開くかもしれませんが、
            > >  またこのBBSに報告します。)
            >
            > お手数をお掛けしますが宜しくお願いします。

            報告しちゃいました。。。。

            今度は、Wine側ソースを追っかけしてみます、

            ではでは。
            • [5604] Re5:Wineでの動作について(修正) なすこじ 2009年08月09日 02:57

              ▼ Hidetaka Sakaiさん
              報告どうもありがとうございます。

              > Dmitry Timoshkov 氏の解答によると、
              > Wineは、window handleしか、
              > user32 kernel object実装していない
              > とのこと。(和訳あってるかしら・・・)
              >
              > # Wine implements this only for window handles.

              最低でもWindowは対応していないとマズいよなぁ、と思ったらWindowだけなんですね。

              氏の回答からは、対応予定が有るのか無いの分からないのがちょっと困る (^^;

              取りあえず対応パッチを作っておこうと思いますが、修正部分のライセンスはzlib/libpngで良いでしょうか?

               ライセンス明確化推進計画
                http://sakura.qp.land.to/?Develop%2FLicenses

              ではでは。
              • [5605] Re6:Wineでの動作について(修正) Hidetaka Sakai 2009年08月09日 16:07

                ▼ なすこじさん
                > > # Wine implements this only for window handles.
                >
                > 最低でもWindowは対応していないとマズいよなぁ、と思ったらWindowだけなんですね。
                > 氏の回答からは、対応予定が有るのか無いの分からないのがちょっと困る (^^;

                いつ修正か、わからないですね。
                Wine側をなおせるようなら直したいのですが、
                まだ着手できておりません。
                10月ぐらいにチャレンジしたいとは思いますが。。。。


                > 取りあえず対応パッチを作っておこうと思いますが、
                > 修正部分のライセンスはzlib/libpngで良いでしょうか?
                >
                >  ライセンス明確化推進計画
                >   http://sakura.qp.land.to/?Develop%2FLicenses

                取り込んでいただけるんですか?
                (いやぁうれしい!!)

                私個人は著作権を破棄します。
                できないのであれば、zlibライセンスで構いません。

                ではでは。
                • [5611] Re7:Wineでの動作について(修正) なすこじ 2009年08月15日 20:13

                  ▼ Hidetaka Sakaiさん
                  > 私個人は著作権を破棄します。
                  > できないのであれば、zlibライセンスで構いません。

                  ありがとうございます。http://sakura.qp.land.to/?Develop%2FLicenses に記載させていただきました。

                  また、テスト用のバイナリを作成しましたのでWineにて試していただけますでしょうか?
                   http://www.geocities.jp/nasukoji_7/download/download_sakuraeditor.html
                   「13. sakura_20090815_for_Wine.zip」

                  「共通設定」の「キー割り当て」に「ウィンドウ毎にアクセラレータテーブルを作成する(Wine用)」のオプションがありますので、それにチェックを入れてカーソルキーやバックスペースを押してみて下さい。

                  ではでは。
                  • [5614] Re8:Wineでの動作について(修正) Hidetaka Sakai 2009年08月16日 09:55

                    ▼ なすこじさん

                    > > 私個人は著作権を破棄します。
                    > > できないのであれば、zlibライセンスで構いません。
                    >
                    > ありがとうございます。http://sakura.qp.land.to/?Develop%2FLicenses に記載させていただきました。

                    確認致しました。

                    > また、テスト用のバイナリを作成しましたのでWineにて試していただけますでしょうか?
                    >  http://www.geocities.jp/nasukoji_7/download/download_sakuraeditor.html
                    >  「13. sakura_20090815_for_Wine.zip」
                    >
                    > 「共通設定」の「キー割り当て」に「ウィンドウ毎にアクセラレータテーブルを作成する(Wine用)」のオプションがありますので、それにチェックを入れてカーソルキーやバックスペースを押してみて下さい。

                    ありがとうございます。
                    確認致しました。問題ございません。

                    FAQに追記が必要ですね。
                    http://sakura.qp.land.to/?FAQ%2F47

                    リリースが決まれば、
                    WikiのFAQ(http://sakura.qp.land.to/?FAQ%2F47)に
                    設定方法の追記が必要かと思います。
                    (私でよろしければ、追記致しますので、
                     ご連絡ください。)


                    ではでは。
                    • [5615] Re9:Wineでの動作について(修正) なすこじ 2009年08月18日 22:06

                      ▼ Hidetaka Sakaiさん
                      確認どうもありがとうございます。
                      FAQの方はパッチの動向を見て考えることにします。

                      ではでは。