我有一個典型的SDL事件循環中調用SDL_WaitEvent
,跑進熱烈討論的問題(見here和here)在我的應用程序無法調整大小時重新繪製,因爲SDL_WaitEvent
不返回直到在某些平臺上完成調整大小(Win32 & Mac OS)。在每一次討論中,都提到了使用SDL_SetEventFilter
來解決這個問題的技巧,並且或多或少被接受爲解決方案和黑客。SDL2 SDL_SetEventFilter VS SDL_WaitEvent
使用SDL_SetEventFilter
方法完美地工作,但現在我正在查看我的代碼,並且實際上已將我的SDL_WaitEvent
中的所有代碼移動到EventFilter中,並僅處理那裏的事件。
建築上它的魚腥味。
除了在單獨的線程上被調用的可能性之外,是否有任何問題與這種將消息分派給我的應用程序的方法由SDL_SetEventFilter
設置?
獎勵問題:SDL如何在內部處理此問題?據我所知,這個調整大小的問題植根於底層平臺。例如,Win32將發出WM_SIZING,然後輸入自己的內部消息泵,直到發出WM_SIZE。什麼是觸發SDL EventFilter運行?
什麼是違反SDL_PollEvent?而不是無限期地等待事件,只要輪詢他們每個週期(如果有的話)。 – skypjack
這沒有幫助。 SDL_PollEvent的行爲與SDL_WaitEvent的行爲完全相同,將會阻止,直到調整大小/移動完成 –
如果它解決了問題,我不會將它作爲註釋發佈,對吧?這只是一個偏離主題的建議。 – skypjack