Implement m_bVsync.
This commit is contained in:
@@ -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,
|
||||||
|
|||||||
@@ -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; };
|
||||||
|
|||||||
@@ -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." );
|
||||||
|
|||||||
Reference in New Issue
Block a user