From deb79e8c81cd2088669fea81743264a37c9de262 Mon Sep 17 00:00:00 2001 From: Gabor de Mooij Date: Mon, 27 Nov 2023 23:16:09 +0100 Subject: [PATCH] Fix audio bug. --- plugins/media/media.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/plugins/media/media.c b/plugins/media/media.c index 2317123c6..48cc82842 100644 --- a/plugins/media/media.c +++ b/plugins/media/media.c @@ -201,9 +201,13 @@ int CtrMaxMediaTimers = 100; void ctr_internal_media_fatalerror(char* msg, const char* info) { fprintf(stderr,"Media Plugin FATAL ERROR: %s (%s) \n", msg, info); SDL_Quit(); exit(1); } MediaIMG* ctr_internal_media_getfocusimage() { return (MediaIMG*) focusObject->value.rvalue->ptr; } MediaIMG* ctr_internal_media_getplayer() { return (controllableObject == NULL) ? NULL : (MediaIMG*) controllableObject->value.rvalue->ptr; } -MediaAUD* ctr_internal_get_audio_from_object(ctr_object* object) { return (MediaAUD*) object->value.rvalue->ptr; } char ctr_internal_media_has_selection() { return (CtrMediaSelectBegin != CtrMediaSelectEnd); } +MediaAUD* ctr_internal_get_audio_from_object(ctr_object* object) { + if (object->value.rvalue == NULL) return NULL; + return (MediaAUD*) object->value.rvalue->ptr; +} + MediaIMG* ctr_internal_get_image_from_object(ctr_object* object) { if (object->value.rvalue == NULL) return NULL; return (MediaIMG*) object->value.rvalue->ptr; @@ -1508,6 +1512,7 @@ ctr_object* ctr_sound_new_set(ctr_object* myself, ctr_argument* argumentList) { ctr_object* ctr_sound_play(ctr_object* myself, ctr_argument* argumentList) { MediaAUD* mediaAUD = ctr_internal_get_audio_from_object(myself); + if (mediaAUD == NULL) return myself; if (mediaAUD->blob != NULL) { Mix_PlayChannel(0, (Mix_Chunk*) mediaAUD->blob, 0); } @@ -1588,6 +1593,7 @@ ctr_object* ctr_music_new_set(ctr_object* myself, ctr_argument* argumentList) { ctr_object* ctr_music_play(ctr_object* myself, ctr_argument* argumentList) { MediaAUD* mediaAUD = ctr_internal_get_audio_from_object(myself); + if (mediaAUD == NULL) return myself; if (mediaAUD->blob != NULL) { Mix_FadeInMusic((Mix_Music*)mediaAUD->blob,-1,0); } @@ -1596,6 +1602,7 @@ ctr_object* ctr_music_play(ctr_object* myself, ctr_argument* argumentList) { ctr_object* ctr_music_silence(ctr_object* myself, ctr_argument* argumentList) { MediaAUD* mediaAUD = ctr_internal_get_audio_from_object(myself); + if (mediaAUD == NULL) return myself; if (mediaAUD->blob != NULL) { Mix_PauseMusic(); } @@ -1604,6 +1611,7 @@ ctr_object* ctr_music_silence(ctr_object* myself, ctr_argument* argumentList) { ctr_object* ctr_music_rewind(ctr_object* myself, ctr_argument* argumentList) { MediaAUD* mediaAUD = ctr_internal_get_audio_from_object(myself); + if (mediaAUD == NULL) return myself; if (mediaAUD->blob != NULL) { Mix_RewindMusic(); }