1. 程式人生 > >解決SDL_Quit後再次啟動SDL視訊渲染無畫面問題

解決SDL_Quit後再次啟動SDL視訊渲染無畫面問題

背景

工作中使用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);