免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3150 | 回复: 3
打印 上一主题 下一主题

请教 画面阻塞 问题 [复制链接]

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

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

论坛徽章:
38
2017金鸡报晓
日期:2017-02-08 10:39:4215-16赛季CBA联赛之深圳
日期:2023-02-16 14:39:0220周年集字徽章-年
日期:2022-08-31 14:25:28黑曼巴
日期:2022-08-17 18:57:0919周年集字徽章-年
日期:2022-04-25 13:02:5920周年集字徽章-20	
日期:2022-03-29 11:10:4620周年集字徽章-年
日期:2022-03-14 22:35:1820周年集字徽章-周	
日期:2022-03-09 12:51:3220周年集字徽章-年
日期:2022-02-10 13:13:4420周年集字徽章-周	
日期:2022-02-03 12:09:4420周年集字徽章-20	
日期:2022-01-25 20:14:2720周年集字徽章-周	
日期:2022-01-13 15:12:33
2 [报告]
发表于 2008-07-17 22:07 |只看该作者
设计错

论坛徽章:
0
3 [报告]
发表于 2008-07-18 10:25 |只看该作者
原帖由 醉卧水云间 于 2008-7-17 22:07 发表
设计错

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

论坛徽章:
0
4 [报告]
发表于 2008-07-19 10:17 |只看该作者

回复 #2 醉卧水云间 的帖子

前辈,能不能说的具体一点,我知道在设计上肯定有问题,但是我是个初学者,不知道应该怎么设计才好。希望您能多多指教!谢谢!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP