LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1254|回复: 5

为什么启动了Fcitx之后启动终端会变慢了?

[复制链接]
发表于 2007-4-13 17:17:49 | 显示全部楼层 |阅读模式
我用的是Fvwm, 没启动fcitx之前打开rxvt之前都很快,可是启动Fcitx之后启动rxvt urxvt就变慢了 至少要5秒以上,但是启动gnome-terminal仍然很快,为什么呢?
发表于 2007-4-24 16:24:11 | 显示全部楼层
我也遇到了这个问题,在打开fcitx的情况下,启动urxvt,xterm需要4秒。

以前用Red Flag时没有这个问题,现在转到Arch时出现了。

我的环境:
Arch 0.8 VooDoo
fcitx 3.5-2
urxvt 8.2

我在urxvt的代码中加入了一些标签,发现时间时花在下面这个函数中:
src/main.C line 1337
/*
* Try to open a XIM with the current modifiers, then see if we can
* open a suitable preedit type
*/
bool
rxvt_term::IM_get_IC (const char *modifiers)

应该是fcitx和urxvt的配合出了问题吧,希望有大侠能帮忙解决这个问题。
先谢谢了。
回复 支持 反对

使用道具 举报

发表于 2007-4-24 16:33:51 | 显示全部楼层
我也遇到了这个问题,在打开fcitx的情况下,启动urxvt,xterm需要4秒。

以前用Red Flag时没有这个问题,现在转到Arch时出现了。

我的环境:
Arch 0.8 VooDoo
fcitx 3.5-2
urxvt 8.2

我在urxvt的代码中加入了一些标签,发现时间时花在下面这个函数中:
src/main.C line 1337
/*
* Try to open a XIM with the current modifiers, then see if we can
* open a suitable preedit type
*/
bool
rxvt_term::IM_get_IC (const char *modifiers)

应该是fcitx和urxvt的配合出了问题吧,希望有大侠能帮忙解决这个问题。
先谢谢了。
回复 支持 反对

使用道具 举报

发表于 2007-4-24 17:41:34 | 显示全部楼层
嗯,有空的时候看一下!
回复 支持 反对

使用道具 举报

发表于 2007-4-24 19:50:43 | 显示全部楼层
现在好了,urxvt启动又很快了!:-)
是XCreateFontSet太慢了,延迟都发生在这里。

rxvt_term::IM_get_IC中调用XCreateFontSet:

      sprintf (pat,
               "-*-*-*-R-*-*-%d-*-*-*-*-*-*,"
               "-*-*-*-R-*-*-%d-*-*-*-*-*-*,"
               "-*-*-*-R-*-*-%d-*-*-*-*-*-*,"
               "-*-*-*-R-*-*-%d-*-*-*-*-*-*,"
               "-*-*-*-R-*-*-%d-*-*-*-*-*-*,"
               "*",
               fheight,
               fheight + 1, fheight - 1,
               fheight - 2, fheight + 2);

      fs = XCreateFontSet (dpy, rs[Rs_imFont] ? rs[Rs_imFont] : pat,
                           &missing_charset_list, &missing_charset_count, &def_string);

我打印rs[Rs_imFont]发现是NULL,我将rs[Rs_imFont] ? rs[Rs_imFont] :
pat替换成"fixed"后,urxvt启动就飞快了。

好像是fcitx的字体设置没有传进来。

urxvt这里的处理好像并不影响fcitx,这里用"fixed",fcitx中仍然是用的东文宋体,我系统中TrueType中文只装了东文宋体,fcitx的中文字体是设置为"*"。XCreateFontSet这里用的是XLFD,fcitx应该是用的xft吧?urxvt这里的设置和fcitx有什么关系,Yuking能解释一下吗?谢谢!

rxvt_term::IM_get_IC后来调用了
Input_Context = XCreateIC (xim,
                             XNInputStyle, input_style,
                             XNClientWindow, vt,
                             XNFocusWindow, parent[0],
                             preedit_attr ? XNPreeditAttributes : NULL,
                             preedit_attr,
                             status_attr ? XNStatusAttributes : NULL,
                             status_attr, NULL);
来创建Input method context, 不知道和fcitx有什么关系。
回复 支持 反对

使用道具 举报

发表于 2007-4-24 20:01:23 | 显示全部楼层
不知道以前在Red Flag上为什么没有问题。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表