added function to disable/enable audio
authorBradley Bell <btb@icculus.org>
Wed, 19 Feb 2003 03:09:38 +0000 (03:09 +0000)
committerBradley Bell <btb@icculus.org>
Wed, 19 Feb 2003 03:09:38 +0000 (03:09 +0000)
include/libmve.h
libmve/mveplay.c
main/movie.c

index 7ebbfb5..74b055d 100644 (file)
@@ -8,4 +8,6 @@ int  MVE_rmStepMovie();
 void MVE_rmHoldMovie();
 void MVE_rmEndMovie();
 
+void MVE_sndInit(int x);
+
 #endif /* _LIBMVE_H */
index 8c6e427..f0f5f64 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: mveplay.c,v 1.3 2003-02-19 00:42:40 btb Exp $ */
+/* $Id: mveplay.c,v 1.4 2003-02-19 03:09:38 btb Exp $ */
 #ifdef HAVE_CONFIG_H
 #include <conf.h>
 #endif
@@ -30,7 +30,6 @@
 #include "u_mem.h"
 #include "gr.h"
 #include "palette.h"
-#include "args.h"
 #endif
 
 #ifdef STANDALONE
@@ -256,6 +255,7 @@ static int mve_audio_buftail=0;
 static int mve_audio_playing=0;
 static int mve_audio_canplay=0;
 static int mve_audio_compressed=0;
+static int mve_audio_enabled = 1;
 static SDL_AudioSpec *mve_audio_spec=NULL;
 
 static void mve_audio_callback(void *userdata, unsigned char *stream, int len)
@@ -330,16 +330,14 @@ static int create_audiobuf_handler(unsigned char major, unsigned char minor, uns
 
        int format;
 
+       if (!mve_audio_enabled)
+               return 1;
+
        if (audiobuf_created)
                return 1;
        else
                audiobuf_created = 1;
 
-#ifndef STANDALONE
-       if (FindArg("-nosound"))
-               return 1;
-#endif
-
        flags = get_ushort(data + 2);
        sample_rate = get_ushort(data + 4);
        desired_buffer = get_int(data + 6);
@@ -772,6 +770,9 @@ void playMovie(MVESTREAM *mve)
 {
        int init_timer=0;
        int cont=1;
+
+       mve_audio_enabled = 1;
+
        while (cont && playing)
        {
                cont = mve_play_next_chunk(mve);
@@ -887,9 +888,9 @@ void MVE_rmEndMovie()
        timer_created = 0;
 
 #ifdef AUDIO
-       SDL_CloseAudio();
        if (mve_audio_canplay) {
                // only close audio if we opened it
+               SDL_CloseAudio();
                mve_audio_canplay = 0;
        }
        for (i = 0; i < TOTAL_AUDIO_BUFFERS; i++)
@@ -925,4 +926,16 @@ void MVE_rmHoldMovie()
 {
        timer_started = 0;
 }
+
+
+void MVE_sndInit(int x)
+{
+#ifdef AUDIO
+       if (x == -1)
+               mve_audio_enabled = 0;
+       else
+               mve_audio_enabled = 1;
+#endif
+}
+
 #endif
index 01075ba..84e4a13 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: movie.c,v 1.18 2003-02-18 07:37:19 btb Exp $ */
+/* $Id: movie.c,v 1.19 2003-02-19 03:09:38 btb Exp $ */
 /*
 THE COMPUTER CODE CONTAINED HEREIN IS THE SOLE PROPERTY OF PARALLAX
 SOFTWARE CORPORATION ("PARALLAX").  PARALLAX, IN DISTRIBUTING THE CODE TO
@@ -17,7 +17,7 @@ COPYRIGHT 1993-1999 PARALLAX SOFTWARE CORPORATION.  ALL RIGHTS RESERVED.
 #endif
 
 #ifdef RCS
-static char rcsid[] = "$Id: movie.c,v 1.18 2003-02-18 07:37:19 btb Exp $";
+static char rcsid[] = "$Id: movie.c,v 1.19 2003-02-19 03:09:38 btb Exp $";
 #endif
 
 #define DEBUG_LEVEL CON_NORMAL
@@ -149,6 +149,12 @@ int PlayMovie(const char *filename, int must_have)
 
        digi_close();
 
+       // Start sound
+       if (!FindArg("-nosound"))
+               MVE_sndInit(1);
+       else
+               MVE_sndInit(-1);
+
        ret = RunMovie(name,MovieHires,must_have,-1,-1);
 
        if (!FindArg("-nosound"))
@@ -354,6 +360,8 @@ int InitRobotMovie(char *filename)
 
        con_printf(DEBUG_LEVEL, "RoboFile=%s\n", filename);
 
+       MVE_sndInit(-1);        //tell movies to play no sound for robots
+
        RoboFile = open_movie_file(filename, 1);
 
        if (RoboFile == -1) {