YamaKen
yamak****@bp*****
2005年 1月 7日 (金) 09:11:01 JST
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_custom_init/quitはuim_init/quitのなかに埋め込む。 > - フル機能を必要とする場合にはuim_custom_enableとか、そんな感じの > 関数を明示的に呼ばせる。 > > これでリソースの問題も解決できると思うのですがどうでしょう? uim-prefのようにimmoduleも読み込まれる環境ではuim_init()が呼ばれ る前にuim_custom_enable()を呼ぶのは難しいと思います。また、 uim-customのコードはlibuimのコアから簡単に外せるように独立性を保っ ておきたいので、できれば今のインタフェイスを維持したいです。そん な面倒なと思うでしょうが、libuimはまだまだスリム化したいと思って います。その一環と考えてください。 > > また、必要リソース節減のため、uim_custom_{init,quit}()の呼び出し > > はlibuim内に埋め込むのではなくuim-prefのようにcustom APIのフル機 > > 能を必要とするアプリケーションが明示的に行う事を意図しています。 > > > > 今はuim_init()内でフル機能版のcustom.scmを読み込んでいますが、 > > 0.4.6までにはIMの実行に最低限必要な軽量機能版に挿し替える予定で > > す。 ------------------------------- ヤマケン yamak****@bp*****