Что означает код HRESULT 0x087A0008 (DXGI_STATUS_MODE_CHANGE_IN_PROGRESS)?

 
Предыдущий Следующий
DXGI_STATUS_MODE_CHANGED DXGI_STATUS_UNOCCLUDED

DXGI_STATUS_MODE_CHANGE_IN_PROGRESS

Что означает DXGI_STATUS_MODE_CHANGE_IN_PROGRESS

DXGI_STATUS_MODE_CHANGE_IN_PROGRESS (0x087A0008) означает, что приложение вызвало IDXGISwapChain::ResizeTarget или IDXGISwapChain::SetFullscreenState, пока переход между оконным и полноэкранным режимом уже выполнялся. Microsoft описывает этот результат именно как состояние перехода, а не как повреждение swap chain.

Что проверить

  • Запишите, какой из двух методов вернул статус, запрошенное fullscreen/windowed состояние и текущий output. Это позволяет отличить конкурирующий mode switch от обычного Present.
  • Проверьте, не запускают ли два обработчика одновременно SetFullscreenState/ResizeTarget, например обработчик окна, пользовательская команда и код реакции на display change.
  • Не пересоздавайте device только из-за этого статуса. Сначала дождитесь завершения текущего mode transition и заново считайте фактическое состояние swap chain.

Как исправить

Сериализуйте операции смены режима и повторяйте запрос только после завершения предыдущего перехода. Если после этого меняется desktop режим дисплея, отдельно обработайте DXGI_STATUS_MODE_CHANGED и при необходимости согласуйте buffers с новым режимом.

Технические ссылки


Нужно найти другой код? Найти другой код состояния или ошибки.