mirror of
https://github.com/FWGS/xash3d-fwgs.git
synced 2026-08-05 03:24:56 +08:00
engine: client: make renderer loading failure less scary for the user
This commit is contained in:
@@ -572,7 +572,7 @@ static void R_GetRendererName( char *dest, size_t size, const char *opt )
|
||||
}
|
||||
}
|
||||
|
||||
static qboolean R_LoadRenderer( const char *refopt )
|
||||
static qboolean R_LoadRenderer( const char *refopt, qboolean quiet )
|
||||
{
|
||||
string refdll;
|
||||
|
||||
@@ -583,7 +583,8 @@ static qboolean R_LoadRenderer( const char *refopt )
|
||||
if( !R_LoadProgs( refdll ))
|
||||
{
|
||||
R_Shutdown();
|
||||
Sys_Warn( S_ERROR "Can't initialize %s renderer!\n", refdll );
|
||||
if( !quiet )
|
||||
Sys_Warn( S_ERROR "Can't initialize %s renderer!\n", refdll );
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -730,19 +731,23 @@ qboolean R_Init( void )
|
||||
requested_cvar[0] = 0;
|
||||
|
||||
if( Sys_GetParmFromCmdLine( "-ref", requested_cmdline ))
|
||||
success = R_LoadRenderer( requested_cmdline );
|
||||
success = R_LoadRenderer( requested_cmdline, false );
|
||||
|
||||
if( !success && COM_CheckString( r_refdll.string ) && Q_stricmp( requested_cmdline, r_refdll.string ))
|
||||
{
|
||||
Q_strncpy( requested_cvar, r_refdll.string, sizeof( requested_cvar ));
|
||||
success = R_LoadRenderer( requested_cvar );
|
||||
|
||||
// do not show scary messages to user if renderer set in config cannot be loaded
|
||||
// as game data could be copied from one platform to another, where this renderer
|
||||
// might not be supported (ref_gl on Android for example)
|
||||
success = R_LoadRenderer( requested_cvar, !host_developer.value );
|
||||
}
|
||||
|
||||
if( !success )
|
||||
{
|
||||
int i;
|
||||
|
||||
for( i = 0; i < ref.numRenderers && !success; i++ )
|
||||
for( i = 0; i < ref.numRenderers; i++ )
|
||||
{
|
||||
// skip renderer that was requested but failed to load
|
||||
if( !Q_strcmp( requested_cmdline, ref.shortNames[i] ))
|
||||
@@ -751,7 +756,19 @@ qboolean R_Init( void )
|
||||
if( !Q_strcmp( requested_cvar, ref.shortNames[i] ))
|
||||
continue;
|
||||
|
||||
success = R_LoadRenderer( ref.shortNames[i] );
|
||||
// do not show bruteforcing attempts, however, warn user about falling back
|
||||
// to software mode
|
||||
if( !Q_strcmp( "soft", ref.shortNames[i] ) && !host_developer.value )
|
||||
Sys_Warn( "Can't initialize any hardware accelerated renderer. Falling back to software rendering...\n" );
|
||||
|
||||
success = R_LoadRenderer( ref.shortNames[i], !host_developer.value );
|
||||
|
||||
if( success )
|
||||
{
|
||||
// remember last valid renderer
|
||||
Cvar_DirectSet( &r_refdll, ref.shortNames[i] );
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user