请教 画面阻塞 问题

发布于 2022-08-13 18:34:25 字数 956 浏览 6 评论 3

各位好!
现在正在做一个项目,遇到一很棘手的问题,想向大家请教:
做一个界面系统,用GTK+和DirecFB来实现。
首先做一个不可见的小窗口,用它来接收键盘事件。再做一个显示窗口,用它显示画面。现在有这样一个问题,在做进度条更新的时候,每次进度条的更新都别的应用程序调用我的更新函数来进行的。第一次调用我的进度条描画函数时,画面能显示进度画面,但是,当调用我的更新函数时却没有任何变化。只要触动键盘上的一个按键,进度就会更新。而且更新完毕后,画面不会迁移到我想让它迁移到的画面(迁移也是别的应用程序调用我的描画函数)。
我在网上查一下,没有什么结果,就是有这样一个函数:
while(gtk_events_pending())
        gtk_main_iteration();
给出的解释是:是周期性的将控制返回到main loop,常用于与GTK+界面并行的计算,使界面保持响应,否则界面将阻塞。需要注意的是用了这个方法其实仍然在周期性的阻塞,因此一般在并行的计算较快或可预计的情况下才能接受这种效果,如果你的并行计算是网络连接且连接很慢,那么在连接超时之前GTK+界面将一直阻塞,所以如果涉及到网络连接一般应该用子进程或线程。

我把个函数加到我更新函数里,进度条能够显示更新了。但是画面还不能迁移。我又这个函数加到下一个要迁移到的画面的函数里。再次运行时,进度条能更新了,画面也迁移了。但这个函数使程序很不稳定,动不动就会异常退出。提示:GLib:ERRORgmain.c:2006):g_main_dispatch: assertion failed: (current->source == ¤t_source_link)
不知道是什么原因。希望大家能给我一些解答,谢谢!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

﹉夏雨初晴づ 2022-08-15 12:42:11

前辈,能不能说的具体一点,我知道在设计上肯定有问题,但是我是个初学者,不知道应该怎么设计才好。希望您能多多指教!谢谢!

空名 2022-08-15 12:36:10

原帖由 醉卧水云间 于 2008-7-17 22:07 发表
设计错

前辈,能不能说的具体一点,我知道在设计上肯定有问题,但是我是个初学者,不知道应该怎么设计才好。希望您能多多指教!谢谢!

塔塔猫 2022-08-15 12:22:33

设计错

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文