Cosmetic changes based on feedback on PR #506.

This commit is contained in:
Jules Blok 2014-07-16 22:13:13 +02:00
parent 5837b35add
commit d00e76b3ef
2 changed files with 15 additions and 9 deletions

View File

@ -314,6 +314,9 @@ HRESULT Create(HWND wnd)
return E_FAIL; return E_FAIL;
} }
// prevent DXGI from responding to Alt+Enter, unfortunately DXGI_MWA_NO_ALT_ENTER
// does not work so we disable all monitoring of window messages. However this
// may make it more difficult for DXGI to handle display mode changes.
hr = factory->MakeWindowAssociation(wnd, DXGI_MWA_NO_WINDOW_CHANGES); hr = factory->MakeWindowAssociation(wnd, DXGI_MWA_NO_WINDOW_CHANGES);
if (FAILED(hr)) MessageBox(wnd, _T("Failed to associate the window"), _T("Dolphin Direct3D 11 backend"), MB_OK | MB_ICONERROR); if (FAILED(hr)) MessageBox(wnd, _T("Failed to associate the window"), _T("Dolphin Direct3D 11 backend"), MB_OK | MB_ICONERROR);

View File

@ -42,7 +42,7 @@ static u32 s_LastAA = 0;
static Television s_television; static Television s_television;
static bool s_LastFS = false; static bool s_last_fullscreen_mode = false;
ID3D11Buffer* access_efb_cbuf = nullptr; ID3D11Buffer* access_efb_cbuf = nullptr;
ID3D11BlendState* clearblendstates[4] = {nullptr}; ID3D11BlendState* clearblendstates[4] = {nullptr};
@ -940,13 +940,16 @@ void Renderer::SwapImpl(u32 xfbAddr, u32 fbWidth, u32 fbHeight,const EFBRectangl
const bool windowResized = CheckForResize(); const bool windowResized = CheckForResize();
const bool fullscreen = g_ActiveConfig.bFullscreen; const bool fullscreen = g_ActiveConfig.bFullscreen;
bool fsChanged = s_LastFS != fullscreen; bool fullscreen_changed = s_last_fullscreen_mode != fullscreen;
BOOL fsState; BOOL fullscreen_state;
if (SUCCEEDED(D3D::swapchain->GetFullscreenState(&fsState, nullptr)) && !!fsState != fullscreen) if (SUCCEEDED(D3D::swapchain->GetFullscreenState(&fullscreen_state, nullptr)))
{ {
// We should be in fullscreen, but we're not. Restore it when we regain focus. if (!!fullscreen_state != fullscreen)
fsChanged = Host_RendererHasFocus(); {
// We should be in fullscreen, but we're not. Restore it when we regain focus.
fullscreen_changed = Host_RendererHasFocus();
}
} }
bool xfbchanged = false; bool xfbchanged = false;
@ -966,15 +969,15 @@ void Renderer::SwapImpl(u32 xfbAddr, u32 fbWidth, u32 fbHeight,const EFBRectangl
// resize the back buffers NOW to avoid flickering // resize the back buffers NOW to avoid flickering
if (xfbchanged || if (xfbchanged ||
windowResized || windowResized ||
fsChanged || fullscreen_changed ||
s_LastEFBScale != g_ActiveConfig.iEFBScale || s_LastEFBScale != g_ActiveConfig.iEFBScale ||
s_LastAA != g_ActiveConfig.iMultisampleMode) s_LastAA != g_ActiveConfig.iMultisampleMode)
{ {
s_LastAA = g_ActiveConfig.iMultisampleMode; s_LastAA = g_ActiveConfig.iMultisampleMode;
s_LastFS = g_ActiveConfig.bFullscreen; s_last_fullscreen_mode = fullscreen;
PixelShaderCache::InvalidateMSAAShaders(); PixelShaderCache::InvalidateMSAAShaders();
if (windowResized || fsChanged) if (windowResized || fullscreen_changed)
{ {
// TODO: Aren't we still holding a reference to the back buffer right now? // TODO: Aren't we still holding a reference to the back buffer right now?
D3D::Reset(); D3D::Reset();