void CRenderSystemGLES::SetVSync(bool enable) { if (m_bVSync==enable && m_bVsyncInit == true) return; if (!m_bRenderCreated) return; if (enable) CLog::Log(LOGINFO, "GLES: Enabling VSYNC"); else CLog::Log(LOGINFO, "GLES: Disabling VSYNC"); m_iVSyncMode = 0; m_iVSyncErrors = 0; m_bVSync = enable; m_bVsyncInit = true; SetVSyncImpl(enable); if (!enable) return; if (!m_iVSyncMode) CLog::Log(LOGERROR, "GLES: Vertical Blank Syncing unsupported"); else CLog::Log(LOGINFO, "GLES: Selected vsync mode %d", m_iVSyncMode); }
bool CWinSystemEGL::SetFullScreen(bool fullScreen, RESOLUTION_INFO& res, bool blankOtherDisplays) { CreateNewWindow("", fullScreen, res, NULL); CRenderSystemGLES::ResetRenderSystem(res.iWidth, res.iHeight, fullScreen, res.fRefreshRate); SetVSyncImpl(m_iVSyncMode); return true; }
bool CWinSystemEGL::ResizeWindow(int newWidth, int newHeight, int newLeft, int newTop) { CRenderSystemGLES::ResetRenderSystem(newWidth, newHeight, true, 0); int vsync_mode = CSettings::GetInstance().GetInt(CSettings::SETTING_VIDEOSCREEN_VSYNC); if (vsync_mode != VSYNC_DRIVER) SetVSyncImpl(m_iVSyncMode); return true; }
bool CWinSystemEGL::ResizeWindow(int newWidth, int newHeight, int newLeft, int newTop) { CRenderSystemGLES::ResetRenderSystem(newWidth, newHeight, true, 0); int vsync_mode = CSettings::Get().GetInt("videoscreen.vsync"); if (vsync_mode != VSYNC_DRIVER) SetVSyncImpl(m_iVSyncMode); return true; }
bool CWinSystemEGL::SetFullScreen(bool fullScreen, RESOLUTION_INFO& res, bool blankOtherDisplays) { CreateNewWindow("", fullScreen, res, NULL); CRenderSystemGLES::ResetRenderSystem(res.iWidth, res.iHeight, fullScreen, res.fRefreshRate); int vsync_mode = CSettings::GetInstance().GetInt(CSettings::SETTING_VIDEOSCREEN_VSYNC); if (vsync_mode != VSYNC_DRIVER) SetVSyncImpl(m_iVSyncMode); return true; }
void CRenderSystemGLES::SetVSync(bool enable) { if (m_bVSync==enable && m_bVsyncInit == true) return; if (!m_bRenderCreated) return; if (enable) CLog::Log(LOGINFO, "GLES: Enabling VSYNC"); else CLog::Log(LOGINFO, "GLES: Disabling VSYNC"); m_iVSyncMode = 0; m_iVSyncErrors = 0; m_iSwapRate = 0; m_bVSync = enable; m_bVsyncInit = true; SetVSyncImpl(enable); if (!enable) return; if (g_advancedSettings.m_ForcedSwapTime != 0.0) { /* some hardware busy wait on swap/glfinish, so we must manually sleep to avoid 100% cpu */ double rate = g_graphicsContext.GetFPS(); if (rate <= 0.0 || rate > 1000.0) { CLog::Log(LOGWARNING, "Unable to determine a valid horizontal refresh rate, vsync workaround disabled %.2g", rate); m_iSwapRate = 0; } else { int64_t freq; freq = CurrentHostFrequency(); m_iSwapRate = (int64_t)((double)freq / rate); m_iSwapTime = (int64_t)(0.001 * g_advancedSettings.m_ForcedSwapTime * freq); m_iSwapStamp = 0; CLog::Log(LOGINFO, "GLES: Using artificial vsync sleep with rate %f", rate); if(!m_iVSyncMode) m_iVSyncMode = 1; } } if (!m_iVSyncMode) CLog::Log(LOGERROR, "GLES: Vertical Blank Syncing unsupported"); else CLog::Log(LOGINFO, "GLES: Selected vsync mode %d", m_iVSyncMode); }
void CRenderSystemGL::SetVSync(bool enable) { if (m_bVSync == enable && m_bVsyncInit == true) return; if (!m_bRenderCreated) return; if (enable) CLog::Log(LOGINFO, "GL: Enabling VSYNC"); else CLog::Log(LOGINFO, "GL: Disabling VSYNC"); m_bVSync = enable; m_bVsyncInit = true; SetVSyncImpl(enable); }
bool CWinSystemEGL::ResizeWindow(int newWidth, int newHeight, int newLeft, int newTop) { CRenderSystemGLES::ResetRenderSystem(newWidth, newHeight, true, 0); SetVSyncImpl(m_iVSyncMode); return true; }