gtk_drawing_area自己捕捉expose事件,导致非法内存读写,程序退出,为什么?

发布于 2022-08-14 08:57:26 字数 425 浏览 8 评论 1

要显示一个视频文件,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 技术交流群。

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

发布评论

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

评论(1

自控 2022-08-24 23:49:47

原帖由 KOFKS 于 2009-6-3 11:31 发表
要显示一个视频文件,gtk+作框架,视频文件用另外的库处理。使用gtk_drawing_area,然后用g_timeout定时给gtk_drawing_area发送expose事件。在expose事件的callback函数里面完成对gtk_drawing_area的绘制。
这 ...

没有找到问题原因,用别的方法解决了。
猜测可能expose事件需要相关的参数,我的程序中调用g_signal_emit_by_name的时候参数部分用的是NULL,可能造成参数不正确的问题。
解决方法是,不自己触发expose事件,而是使用gdk_window_invalidate_rect,然后这个函数就会正确的发送对应的expose事件。

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