From ec99daeb31db00f87baf74908776fd54bdaa8ef2 Mon Sep 17 00:00:00 2001 From: Timo Korvola Date: Sat, 3 Mar 2018 14:54:30 +0200 Subject: [PATCH] Drastically simplify getaiff. Axe all conversion code (which was complicated and likely buggy) and let SDL_mixer take care of everything. --- src/sdl/Makefile | 2 +- src/sdl/sf_aiffwav.c | 2 ++ src/sdl/sf_sound.c | 23 ++++++++--------------- 3 files changed, 11 insertions(+), 16 deletions(-) diff --git a/src/sdl/Makefile b/src/sdl/Makefile index d8f5a5a..c0ca1fe 100644 --- a/src/sdl/Makefile +++ b/src/sdl/Makefile @@ -5,7 +5,7 @@ SDL_PKGS ?= libpng libjpeg libsdl SDL_mixer freetype2 zlib CFLAGS += `pkg-config $(SDL_PKGS) --cflags` ARFLAGS = rvU -SOURCES = sf_aiffwav.c sf_fonts.c sf_msg_en.c sf_resource.c sf_util.c \ +SOURCES = sf_fonts.c sf_msg_en.c sf_resource.c sf_util.c \ sf_deffont.c sf_ftype.c sf_osfdlg.c sf_sig.c sf_video.c \ sf_font3.c sf_images.c sf_sound.c generic.c diff --git a/src/sdl/sf_aiffwav.c b/src/sdl/sf_aiffwav.c index b79a839..8b9c8e3 100644 --- a/src/sdl/sf_aiffwav.c +++ b/src/sdl/sf_aiffwav.c @@ -4,6 +4,8 @@ // as libmikmod only reads WAV samples // +//XXX Dead code, whole file. + #include #include #include diff --git a/src/sdl/sf_sound.c b/src/sdl/sf_sound.c index dea4d99..0e61644 100644 --- a/src/sdl/sf_sound.c +++ b/src/sdl/sf_sound.c @@ -3,6 +3,7 @@ #include #include #include +#include #include "sf_frotz.h" #include "../blorb/blorblow.h" @@ -190,23 +191,15 @@ static void startmodule() static EFFECT *getaiff( FILE *f, size_t pos, int len, int num) { EFFECT *res; - void * data; int size; res = new_effect(SFX_TYPE,num); - if (!res) return res; - - if (sf_aiffwav(f,pos,&data,&size)==0) - { - res->sam = Mix_LoadWAV_RW(SDL_RWFromMem( data, size),0); - if (data) free(data); - } - - if (!res->sam) - { -//printf("Sample_LoadGeneric failure: %s\n",MikMod_strerror(MikMod_errno)); - res->destroy(res); - return NULL; - } + if (!res) return NULL; + if (fseek(f, pos, SEEK_SET) + || !(res->sam = Mix_LoadWAV_RW(SDL_RWFromFP(f, false), 1))) { + os_warn("Read error on audio data: %s", strerror(errno)); + res->destroy(res); + return NULL; + } //printf("AIFF loaded\n"); return res; } -- 2.34.1