diff --git a/Makefile b/Makefile index 615bd97..e294977 100644 --- a/Makefile +++ b/Makefile @@ -36,7 +36,7 @@ BUILD_RELEASE_DIR=.release CC=gcc -m32 -BASE_CFLAGS=-Dstricmp=strcasecmp -Wunused -I./include/ +override BASE_CFLAGS += -Dstricmp=strcasecmp -Wunused -I./include/ RELEASE_CFLAGS=$(BASE_CFLAGS) -O2 -funroll-loops -ffast-math -fomit-frame-pointer -funsigned-char -fno-strength-reduce DEBUG_CFLAGS=$(BASE_CFLAGS) -g LDFLAGS=-lm -ldl @@ -181,6 +181,7 @@ NGUNIX_OBJS = \ $(BUILDDIR)/wad.o \ $(BUILDDIR)/world.o \ $(BUILDDIR)/tracker_linux.o \ + $(BUILDDIR)/xmms-ctl.o \ $(BUILDDIR)/cd_null.o \ $(BUILDDIR)/sys_linux.o \ $(BUILDDIR)/vid_x.o \ @@ -534,6 +535,9 @@ $(BUILDDIR)/world.o : $(MOUNT_DIR)/world.c $(BUILDDIR)/tracker_linux.o : $(MOUNT_DIR)/../tracker/tracker_linux.c $(DO_DUMB) +$(BUILDDIR)/xmms-ctl.o : $(MOUNT_DIR)/../audio/xmms-ctl.c + $(DO_DUMB) + $(BUILDDIR)/cd_null.o : $(MOUNT_DIR)/../audio/cd_null.c $(DO_CC) diff --git a/audio/snd_dma.c b/audio/snd_dma.c index 486b816..68880a1 100644 --- a/audio/snd_dma.c +++ b/audio/snd_dma.c @@ -315,6 +315,10 @@ void S_Shutdown(void) #endif Tracker_Shutdown(); +#ifdef XMMSCTL + XMMS_Shutdown(); +#endif + shm = 0; sound_started = 0; diff --git a/tracker/tracker_xmms-ctl.c b/audio/xmms-ctl.c similarity index 86% rename from tracker/tracker_xmms-ctl.c rename to audio/xmms-ctl.c index aa7f70e..4b607ec 100644 --- a/tracker/tracker_xmms-ctl.c +++ b/audio/xmms-ctl.c @@ -20,6 +20,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. #include "globaldef.h" +#ifdef XMMSCTL static int xmms_loop = 1; static int xmms_track; @@ -53,7 +54,7 @@ int XMMS_GetValue(char *parm) return value; } -void Tracker_Play(byte track, qboolean looping) +void XMMS_Play(byte track, qboolean looping) { char buffer [32]; int ctltemp; @@ -81,7 +82,7 @@ void Tracker_Play(byte track, qboolean looping) Con_Printf("XMMS: Now playing song %i, looping %i\n", xmms_track, xmms_loop); } -void Tracker_Stop(void) +void XMMS_Stop(void) { system("xmms-ctl -stop"); xmms_wasplaying = false; @@ -91,7 +92,7 @@ void Tracker_Stop(void) } -void Tracker_Pause(void) +void XMMS_Pause(void) { system("xmms-ctl -pause"); xmms_wasplaying = xmms_playing; @@ -101,7 +102,7 @@ void Tracker_Pause(void) } -void Tracker_Resume(void) +void XMMS_Resume(void) { if (!xmms_wasplaying) return; @@ -111,7 +112,7 @@ void Tracker_Resume(void) Con_Printf("XMMS: Resuming track %i\n", xmms_track); } -void Tracker_Update(void) +void XMMS_Update(void) { } @@ -127,25 +128,25 @@ static void XMMS_f (void) if (Q_strcasecmp(command, "play") == 0) { - Tracker_Play((byte)Q_atoi(Cmd_Argv (2)), false); + XMMS_Play((byte)Q_atoi(Cmd_Argv (2)), false); return; } if (Q_strcasecmp(command, "stop") == 0) { - Tracker_Stop(); + XMMS_Stop(); return; } if (Q_strcasecmp(command, "pause") == 0) { - Tracker_Pause(); + XMMS_Pause(); return; } if (Q_strcasecmp(command, "resume") == 0) { - Tracker_Resume(); + XMMS_Resume(); return; } @@ -156,7 +157,7 @@ static void XMMS_f (void) } } -int Tracker_Init(void) +int XMMS_Init(void) { FILE *fp; fp = popen("/usr/local/bin/xmms-ctl", "r"); @@ -177,12 +178,13 @@ int Tracker_Init(void) } -void Tracker_Shutdown(void) +void XMMS_Shutdown(void) { if(XMMS_GetValue("-get-advance") != xmms_old_advance) system("xmms-ctl -set-advance"); if(!XMMS_GetValue("-get-repeat") != xmms_old_repeat) system("xmms-ctl -set-repeat"); - Tracker_Stop(); // Because requested + XMMS_Stop(); // Because requested } +#endif diff --git a/engine/cl_parse.c b/engine/cl_parse.c index 1d4c3ca..310dcd7 100644 --- a/engine/cl_parse.c +++ b/engine/cl_parse.c @@ -1460,6 +1460,10 @@ void CL_ParseServerMessage (void) if (cl.paused) { Tracker_Pause (); + #ifdef XMMSCTL + XMMS_Pause(); + #endif + #ifdef _WIN32 VID_HandlePause (true); #endif @@ -1467,6 +1471,10 @@ void CL_ParseServerMessage (void) else { Tracker_Resume (); + #ifdef XMMSCTL + XMMS_Resume(); + #endif + #ifdef _WIN32 VID_HandlePause (false); #endif @@ -1527,9 +1535,19 @@ void CL_ParseServerMessage (void) cl.cdtrack = MSG_ReadByte (); cl.looptrack = MSG_ReadByte (); if ( (cls.demoplayback || cls.demorecording) && (cls.forcetrack != -1) ) + { Tracker_Play ((byte)cls.forcetrack, true); + #ifdef XMMSCTL + XMMS_Play ((byte)cls.forcetrack, true); + #endif + } else + { Tracker_Play ((byte)cl.cdtrack, true); + #ifdef XMMSCTL + XMMS_Play ((byte)cl.cdtrack, true); + #endif + } break; #endif diff --git a/engine/host.c b/engine/host.c index 832bb7a..9712b5c 100644 --- a/engine/host.c +++ b/engine/host.c @@ -1333,11 +1333,16 @@ void Host_Init (quakeparms_t *parms) #endif #ifndef BENCH - CDAudio_Init (); - Tracker_Init (); - Sbar_Init (); + CDAudio_Init (); + Tracker_Init (); + +#ifdef XMMSCTL + XMMS_Init(); #endif - CL_Init (); + + Sbar_Init (); +#endif + CL_Init (); #if defined(_WIN32) || defined(DOSQUAKE) // on non dos/win32, mouse comes before video for security reasons IN_Init (); @@ -1387,6 +1392,11 @@ void Host_Shutdown(void) #endif CDAudio_Shutdown (); Tracker_Shutdown (); + +#ifdef XMMSCTL + XMMS_Shutdown(); +#endif + NET_Shutdown (); S_Shutdown(); IN_Shutdown ();