2009-12-09 49 views
0

這是我的問題... 還有就是要檢查當應用程序在DXGI(DX10/11)進入全屏模式的方法。 對於全屏顯示我的意思是系統已完成模式更改。 因爲我需要它來防止死鎖和調整時間。 (我有一個多線程引擎和現在是不是消息泵線程引起的模式改變僵局上隨機)) 其實我讓它等待1秒繼續處理消息泵線程上的消息和它的工作,但我想要的東西更多的確定性告訴我「嘿,模式改變完成了,你現在處於全屏模式」。 :d檢查應用程序何時全屏顯示。 (DXGI/DirectX10的)

任何想法?

回答

1

是否有任何理由,你不能運行的渲染和消息泵線程爲同一線程?

按照文檔沒有什麼,告訴你的變化是完整的。

奇怪的是,雖然,DXGI依賴於來自內部的SendMessage呼叫(通過在多線程環境中的消息泵發生)得到返回的響應。所以我不知道如何延遲你的消息泵修復問題。它只會讓DXGI在繼續做其他事情之前多等一會兒。死鎖通常意味着您正在做一些事情,導致消息泵阻止等待渲染線程執行某些操作。

+0

我不能在同一線程上運行它們,因爲我允許多個引擎和線程每個引擎的可能性(其中之一是拉線(順便說一句,工作在DX9模式罰款))。 看來,如果我等待模式更改完成,DXGI不會再陷入僵局。 (爲了等待,我仍在處理這些消息,並且在測試標誌處於活動狀態的第二秒或更長時間內進行假冒禮物) – feal87 2009-12-09 14:03:38

+0

我在此期間發現了另一個臨時解決方案。 我的任務計劃程序在繼續工作之前等待所有子線程完成。等待使用WaitHandles和WaitAll()完成。我把1秒的超時這個電話,如果呼叫失敗(1秒獲得通過),它處理所有的Windows消息,然後重新啓動等待。 (這種方式一切正常) – feal87 2009-12-09 14:08:03

相關問題