|
楼主 |
发表于 2006-3-12 01:40:41
|
显示全部楼层
找到了 Wine 运行慢的原因
hzhr | 15 二月, 2006 22:03
前几天花了九牛二虎之力在(pure) Debian下把 Xgl 编了(有时间整理一下过程),然后发现wine跑程序特别慢,一直以为是Xgl的问题。后来在论坛上看见有人老说wine很慢,http://www.linuxsir.org/bbs/showthread.php?t=240185 ,觉得很奇怪,他们说的问题我可一直没碰到过啊,难道换成Xgl就有问题?可他们好像不是用的Xgl啊,更怪的是在zh_CN.GB2312下没问题,在zh_CN.GBK和zh_CN.UTF-8下就有。
我就喜欢怪问题,于是把wine的代码找来看了一下,发现是wine支持OverTheSpot风格的XIM输入法时引入的一个BUG,OverTheSpot要求X-client传回fontSet给XIM Server,结果wine中就这样写:
// dlls/x11drv/xim.c, X11DRV_CreateIC
fontSet = XCreateFontSet(display,
"*", /*FIXME*/
&list, &count, NULL);
这个函数会根据当前的locale和匹配条件去找XFontSet,本来也没什么不对。但是仔细想想,在zh_CN.GBK和zh_CN.UTF-8下,XFontSet中需要-*-gbk-0的字体,如果系统中没有-*-gbk-0的字体,那会是个什么样的情况,上面的查找将会遍历整个X core font,速度当然一下子就慢了。
解决办法当然很简单,加上gbk字体,马上就OK了
zh_CN.GB2312多古老啊,还是赶快回到21世纪吧,那就是 zh_CN.UTF-8
BTW: Xgl不读配置文件,那只好在命令行上指定字体路径了。
完全正确! |
|