diff --git a/stepmania/src/RageDisplay.cpp b/stepmania/src/RageDisplay.cpp index 4f3ca12704..a643855361 100644 --- a/stepmania/src/RageDisplay.cpp +++ b/stepmania/src/RageDisplay.cpp @@ -95,8 +95,7 @@ bool RageDisplay::SetVideoMode( VideoModeParams p ) if( this->TryVideoMode(p,bNeedReloadTextures) == "" ) return bNeedReloadTextures; - RageException::ThrowNonfatal( "SetVideoMode failed: %s. Tried to fall back to other modes, but nothing worked.", - err.c_str() ); + RageException::ThrowNonfatal( "SetVideoMode failed: %s", err.c_str() ); } void RageDisplay::ProcessStatsOnFlip() diff --git a/stepmania/src/RageDisplay_OGL.cpp b/stepmania/src/RageDisplay_OGL.cpp index b7a3673e87..df7b349635 100644 --- a/stepmania/src/RageDisplay_OGL.cpp +++ b/stepmania/src/RageDisplay_OGL.cpp @@ -538,8 +538,10 @@ void RageDisplay_OGL::ResolutionChanged() CString RageDisplay_OGL::TryVideoMode( VideoModeParams p, bool &bNewDeviceOut ) { // LOG->Trace( "RageDisplay_OGL::SetVideoMode( %d, %d, %d, %d, %d, %d )", windowed, width, height, bpp, rate, vsync ); - if( !wind->TryVideoMode( p, bNewDeviceOut ) ) - return "wind->TryVideoMode() failed"; // failed to set video mode XXX: error message + CString err; + err = wind->TryVideoMode( p, bNewDeviceOut ); + if( err != "" ) + return err; // failed to set video mode if( bNewDeviceOut ) { diff --git a/stepmania/src/arch/LowLevelWindow/LowLevelWindow.h b/stepmania/src/arch/LowLevelWindow/LowLevelWindow.h index 7ac164fbfd..241257571f 100644 --- a/stepmania/src/arch/LowLevelWindow/LowLevelWindow.h +++ b/stepmania/src/arch/LowLevelWindow/LowLevelWindow.h @@ -14,10 +14,10 @@ public: virtual void *GetProcAddress(CString s) = 0; - // Return true if mode change was successful. + // Return "" if mode change was successful, otherwise an error message. // bNewDeviceOut is set true if a new device was created and textures // need to be reloaded. - virtual bool TryVideoMode( RageDisplay::VideoModeParams p, bool &bNewDeviceOut ) = 0; + virtual CString TryVideoMode( RageDisplay::VideoModeParams p, bool &bNewDeviceOut ) = 0; virtual void SwapBuffers() = 0; virtual void Update(float fDeltaTime) { } diff --git a/stepmania/src/arch/LowLevelWindow/LowLevelWindow_SDL.cpp b/stepmania/src/arch/LowLevelWindow/LowLevelWindow_SDL.cpp index cb1e49ded6..17be8fbad3 100644 --- a/stepmania/src/arch/LowLevelWindow/LowLevelWindow_SDL.cpp +++ b/stepmania/src/arch/LowLevelWindow/LowLevelWindow_SDL.cpp @@ -32,7 +32,7 @@ void *LowLevelWindow_SDL::GetProcAddress(CString s) return SDL_GL_GetProcAddress(s); } -bool LowLevelWindow_SDL::TryVideoMode( RageDisplay::VideoModeParams p, bool &bNewDeviceOut ) +CString LowLevelWindow_SDL::TryVideoMode( RageDisplay::VideoModeParams p, bool &bNewDeviceOut ) { CurrentParams = p; @@ -115,7 +115,7 @@ bool LowLevelWindow_SDL::TryVideoMode( RageDisplay::VideoModeParams p, bool &bNe if(!screen) { LOG->Trace("SDL_SetVideoMode failed: %s", SDL_GetError()); - return false; // failed to set mode + return SDL_GetError(); // failed to set mode } bNewDeviceOut = true; // always a new context because we're resetting SDL_Video @@ -152,7 +152,7 @@ bool LowLevelWindow_SDL::TryVideoMode( RageDisplay::VideoModeParams p, bool &bNe colorbits, r, g, b, a, depth, stencil); } - return true; // we set the video mode successfully + return ""; // we set the video mode successfully } void LowLevelWindow_SDL::SwapBuffers() diff --git a/stepmania/src/arch/LowLevelWindow/LowLevelWindow_SDL.h b/stepmania/src/arch/LowLevelWindow/LowLevelWindow_SDL.h index 0bd4062fc0..4b3e494144 100644 --- a/stepmania/src/arch/LowLevelWindow/LowLevelWindow_SDL.h +++ b/stepmania/src/arch/LowLevelWindow/LowLevelWindow_SDL.h @@ -11,7 +11,7 @@ public: LowLevelWindow_SDL(); ~LowLevelWindow_SDL(); void *GetProcAddress(CString s); - bool TryVideoMode( RageDisplay::VideoModeParams p, bool &bNewDeviceOut ); + CString TryVideoMode( RageDisplay::VideoModeParams p, bool &bNewDeviceOut ); void SwapBuffers(); void Update(float fDeltaTime);