ref: 9c38ec686f1a4592f52ee56d7ed4336299c8c5c9
parent: 7bf9829dbc35be88a7ff95a09ec7ea4f72b76a48
author: Simon Howard <fraggle@gmail.com>
date: Tue Sep 6 18:39:43 EDT 2005
Restore -nosound, -nosfx, -nomusic Subversion-branch: /trunk/chocolate-doom Subversion-revision: 80
--- a/src/i_sound.c
+++ b/src/i_sound.c
@@ -1,7 +1,7 @@
// Emacs style mode select -*- C++ -*-
//-----------------------------------------------------------------------------
//
-// $Id: i_sound.c 79 2005-09-06 21:40:28Z fraggle $
+// $Id: i_sound.c 80 2005-09-06 22:39:43Z fraggle $
//
// Copyright(C) 1993-1996 Id Software, Inc.
// Copyright(C) 2005 Simon Howard
@@ -22,6 +22,9 @@
// 02111-1307, USA.
//
// $Log$
+// Revision 1.16 2005/09/06 22:39:43 fraggle
+// Restore -nosound, -nosfx, -nomusic
+//
// Revision 1.15 2005/09/06 21:40:28 fraggle
// Setting music volume
//
@@ -80,7 +83,7 @@
//-----------------------------------------------------------------------------
static const char
-rcsid[] = "$Id: i_sound.c 79 2005-09-06 21:40:28Z fraggle $";
+rcsid[] = "$Id: i_sound.c 80 2005-09-06 22:39:43Z fraggle $";
#include <stdio.h>
#include <stdlib.h>
@@ -105,9 +108,10 @@
#define NUM_CHANNELS 16
-static int sound_initialised = 0;
+static boolean sound_initialised = false;
static Mix_Chunk sound_chunks[NUMSFX];
+
static byte *expand_sound_data(byte *data, int samplerate, int length)
{
byte *result = data;
@@ -249,8 +253,13 @@
int pitch,
int priority )
{
- Mix_Chunk *chunk = getsfx(id);
+ Mix_Chunk *chunk;
+ if (!sound_initialised)
+ return 0;
+
+ chunk = getsfx(id);
+
// play sound
Mix_PlayChannelTimed(channel, chunk, 0, -1);
@@ -266,6 +275,8 @@
void I_StopSound (int handle)
{
+ if (!sound_initialised)
+ return;
Mix_HaltChannel(handle);
}
@@ -272,6 +283,9 @@
int I_SoundIsPlaying(int handle)
{
+ if (!sound_initialised)
+ return false;
+
return Mix_Playing(handle);
}
@@ -320,6 +334,9 @@
{
int left, right;
+ if (!sound_initialised)
+ return;
+
left = ((254 - sep) * vol) / 15;
right = ((sep) * vol) / 15;
@@ -340,12 +357,16 @@
-
-
-
void
I_InitSound()
{
+ // If music or sound is going to play, we need to at least
+ // initialise SDL
+
+ if (M_CheckParm("-nosound")
+ || (M_CheckParm("-nosfx") && M_CheckParm("-nomusic")))
+ return;
+
if (SDL_Init(SDL_INIT_AUDIO) < 0)
{
fprintf(stderr, "Unable to set up sound.\n");
@@ -359,9 +380,14 @@
Mix_AllocateChannels(NUM_CHANNELS);
- sound_initialised = 1;
-
SDL_PauseAudio(0);
+
+ if (M_CheckParm("-nosound") || M_CheckParm("-nosfx"))
+ return;
+
+ sound_initialised = true;
+
+
}
@@ -372,9 +398,22 @@
// Still no music done.
// Remains. Dummies.
//
-void I_InitMusic(void) { }
-void I_ShutdownMusic(void) { }
+static int music_initialised;
+
+void I_InitMusic(void)
+{
+ if (M_CheckParm("-nomusic") || M_CheckParm("-nosound"))
+ return;
+
+ music_initialised = true;
+}
+
+void I_ShutdownMusic(void)
+{
+ music_initialised = false;
+}
+
static int looping=0;
static int musicdies=-1;
@@ -383,6 +422,9 @@
Mix_Music *music = (Mix_Music *) handle;
int loops;
+ if (!music_initialised)
+ return;
+
if (handle == NULL)
return;
@@ -396,16 +438,25 @@
void I_PauseSong (void *handle)
{
+ if (!music_initialised)
+ return;
+
Mix_PauseMusic();
}
void I_ResumeSong (void *handle)
{
+ if (!music_initialised)
+ return;
+
Mix_ResumeMusic();
}
void I_StopSong(void *handle)
{
+ if (!music_initialised)
+ return;
+
Mix_HaltMusic();
}
@@ -413,6 +464,9 @@
{
Mix_Music *music = (Mix_Music *) handle;
+ if (!music_initialised)
+ return;
+
if (handle == NULL)
return;
@@ -426,6 +480,9 @@
MIDI *mididata;
UBYTE *mid;
int midlen;
+
+ if (!music_initialised)
+ return NULL;
#ifdef _WIN32
sprintf(filename, "doom.mid");
@@ -475,6 +532,9 @@
// Is the song playing?
int I_QrySongPlaying(void *handle)
{
+ if (!music_initialised)
+ return false;
+
return Mix_PlayingMusic();
}
--- a/src/i_system.c
+++ b/src/i_system.c
@@ -1,7 +1,7 @@
// Emacs style mode select -*- C++ -*-
//-----------------------------------------------------------------------------
//
-// $Id: i_system.c 37 2005-08-04 18:42:15Z fraggle $
+// $Id: i_system.c 80 2005-09-06 22:39:43Z fraggle $
//
// Copyright(C) 1993-1996 Id Software, Inc.
// Copyright(C) 2005 Simon Howard
@@ -22,6 +22,9 @@
// 02111-1307, USA.
//
// $Log$
+// Revision 1.8 2005/09/06 22:39:43 fraggle
+// Restore -nosound, -nosfx, -nomusic
+//
// Revision 1.7 2005/08/04 18:42:15 fraggle
// Silence compiler warnings
//
@@ -49,7 +52,7 @@
//-----------------------------------------------------------------------------
static const char
-rcsid[] = "$Id: i_system.c 37 2005-08-04 18:42:15Z fraggle $";
+rcsid[] = "$Id: i_system.c 80 2005-09-06 22:39:43Z fraggle $";
#include <stdlib.h>
@@ -136,6 +139,7 @@
void I_Init (void)
{
I_InitSound();
+ I_InitMusic();
// initialise timer