Mercurial > hg > xemacs-beta
diff src/nas.c @ 1097:26274e0d7794
[xemacs-hg @ 2002-11-11 16:03:12 by stephent]
crash message <87of8wyy85.fsf@tleepslib.sk.tsukuba.ac.jp>
nas 1.6 <87isz4yy0o.fsf@tleepslib.sk.tsukuba.ac.jp>
warning fixes <87el9syvg4.fsf@tleepslib.sk.tsukuba.ac.jp>
author | stephent |
---|---|
date | Mon, 11 Nov 2002 16:03:57 +0000 |
parents | 6728e641994e |
children | 01c57eb70ae9 |
line wrap: on
line diff
--- a/src/nas.c Mon Nov 11 15:56:21 2002 +0000 +++ b/src/nas.c Mon Nov 11 16:03:57 2002 +0000 @@ -52,6 +52,12 @@ * 4/11/94, rjc Added wait_for_sounds to be called when user wants to * be sure all play has finished. * 1998-10-01 rlt Added support for WAVE files. + * 2002-10-16 Jon Trulson modifed this to work with NAS releases + * 1.5f and higher. We were using the private variable + * SoundFileInfo that doesn't exist anymore. But preserve + * backward compatibility. This will not work for some + * versions of NAS around 1.5b to 1.5f or so. Known to + * work on 1.2p5 and 1.6. */ #include <config.h> @@ -960,13 +966,28 @@ { Sound s; +#if (AudioLibraryVersionMajor >= 2 ) && (AudioLibraryVersionMinor >= 3) + SoundFileInfoProc toProc; +#endif if (!(s = (Sound) malloc (sizeof (SoundRec)))) return NULL; if ((s->formatInfo = SndOpenDataForReading ((Char_Binary *) data, length)) != NULL) { +#if (AudioLibraryVersionMajor >= 2 ) && (AudioLibraryVersionMinor >= 3) + if ((toProc = SoundFileGetProc(SoundFileFormatSnd, + SoundFileInfoProcTo)) == NULL) + { + SndCloseFile ((SndInfo *) (s->formatInfo)); + free (s); + + return NULL; + } + if (!((*toProc)(s))) +#else if (!((int(*)(Sound))(SoundFileInfo[SoundFileFormatSnd].toSound)) (s)) +#endif { SndCloseFile ((SndInfo *) (s->formatInfo)); free (s); @@ -975,7 +996,19 @@ } else if ((s->formatInfo = WaveOpenDataForReading ((Char_Binary *) data, length)) != NULL) { +#if (AudioLibraryVersionMajor >= 2 ) && (AudioLibraryVersionMinor >= 3) + if ((toProc = SoundFileGetProc(SoundFileFormatWave, + SoundFileInfoProcTo)) == NULL) + { + WaveCloseFile ((WaveInfo *) (s->formatInfo)); + free (s); + + return NULL; + } + if (!((*toProc)(s))) +#else if (!((int(*)(Sound))(SoundFileInfo[SoundFileFormatWave].toSound)) (s)) +#endif { WaveCloseFile ((WaveInfo *) (s->formatInfo)); free (s);