bool CWinSystemWin32::SetFullScreenEx(bool fullScreen, RESOLUTION_INFO& res, bool blankOtherDisplays, bool forceResChange) { m_IsAlteringWindow = true; CLog::Log(LOGDEBUG, "%s (%s) on screen %d with size %dx%d, refresh %f%s", __FUNCTION__, !fullScreen ? "windowed" : (CSettings::GetInstance().GetBool(CSettings::SETTING_VIDEOSCREEN_FAKEFULLSCREEN) ? "windowed fullscreen" : "true fullscreen"), res.iScreen, res.iWidth, res.iHeight, res.fRefreshRate, (res.dwFlags & D3DPRESENTFLAG_INTERLACED) ? "i" : ""); bool forceResize = false; if (m_nScreen != res.iScreen) { forceResize = true; RestoreDesktopResolution(m_nScreen); } if(m_hWnd && !m_bFullScreen && fullScreen) { // save position of windowed mode WINDOWINFO wi; wi.cbSize = sizeof(WINDOWINFO); if(GetWindowInfo(m_hWnd, &wi)) { m_nLeft = wi.rcClient.left; m_nTop = wi.rcClient.top; m_ValidWindowedPosition = true; } else CLog::Log(LOGERROR, "%s : GetWindowInfo failed with %d", __FUNCTION__, GetLastError()); } m_bFullScreen = fullScreen; m_nScreen = res.iScreen; m_nWidth = res.iWidth; m_nHeight = res.iHeight; m_bBlankOtherDisplay = blankOtherDisplays; if (fullScreen && CSettings::GetInstance().GetBool(CSettings::SETTING_VIDEOSCREEN_FAKEFULLSCREEN)) ChangeResolution(res, forceResChange); ResizeInternal(forceResize); BlankNonActiveMonitors(m_bBlankOtherDisplay); m_IsAlteringWindow = false; return true; }
bool CWinSystemWin32::SetFullScreen(bool fullScreen, RESOLUTION_INFO& res, bool blankOtherDisplays) { m_IsAlteringWindow = true; CLog::Log(LOGDEBUG, "%s (%s) on screen %d with size %dx%d, refresh %f%s", __FUNCTION__, !fullScreen ? "windowed" : (g_guiSettings.GetBool("videoscreen.fakefullscreen") ? "windowed fullscreen" : "true fullscreen"), res.iScreen, res.iWidth, res.iHeight, res.fRefreshRate, (res.dwFlags & D3DPRESENTFLAG_INTERLACED) ? "i" : ""); bool forceResize = false; if (m_nScreen != res.iScreen) { forceResize = true; RestoreDesktopResolution(m_nScreen); } if(!m_bFullScreen && fullScreen) { // save position of windowed mode WINDOWINFO wi; wi.cbSize = sizeof(WINDOWINFO); GetWindowInfo(m_hWnd, &wi); m_nLeft = wi.rcClient.left; m_nTop = wi.rcClient.top; m_ValidWindowedPosition = true; } m_bFullScreen = fullScreen; m_nScreen = res.iScreen; m_nWidth = res.iWidth; m_nHeight = res.iHeight; m_bBlankOtherDisplay = blankOtherDisplays; if (fullScreen && g_guiSettings.GetBool("videoscreen.fakefullscreen")) ChangeResolution(res); ResizeInternal(forceResize); BlankNonActiveMonitors(m_bBlankOtherDisplay); m_IsAlteringWindow = false; return true; }
bool CWinSystemWin32::DestroyWindowSystem() { RestoreDesktopResolution(m_nScreen); return true; }