【发布时间】:2012-09-10 18:02:54
【问题描述】:
我正在为 Linux 开发一个 GTK+ 应用程序,该应用程序是从另一个 GTK+ 应用程序使用 fork() 和 execvp() 启动的。
我注意到 exec() 的应用程序需要大约 10-15 秒才能完成对 gtk_widget_show_all() 的调用。这段时间后,小部件和窗口出现,应用程序运行完美。
所以应用程序的调用如下所示:
main_gtk_app -> fork() -> execvp(secondary_gtk_app)。 secondary_gtk_app 需要很长时间才能显示窗口和小部件。
但是,如果我直接运行应用程序,而不是从 GTK+ 应用程序执行 exec(),那么从命令行调用 gtk_widget_show_all() 不会有延迟。
调用:
shell命令行:./secondary_gtk_app(从命令行开始,显示窗口和小部件没有延迟)。
有人知道导致这种行为的原因吗?或者可以减少在gtk_widget_show_all() 中花费的时间长度的方法?
编辑:经过一些研究,似乎大部分延迟与 GTK+ 进行一些字体初始化有关。如果我运行fc-cache -f,它会预先在嵌入式设备上为Fontconfig 系统创建字体缓存,那么secondary_gtk_app 会在大约2 秒内加载。所以它与字体处理有关。
【问题讨论】: