我正在GTK+
为 Linux 开发一个应用程序,该应用程序是从另一个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 秒内加载。所以它与字体处理有关。