关闭解码线程和gdk_threads_enter冲突问题
来源:互联网 发布:dnf深渊辅助软件 编辑:程序博客网 时间:2024/04/28 11:45
在做海康的mp4player二次开发时,我是自己解码的,碰到了一个问题,当用户点击播放停止,我去调用Hik_PlayM4_stop时会一直没响应地停在那里。但如果我把它设成系统解码的,那一切正常。再看了sdk文档,也没有明确说这个函数在用户解码时不可用之类的信息。
后来花了大半天时间,终生找到了问题的所在,原来在海康的解码线程,即Dec_CallBack回调函数里,在拷贝图像数据到SDL_Surface时,需要用到gdk_threads_enter()和gdk_threads_leave(),以取得gtk相关资源。但当我在外层调用Hik_PlayM4_stop(), 即SDK准备关闭这个通道的解码线程时,线程还在取得图像数据后,准备通过gdk_threads_enter()进入拷贝数据,而这时线程又被认为已经结束,不再可以获得gtk资源,于是一直等在那里,Hik_PlayM4_stop也就一直在等待线程的结束。
解决的方法是,当用户请求停止播放时,Dec_CallBack里先收到这个信息,再发消息,或者启动定时器去调用停止播放函数,然后从回调返回。其实也直接可以在回调里停止这个通道,但不知这样程序的可读性好不好。
- 关闭解码线程和gdk_threads_enter冲突问题
- 线程中的冲突问题
- 主线程和工作线程关闭的问题
- Web应用程序中线程的启动和关闭问题
- Web应用程序中线程的启动和关闭问题
- Web应用程序中线程的启动和关闭问题
- 编码和解码问题
- MFC关闭线程的问题
- VC++关闭线程的问题
- python父线程关闭后子线程不关闭问题
- MFC启动和关闭线程
- MFC启动和关闭线程
- 线程的取消和关闭
- linux线程中的问题-----数据冲突
- 待解决的问题 线程冲突!
- Java线程第二弹--资源冲突问题
- js解码和编码问题
- 关闭子线程和监视线程关闭的方法
- c#中volatile关键字的作用
- C# date format 使用C#格式化时间
- boost之插槽
- 惰性
- EMail 有关
- 关闭解码线程和gdk_threads_enter冲突问题
- SOCKET控制台双线程聊天程序
- lomboz-eclipse下开发Servlet程序
- java有关的一些小技巧
- 家里蹲
- myeclipse安装jadclipse(反编译工具)详解
- Linux 网络应用
- 技术与态度的问题
- 关于浮躁