TOKUNAGA Hiroyuki
tkng****@xem*****
2005年 1月 8日 (土) 01:27:01 JST
On Fri, 07 Jan 2005 09:11:01 +0900 YamaKen <yamak****@bp*****> wrote: > At Fri, 7 Jan 2005 07:36:56 +0900, > tkng****@xem***** wrote: > > > > On Wed, 05 Jan 2005 18:18:00 +0900 > > YamaKen <yamak****@bp*****> wrote: > > > 結局uim_init()を呼び出した回数を参照カウント(initカウント?)とし > > > てグローバルに保持して、カウントが0になった時点でuim_quit()を呼 > > > ぶという実装にして問題を回避しました。 > > > > > > libuim内でこれと同様の実装を行って対応しませんか? ブリッジ側の負 > > > 担も減りますし。 > > > > デザイン的にその方がきれいかなと思って実装してみたのですが、それで > > はダメでした。それぞれの関数が呼ばれる回数とタイミングを調べ直すと、 > > uim_initが2回呼ばれて、uim_quitが2回呼ばれて(この2回目で終了処理が > > 行われる)、それからuim_custom_quitが呼ばれています。実装する前に気 > > づけよという感じです。 > > uim_custom_quit()の後にもう1回uim_quit()が呼ばれますよね? 本来は > その時点でカウントが0になるべきなのでuim_init()かuim_quit()が過 > 剰に呼ばれてるバグがあるんじゃないでしょうか。もっとも以前の仕様 > ではuim_init()を過剰に呼んでもバグとは言えませんが。 uim_quitを2度呼ぶバグがありました。これを修正するとこの方法でも動きま した。ただ、それとは別に、私はuim_init/quitとuim_custom_init/quitをわけ るのはデザインとして好きではないので、 [Anthy-dev 1563] 式のAPIを引き続 き提案します。 > > というわけで、このデザインだとうまくいきません。そこで、次のような > > 解決策を提案します。 > > > > - uim_custom_init/quitはuim_init/quitのなかに埋め込む。 > > - フル機能を必要とする場合にはuim_custom_enableとか、そんな感じの > > 関数を明示的に呼ばせる。 > > > > これでリソースの問題も解決できると思うのですがどうでしょう? > > uim-prefのようにimmoduleも読み込まれる環境ではuim_init()が呼ばれ > る前にuim_custom_enable()を呼ぶのは難しいと思います。また、 > uim-customのコードはlibuimのコアから簡単に外せるように独立性を保っ > ておきたいので、できれば今のインタフェイスを維持したいです。そん > な面倒なと思うでしょうが、libuimはまだまだスリム化したいと思って > います。その一環と考えてください。 いえ、uim_custom_enableが呼ばれるのはuim_initの後です。つまり、今 uim_custom_init内でやっている処理をuim_custom_enableで行うと。 -- 徳永拓之 tkng****@xem***** http://kodou.net/