背景
工作中使用MFC+SDL进行视频渲染显示,有下述现象:
1、每次播放开始时使用SDL_Init进行初始化,播放结束时使用SDL_Quit释放资源,再次播放开始时看不到画面,播放结束再开始只是播放功能的启停,此时进程正常运行,也未对MFC对话框及其控件做操作,此时数据流正常,只是画面无显示;
2、进程退出再启动后第一次播放画面正常;
3、将SDL_Init和SDL_Quit分别放到进程启动后和进程退出前,播放开始不执行SDL_Init,播放结束不执行SDL_Quit,反复开始和结束播放,画面正常。
应用环境
硬件环境:PC
操作系统:Win32
解决方法
经过查找资料,此问题最可能的原因是SDL_Quit将控件隐藏,导致再次开始播放后画面不显示,因此解决思路为开始播放后设置控件为可见,参见下述两种方法:
- 方法一(SDL方式):
使用SDL_ShowWindow()函数设置SDL_Window显示。
SDL_Window *sdlWindow = NULL;
sdlWindow = SDL_CreateWindowFrom((void *)pInterface->m_windowindex[0].hWnd);
SDL_ShowWindow(sdlWindow);
- 1
- 2
- 3
- 方法二(MFC方式):
使用ShowWindow()方法设置控件显示。
GetDlgItem(IDC_REMOTE_VIDEO)->ShowWindow(SW_SHOWNORMAL);
- 1