gtk_drawing_area自己捕捉expose事件,导致非法内存读写,程序退出,为什么?
要显示一个视频文件,gtk+作框架,视频文件用另外的库处理。使用gtk_drawing_area,然后用g_timeout定时给gtk_drawing_area发送expose事件。在expose事件的callback函数里面完成对gtk_drawing_area的绘制。
这个方案有问题么?
为什么一旦有其他原因产生了expose事件,比如把另一个窗口遮住了程序窗口的一部分,程序就崩溃了,提示“段错误"。
为什么会有段错误?程序就一个gtk_window里面加了个gtk_drawing_area,为了避免视频库的问题,用图片测试。每次重复绘制这个图片。
猜测是expose事件处理的部分有问题,怎么解决呢?
哪位帮忙给个方法,先谢谢了
[ 本帖最后由 KOFKS 于 2009-6-3 11:32 编辑 ]
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
没有找到问题原因,用别的方法解决了。
猜测可能expose事件需要相关的参数,我的程序中调用g_signal_emit_by_name的时候参数部分用的是NULL,可能造成参数不正确的问题。
解决方法是,不自己触发expose事件,而是使用gdk_window_invalidate_rect,然后这个函数就会正确的发送对应的expose事件。