[Anthy-dev 1563] Re: uim-pref開発計画

アーカイブの一覧に戻る

TOKUNAGA Hiroyuki tkng****@xem*****
2005年 1月 7日 (金) 07:36:56 JST


On Wed, 05 Jan 2005 18:18:00 +0900
YamaKen <yamak****@bp*****> wrote:

> ヤマケンです。だんだんuim-prefがいい感じになってきましたね。
> 
> At Wed, 5 Jan 2005 16:07:18 +0900,
> tkng****@xem***** wrote:
> > 
> > On Tue, 4 Jan 2005 15:09:45 +0900
> > Kazuki Ohta <mover****@hct*****> wrote:
> > 
> > > YamaKenさんのパッチとは別の方法で解決してみました(r118)。というよ
> > > りこのパッチを当ててしまうとwidgetが右側にどんどん延びて行ってしま
> > > いますね:-)ただ、うちの環境だとまだ終了時にsegvってます。有効な
> > > btを取れないのですが...
> 
> #パッチちゃう…
> 
> >  たぶん原因がわかりました。GTK+のim_module_exitでuim_quitを呼んでい
> > て、しかもそれがuim_custom_quitよりも先に実行されているのが原因です
> > 。 uim_quit内でuim_custom_quitを呼ぶように変更しても問題ないですか?
> > (試しにそのように変更してみると、segvは起こらなくなりました。)
> 
> ああ、そういう事でしたか。その問題には別の方法で対応した方がいい
> と思います。
> 
> IMKit-uimでも同様の問題が発生した事があるんですが、uimの提供する
> IMをQtopiaのIMプラグインに一対一で対応させている関係で、1つのプ
> ラグインがuim_quit()を呼んで終了した後にもまだ同一プロセス内の他
> のプラグインがuimの機能を呼び出す必要のある場合があり問題になり
> ました。
> 
> 結局uim_init()を呼び出した回数を参照カウント(initカウント?)とし
> てグローバルに保持して、カウントが0になった時点でuim_quit()を呼
> ぶという実装にして問題を回避しました。
> 
> libuim内でこれと同様の実装を行って対応しませんか? ブリッジ側の負
> 担も減りますし。

 デザイン的にその方がきれいかなと思って実装してみたのですが、それではダ
メでした。それぞれの関数が呼ばれる回数とタイミングを調べ直すと、
uim_initが2回呼ばれて、uim_quitが2回呼ばれて(この2回目で終了処理が行わ
れる)、それからuim_custom_quitが呼ばれています。実装する前に気づけよと
いう感じです。
 というわけで、このデザインだとうまくいきません。そこで、次のような解決
策を提案します。

 - uim_custom_init/quitはuim_init/quitのなかに埋め込む。
 - フル機能を必要とする場合にはuim_custom_enableとか、そんな感じの
  関数を明示的に呼ばせる。

 これでリソースの問題も解決できると思うのですがどうでしょう?

> また、必要リソース節減のため、uim_custom_{init,quit}()の呼び出し
> はlibuim内に埋め込むのではなくuim-prefのようにcustom APIのフル機
> 能を必要とするアプリケーションが明示的に行う事を意図しています。
> 
> 今はuim_init()内でフル機能版のcustom.scmを読み込んでいますが、
> 0.4.6までにはIMの実行に最低限必要な軽量機能版に挿し替える予定で
> す。

-- 
徳永拓之
tkng****@xem*****
http://kodou.net/



Anthy-dev メーリングリストの案内
アーカイブの一覧に戻る