From 719093c10b4e98eb774e34ea878c8b9487e5905b Mon Sep 17 00:00:00 2001 From: Alibek Omarov Date: Wed, 22 Jan 2025 19:13:23 +0300 Subject: [PATCH] ref: properly return false to the engine if renderer refuses to load the model for some reason --- ref/gl/gl_context.c | 50 +++++++++++++++++++++++--------------------- ref/soft/r_context.c | 49 +++++++++++++++++++++---------------------- 2 files changed, 50 insertions(+), 49 deletions(-) diff --git a/ref/gl/gl_context.c b/ref/gl/gl_context.c index 8dd67d80..782dc9a9 100644 --- a/ref/gl/gl_context.c +++ b/ref/gl/gl_context.c @@ -124,33 +124,35 @@ static void Mod_UnloadTextures( model_t *mod ) static qboolean Mod_ProcessRenderData( model_t *mod, qboolean create, const byte *buf ) { - qboolean loaded = true; - - if( create ) - { - switch( mod->type ) - { - case mod_studio: - // Mod_LoadStudioModel( mod, buf, loaded ); - break; - case mod_sprite: - Mod_LoadSpriteModel( mod, buf, &loaded, mod->numtexinfo ); - break; - case mod_alias: - Mod_LoadAliasModel( mod, buf, &loaded ); - break; - case mod_brush: - // Mod_LoadBrushModel( mod, buf, loaded ); - break; - default: gEngfuncs.Host_Error( "%s: unsupported type %d\n", __func__, mod->type ); - } - } - - if( loaded && gEngfuncs.drawFuncs->Mod_ProcessUserData ) - gEngfuncs.drawFuncs->Mod_ProcessUserData( mod, create, buf ); + qboolean loaded = false; if( !create ) + { + if( gEngfuncs.drawFuncs->Mod_ProcessUserData ) + gEngfuncs.drawFuncs->Mod_ProcessUserData( mod, false, buf ); Mod_UnloadTextures( mod ); + return true; + } + + switch( mod->type ) + { + case mod_studio: + case mod_brush: + loaded = true; + break; + case mod_sprite: + Mod_LoadSpriteModel( mod, buf, &loaded, mod->numtexinfo ); + break; + case mod_alias: + Mod_LoadAliasModel( mod, buf, &loaded ); + break; + default: + gEngfuncs.Host_Error( "%s: unsupported type %d\n", __func__, mod->type ); + return false; + } + + if( gEngfuncs.drawFuncs->Mod_ProcessUserData ) + gEngfuncs.drawFuncs->Mod_ProcessUserData( mod, true, buf ); return loaded; } diff --git a/ref/soft/r_context.c b/ref/soft/r_context.c index 29d2375c..00e02d28 100644 --- a/ref/soft/r_context.c +++ b/ref/soft/r_context.c @@ -66,34 +66,33 @@ void Mod_UnloadTextures( model_t *mod ); static qboolean GAME_EXPORT Mod_ProcessRenderData( model_t *mod, qboolean create, const byte *buf ) { - qboolean loaded = true; - - if( create ) - { - switch( mod->type ) - { - case mod_studio: - // Mod_LoadStudioModel( mod, buf, loaded ); - break; - case mod_sprite: - Mod_LoadSpriteModel( mod, buf, &loaded, mod->numtexinfo ); - break; - case mod_alias: - // Mod_LoadAliasModel( mod, buf, &loaded ); - break; - case mod_brush: - // Mod_LoadBrushModel( mod, buf, loaded ); - break; - - default: gEngfuncs.Host_Error( "%s: unsupported type %d\n", __func__, mod->type ); - } - } - - if( loaded && gEngfuncs.drawFuncs->Mod_ProcessUserData ) - gEngfuncs.drawFuncs->Mod_ProcessUserData( mod, create, buf ); + qboolean loaded = false; if( !create ) + { + if( gEngfuncs.drawFuncs->Mod_ProcessUserData ) + gEngfuncs.drawFuncs->Mod_ProcessUserData( mod, false, buf ); Mod_UnloadTextures( mod ); + return true; + } + + switch( mod->type ) + { + case mod_studio: + case mod_brush: + case mod_alias: + loaded = true; + break; + case mod_sprite: + Mod_LoadSpriteModel( mod, buf, &loaded, mod->numtexinfo ); + break; + default: + gEngfuncs.Host_Error( "%s: unsupported type %d\n", __func__, mod->type ); + return false; + } + + if( gEngfuncs.drawFuncs->Mod_ProcessUserData ) + gEngfuncs.drawFuncs->Mod_ProcessUserData( mod, true, buf ); return loaded; }