error handling fixes
This commit is contained in:
@@ -301,10 +301,11 @@ void BannerCache::CacheBanner( CString BannerPath )
|
||||
|
||||
void BannerCache::CacheBannerInternal( CString BannerPath )
|
||||
{
|
||||
RageSurface *img = RageSurfaceUtils::LoadFile( BannerPath );
|
||||
CString error;
|
||||
RageSurface *img = RageSurfaceUtils::LoadFile( BannerPath, error );
|
||||
if( img == NULL )
|
||||
{
|
||||
LOG->Warn( "BannerCache::CacheBanner: Couldn't load %s: %s", BannerPath.c_str(), SDL_GetError() );
|
||||
LOG->Warn( "BannerCache::CacheBanner: Couldn't load %s: %s", BannerPath.c_str(), error.c_str() );
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
@@ -11,9 +11,7 @@
|
||||
#include "RageSurface.h"
|
||||
#include "RageSurfaceUtils.h"
|
||||
|
||||
#include "SDL.h"
|
||||
#include "SDL_rotozoom.h"
|
||||
#include "SDL_utils.h"
|
||||
#include "SDL_dither.h"
|
||||
#include "RageSurface_Load.h"
|
||||
|
||||
@@ -69,12 +67,13 @@ void RageBitmapTexture::Create()
|
||||
|
||||
/* Create (and return) a surface ready to be loaded to OpenGL */
|
||||
/* Load the image into an SDL surface. */
|
||||
RageSurface *img = RageSurfaceUtils::LoadFile( actualID.filename );
|
||||
CString error;
|
||||
RageSurface *img = RageSurfaceUtils::LoadFile( actualID.filename, error );
|
||||
|
||||
/* Tolerate corrupt/unknown images. */
|
||||
if( img == NULL )
|
||||
{
|
||||
LOG->Warn( "RageBitmapTexture: Couldn't load %s: %s", actualID.filename.c_str(), SDL_GetError() );
|
||||
LOG->Warn( "RageBitmapTexture: Couldn't load %s: %s", actualID.filename.c_str(), error.c_str() );
|
||||
img = RageSurfaceUtils::MakeDummySurface( 64, 64 );
|
||||
ASSERT( img != NULL );
|
||||
}
|
||||
|
||||
@@ -97,13 +97,13 @@ static RageSurface *TryOpenFile( CString sPath, bool bHeaderOnly, CString &error
|
||||
return NULL;
|
||||
}
|
||||
|
||||
RageSurface *RageSurfaceUtils::LoadFile( const CString &sPath, bool bHeaderOnly )
|
||||
RageSurface *RageSurfaceUtils::LoadFile( const CString &sPath, CString &error, bool bHeaderOnly )
|
||||
{
|
||||
{
|
||||
RageFile TestOpen;
|
||||
if( !TestOpen.Open( sPath ) )
|
||||
{
|
||||
SDL_SetError( "%s", TestOpen.GetError().c_str() );
|
||||
error = TestOpen.GetError();
|
||||
return NULL;
|
||||
}
|
||||
}
|
||||
@@ -117,8 +117,6 @@ RageSurface *RageSurfaceUtils::LoadFile( const CString &sPath, bool bHeaderOnly
|
||||
CString format = GetExtension(sPath);
|
||||
format.MakeLower();
|
||||
|
||||
CString error = "";
|
||||
|
||||
bool bKeepTrying = true;
|
||||
|
||||
/* If the extension matches a format, try that first. */
|
||||
@@ -140,7 +138,6 @@ RageSurface *RageSurfaceUtils::LoadFile( const CString &sPath, bool bHeaderOnly
|
||||
}
|
||||
}
|
||||
|
||||
SDL_SetError( "%s", error.c_str() );
|
||||
return NULL;
|
||||
}
|
||||
|
||||
|
||||
@@ -13,7 +13,7 @@ namespace RageSurfaceUtils
|
||||
|
||||
/* If bHeaderOnly is true, the loader is only required to return a surface
|
||||
* with the width and height set (but may return a complete surface). */
|
||||
RageSurface *LoadFile( const CString &sPath, bool bHeaderOnly=false );
|
||||
RageSurface *LoadFile( const CString &sPath, CString &error, bool bHeaderOnly=false );
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
@@ -697,11 +697,13 @@ void Song::TidyUpData()
|
||||
continue; // skip
|
||||
|
||||
CString sPath = m_sSongDir + arrayImages[i];
|
||||
|
||||
/* We only care about the dimensions. */
|
||||
RageSurface *img = RageSurfaceUtils::LoadFile( sPath, true );
|
||||
CString error;
|
||||
RageSurface *img = RageSurfaceUtils::LoadFile( sPath, error, true );
|
||||
if( !img )
|
||||
{
|
||||
LOG->Trace("Couldn't load '%s': %s", sPath.c_str(), SDL_GetError());
|
||||
LOG->Trace( "Couldn't load '%s': %s", sPath.c_str(), error.c_str() );
|
||||
continue;
|
||||
}
|
||||
|
||||
|
||||
@@ -14,7 +14,8 @@ static HBITMAP g_hBitmap = NULL;
|
||||
/* Load a file into a GDI surface. */
|
||||
HBITMAP LoadWin32Surface( CString fn )
|
||||
{
|
||||
RageSurface *s = RageSurfaceUtils::LoadFile( fn );
|
||||
CString error;
|
||||
RageSurface *s = RageSurfaceUtils::LoadFile( fn, error );
|
||||
if( s == NULL )
|
||||
return NULL;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user