解決SDL_Quit後再次啟動SDL視訊渲染無畫面問題
阿新 • • 發佈:2018-12-12
背景
工作中使用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);
- 方法二(MFC方式): 使用ShowWindow()方法設定控制元件顯示。
GetDlgItem(IDC_REMOTE_VIDEO)->ShowWindow(SW_SHOWNORMAL);