diff --git a/src/raudio.c b/src/raudio.c index 8ac09b2f3..4bdbede9e 100644 --- a/src/raudio.c +++ b/src/raudio.c @@ -912,11 +912,11 @@ Sound LoadSoundFromWave(Wave wave) // Checks if a sound is ready bool IsSoundReady(Sound sound) { - return ((sound.frameCount > 0) && // Validate frame count - (sound.stream.buffer != NULL) && // Validate stream buffer - (sound.stream.sampleRate > 0) && // Validate sample rate is supported - (sound.stream.sampleSize > 0) && // Validate sample size is supported - (sound.stream.channels > 0)); // Validate number of channels supported + return ((sound.frameCount > 0) && // Validate frame count + (sound.stream.buffer != NULL) && // Validate stream buffer + (sound.stream.sampleRate > 0) && // Validate sample rate is supported + (sound.stream.sampleSize > 0) && // Validate sample size is supported + (sound.stream.channels > 0)); // Validate number of channels supported } // Unload wave data diff --git a/src/rmodels.c b/src/rmodels.c index b28e14dc1..a2b5dd888 100644 --- a/src/rmodels.c +++ b/src/rmodels.c @@ -1112,7 +1112,13 @@ Model LoadModelFromMesh(Mesh mesh) // Check if a model is ready bool IsModelReady(Model model) { - return model.meshes != NULL && model.materials != NULL && model.meshMaterial != NULL && model.meshCount > 0 && model.materialCount > 0; + return ((model.meshes != NULL) && // Validate model contains some mesh + (model.materials != NULL) && // Validate model contains some material (at least default one) + (model.meshMaterial != NULL) && // Validate mesh-material linkage + (model.meshCount > 0) && // Validate mesh count + (model.materialCount > 0)); // Validate material count + + // NOTE: This is a very general model validation, many elements could be validated from a model... } // Unload model (meshes/materials) from memory (RAM and/or VRAM) @@ -1959,7 +1965,8 @@ Material LoadMaterialDefault(void) // Check if a material is ready bool IsMaterialReady(Material material) { - return material.maps != NULL; + return ((material.maps != NULL) && // Validate material contain some map + (material.shader.id > 0)); // Validate material shader is valid } // Unload material from memory diff --git a/src/rtext.c b/src/rtext.c index f07261121..2d47bdf6c 100644 --- a/src/rtext.c +++ b/src/rtext.c @@ -538,7 +538,14 @@ Font LoadFontFromMemory(const char *fileType, const unsigned char *fileData, int // Check if a font is ready bool IsFontReady(Font font) { - return font.glyphs != NULL; + return ((font.texture.id > 0) && // Validate OpenGL id fot font texture atlas + (font.baseSize > 0) && // Validate font size + (font.glyphCount > 0) && // Validate font contains some glyph + (font.recs != NULL) && // Validate font recs defining glyphs on texture atlas + (font.glyphs != NULL)); // Validate glyph data is loaded + + // NOTE: Further validations could be done to verify if recs count and glyphs count + // match glyphCount and to verify that data contained is valid (glyphs values, metrics...) } // Load font data for further use diff --git a/src/rtextures.c b/src/rtextures.c index 56b200ce8..12bca8a8e 100644 --- a/src/rtextures.c +++ b/src/rtextures.c @@ -3362,7 +3362,9 @@ void UnloadTexture(Texture2D texture) // Check if a render texture is ready bool IsRenderTextureReady(RenderTexture2D target) { - return target.id > 0 && IsTextureReady(target.depth) && IsTextureReady(target.texture); + return ((target.id > 0) && // Validate OpenGL id + IsTextureReady(target.depth) && // Validate FBO depth texture/renderbuffer + IsTextureReady(target.texture)); // Validate FBO texture } // Unload render texture from GPU memory (VRAM)