[▲前のスレッド]

2009/8/2 (日) 17:07:40 Hidetaka Sakai  
Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.1.1) Gecko/20090716 Ubuntu/9.04 (jaunty) Shiretoko/3.5.1
[5587] Wineでの動作について(修正)
Unix系でのOSでのサクラエディタ使用はWineを使用すると
FAQ(http://sakura.qp.land.to/?FAQ%2F47)にあるのですが、
矢印キー、BackSpace、CTRL+Cなどが効かないという
現象が発生しております。

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

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


修正に関して取り込んでいただけるかどうか、
ご検討をお願い申し上げます。
>>開発メンバー殿

2009/8/4 (火) 18:00:46 なすこじ  
Mozilla/4.8 (Macintosh; U; PPC)
[5588] Re:Wineでの動作について(修正)
▼ Hidetaka Sakaiさん
こんにちは。

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

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

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

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

ではでは。

2009/8/4 (火) 23:44:31 Hidetaka Sakai  
Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.1.1) Gecko/20090716 Ubuntu/9.04 (jaunty) Shiretoko/3.5.1
[5589] Re2:Wineでの動作について(修正)
▼ なすこじさん
こんばんわ。

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

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

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


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

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

2009/8/5 (水) 00:36:23 ryoji  
Mozilla/5.0 (Windows; U; Windows NT 6.0; ja; rv:1.9.1.1) Gecko/20090715 Firefox/3.5.1 (.NET CLR 3.5.30729)
[5591] Re3:Wineでの動作について(修正)
▼ Hidetaka Sakaiさん
> ブレークポイントをはって確認しましたが、
> 生成は、起動時に1回しか呼び出されていないようです。

現状、起動時にCEditApp::CEditApp()で生成してる以外に、
共通設定画面がOKで閉じられた時も再生成してるです。
↑
CEditDoc::OpenPropertySheet()の中で、
トレイウィンドウにMYWM_CHANGESETTINGを送っていて、
これを受けてCEditApp::DispatchEvent()で破棄&生成。

2009/8/6 (木) 04:17:44 なすこじ  
Mozilla/4.0 (compatible; MSIE 6.0; KDDI-MA33) Opera 8.60 [ja]
[5595] Re3:Wineでの動作について(修正)
▼ Hidetaka Sakaiさん
> (2chでの情報提供もありましたので)
 
確認しました。
User Objectsの項でしたね。ありがとうございます。
 
2chから遡ってBug 19368にたどり着きました。
共有メモリにあるのはAcceletor Tableのハンドルだけです。実体はデスクトップヒープに作られると思います
なので、他のプロセスからも参照できるが、Destroyを忘れるとアプリを終了してもメモリに残る……と思う。
 
一方Wineではプロセスヒープに作られてしまい他のプロセスから見れなくなっているのでは?というのが私の推測です。
怪しいですが (^^;
 
> 生成は、起動時に1回しか呼び出されていないようです。
 
ご、ごめんなさい m(_ _)m
再作成のために毎回やっていると思い込んでいました。確かにループの外にありますね。
 
> Wine側には、調査後報告するようにします。
> (ちょっと時間が開くかもしれませんが、
>  またこのBBSに報告します。)

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

2009/8/6 (木) 22:37:30 Hidetaka Sakai  
Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.1.1) Gecko/20090716 Ubuntu/9.04 (jaunty) Shiretoko/3.5.1
[5600] Re4:Wineでの動作について(修正)
▼ なすこじさん
> 確認しました。
> 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側ソースを追っかけしてみます、

ではでは。

2009/8/9 (日) 02:57:56 なすこじ  
Mozilla/4.8 (Macintosh; U; PPC)
[5604] Re5:Wineでの動作について(修正)
▼ 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

ではでは。

2009/8/9 (日) 16:07:06 Hidetaka Sakai  
Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.1.2) Gecko/20090803 Ubuntu/9.04 (jaunty) Shiretoko/3.5.2
[5605] Re6:Wineでの動作について(修正)
▼ なすこじさん
> > # Wine implements this only for window handles.
>
> 最低でもWindowは対応していないとマズいよなぁ、と思ったらWindowだけなんですね。
> 氏の回答からは、対応予定が有るのか無いの分からないのがちょっと困る (^^;


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


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


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

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

ではでは。

2009/8/15 (土) 20:13:01 なすこじ  
Mozilla/4.8 (Macintosh; U; PPC)
[5611] Re7:Wineでの動作について(修正)
▼ 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用)」のオプションがありますので、それにチェックを入れてカーソルキーやバックスペースを押してみて下さい。

ではでは。

2009/8/16 (日) 09:55:51 Hidetaka Sakai  
Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.1.2) Gecko/20090803 Ubuntu/9.04 (jaunty) Shiretoko/3.5.2
[5614] Re8:Wineでの動作について(修正)
▼ なすこじさん

> > 私個人は著作権を破棄します。
> > できないのであれば、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)に
設定方法の追記が必要かと思います。
(私でよろしければ、追記致しますので、
 ご連絡ください。)


ではでは。

2009/8/18 (火) 22:06:11 なすこじ  
Mozilla/5.0 (Windows; U; Windows NT 5.0; ja; rv:1.9.1.2) Gecko/20090729 Firefox/3.5.2
[5615] Re9:Wineでの動作について(修正)
▼ Hidetaka Sakaiさん
確認どうもありがとうございます。
FAQの方はパッチの動向を見て考えることにします。

ではでは。

[▼次のスレッド]
INCM/CMT
Cyclamen v3.81
[ut:0.020][st:0.000]