Implement m_bVsync.

This commit is contained in:
Glenn Maynard
2002-09-03 00:22:00 +00:00
parent 153d62b070
commit 0b75b00f55
3 changed files with 14 additions and 10 deletions
+7 -3
View File
@@ -244,9 +244,9 @@ D3DFORMAT RageDisplay::FindBackBufferType(bool bWindowed, int iBPP)
// Desc: // Desc:
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
bool RageDisplay::SwitchDisplayMode( bool RageDisplay::SwitchDisplayMode(
const bool bWindowed, const int iWidth, const int iHeight, const int iBPP, const int iFullScreenHz ) bool bWindowed, int iWidth, int iHeight, int iBPP, int iFullScreenHz, bool bVsync )
{ {
LOG->Trace( "RageDisplay::SwitchDisplayModes( %d, %d, %d, %d, %d )", bWindowed, iWidth, iHeight, iBPP, iFullScreenHz ); LOG->Trace( "RageDisplay::SwitchDisplayModes( %d, %d, %d, %d, %d, %d )", bWindowed, iWidth, iHeight, iBPP, iFullScreenHz, bVsync );
if( !bWindowed ) if( !bWindowed )
SetCursor( NULL ); SetCursor( NULL );
@@ -281,7 +281,11 @@ bool RageDisplay::SwitchDisplayMode(
iFullScreenHz == REFRESH_MAX? MaxRefresh(iWidth, iHeight, fmtBackBuffer): iFullScreenHz == REFRESH_MAX? MaxRefresh(iWidth, iHeight, fmtBackBuffer):
iFullScreenHz == REFRESH_DEFAULT? D3DPRESENT_RATE_DEFAULT: iFullScreenHz == REFRESH_DEFAULT? D3DPRESENT_RATE_DEFAULT:
iFullScreenHz; iFullScreenHz;
m_d3dpp.FullScreen_PresentationInterval = D3DPRESENT_INTERVAL_DEFAULT;
/* Windowed must always use D3DPRESENT_INTERVAL_DEFAULT. */
m_d3dpp.FullScreen_PresentationInterval =
bWindowed || bVsync? D3DPRESENT_INTERVAL_DEFAULT:
D3DPRESENT_INTERVAL_IMMEDIATE;
LOG->Trace( "Present Parameters: %d, %d, %d, %d, %d, %d, %d, %d, %d, %d, %d, %d, %d", LOG->Trace( "Present Parameters: %d, %d, %d, %d, %d, %d, %d, %d, %d, %d, %d, %d, %d",
m_d3dpp.BackBufferWidth, m_d3dpp.BackBufferHeight, m_d3dpp.BackBufferFormat, m_d3dpp.BackBufferWidth, m_d3dpp.BackBufferHeight, m_d3dpp.BackBufferFormat,
+1 -1
View File
@@ -51,7 +51,7 @@ public:
~RageDisplay(); ~RageDisplay();
enum { REFRESH_DEFAULT=0, REFRESH_MAX=1 }; enum { REFRESH_DEFAULT=0, REFRESH_MAX=1 };
bool SwitchDisplayMode( bool SwitchDisplayMode(
const bool bWindowed, const int iWidth, const int iHeight, const int iBPP, const int iFullScreenHz ); bool bWindowed, int iWidth, int iHeight, int iBPP, int iFullScreenHz, bool bVsync );
// LPDIRECT3D8 GetD3D() { return m_pd3d; }; // LPDIRECT3D8 GetD3D() { return m_pd3d; };
// inline LPDIRECT3DDEVICE8 GetDevice() { return m_pd3dDevice; }; // inline LPDIRECT3DDEVICE8 GetDevice() { return m_pd3dDevice; };
+6 -6
View File
@@ -966,34 +966,34 @@ void ApplyGraphicOptions()
// //
// If the requested resolution doesn't work, keep switching until we find one that does. // If the requested resolution doesn't work, keep switching until we find one that does.
// //
if( DISPLAY->SwitchDisplayMode(bWindowed, iDisplayWidth, iDisplayHeight, iDisplayBPP, iRefreshRate) ) if( DISPLAY->SwitchDisplayMode(bWindowed, iDisplayWidth, iDisplayHeight, iDisplayBPP, iRefreshRate, PREFSMAN->m_bVsync ) )
goto success; goto success;
// We failed. Using default refresh rate. // We failed. Using default refresh rate.
iRefreshRate = RageDisplay::REFRESH_DEFAULT; iRefreshRate = RageDisplay::REFRESH_DEFAULT;
if( DISPLAY->SwitchDisplayMode(bWindowed, iDisplayWidth, iDisplayHeight, iDisplayBPP, iRefreshRate) ) if( DISPLAY->SwitchDisplayMode(bWindowed, iDisplayWidth, iDisplayHeight, iDisplayBPP, iRefreshRate, PREFSMAN->m_bVsync ) )
goto success; goto success;
// We failed. Try full screen with same params. // We failed. Try full screen with same params.
bWindowed = false; bWindowed = false;
if( DISPLAY->SwitchDisplayMode(bWindowed, iDisplayWidth, iDisplayHeight, iDisplayBPP, iRefreshRate) ) if( DISPLAY->SwitchDisplayMode(bWindowed, iDisplayWidth, iDisplayHeight, iDisplayBPP, iRefreshRate, PREFSMAN->m_bVsync ) )
goto success; goto success;
// Failed again. Try 16 BPP // Failed again. Try 16 BPP
iDisplayBPP = 16; iDisplayBPP = 16;
if( DISPLAY->SwitchDisplayMode(bWindowed, iDisplayWidth, iDisplayHeight, iDisplayBPP, iRefreshRate) ) if( DISPLAY->SwitchDisplayMode(bWindowed, iDisplayWidth, iDisplayHeight, iDisplayBPP, iRefreshRate, PREFSMAN->m_bVsync ) )
goto success; goto success;
// Failed again. Try 640x480 // Failed again. Try 640x480
iDisplayWidth = 640; iDisplayWidth = 640;
iDisplayHeight = 480; iDisplayHeight = 480;
if( DISPLAY->SwitchDisplayMode(bWindowed, iDisplayWidth, iDisplayHeight, iDisplayBPP, iRefreshRate) ) if( DISPLAY->SwitchDisplayMode(bWindowed, iDisplayWidth, iDisplayHeight, iDisplayBPP, iRefreshRate, PREFSMAN->m_bVsync ) )
goto success; goto success;
// Failed again. Try 320x240 // Failed again. Try 320x240
iDisplayWidth = 320; iDisplayWidth = 320;
iDisplayHeight = 240; iDisplayHeight = 240;
if( DISPLAY->SwitchDisplayMode(bWindowed, iDisplayWidth, iDisplayHeight, iDisplayBPP, iRefreshRate) ) if( DISPLAY->SwitchDisplayMode(bWindowed, iDisplayWidth, iDisplayHeight, iDisplayBPP, iRefreshRate, PREFSMAN->m_bVsync ) )
goto success; goto success;
throw RageException( "Tried every possible display mode, and couldn't find one that works." ); throw RageException( "Tried every possible display mode, and couldn't find one that works." );