[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[mgp-users-jp 00144] Re: XFreeFont in draw.c



>>>>> "onoe" == Atsushi Onoe <onoe@sm.sony.co.jp> writes:

僕もXは全然なんですが、

onoe> どうしたもんでしょうね。。。

いまちろっと見ていましたが、これでは遅いでしょう。
1.00a のソースなので、少しふるいかもしれないけれど、

>> static XFontStruct *xfontstruct;

>>	if (strcmp(xfont, last_xfont) || char_size != last_char_size) {
>>		/* load new font */
>>		if (xfontstruct)
>>			XFreeFont(display, xfontstruct);

>>			if (xfontstruct = XLoadQueryFont(display, fontstring))
>>				break;

font のロード/purgeって、それはそれは遅い処理だと思うので、font name 
と char_size の組みで連想させてキャッシュつくらないと、今の実装だと、
毎回やるからおそいです。たぶん、Free すると遅くなるのではなくて、Free 
していないと、キャッシュに乗ってるから、次に query かけたときに、キャッ
シュにみつかるから、遅くないだけだと思います。(たぶん)

たぶん、最初に全体をなめたときに、フォントの一覧つくって、読み込んじゃ
うのが良いのではないかと。(少なくとも、最初のページに出す分だけは)で、
めもり食い過ぎるなら、適当な閾値で cache をパージして回るとかね。

shigeya