请教 画面阻塞 问题
各位好!
现在正在做一个项目,遇到一很棘手的问题,想向大家请教:
做一个界面系统,用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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
前辈,能不能说的具体一点,我知道在设计上肯定有问题,但是我是个初学者,不知道应该怎么设计才好。希望您能多多指教!谢谢!
前辈,能不能说的具体一点,我知道在设计上肯定有问题,但是我是个初学者,不知道应该怎么设计才好。希望您能多多指教!谢谢!
设计错