[スレッド全体]

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()で破棄&生成。

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