From 2ff81bfb843ba3ab6fe333e38775c42f4193708f Mon Sep 17 00:00:00 2001 From: molivier Date: Thu, 11 Dec 2003 13:52:46 +0000 Subject: [PATCH] Factorized audio CD code git-svn-id: svn://svn.icculus.org/twilight/trunk/darkplaces@3720 d7cf8633-e32d-0410-b094-e92efae38249 --- cd_linux.c | 371 +++++++++++-------------------------------------- cd_win.c | 316 ++++++----------------------------------- cdaudio.h | 5 + darkplaces.dsp | 4 + makefile | 4 +- 5 files changed, 129 insertions(+), 571 deletions(-) diff --git a/cd_linux.c b/cd_linux.c index 7d523795..140a6b48 100644 --- a/cd_linux.c +++ b/cd_linux.c @@ -20,67 +20,52 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. // Quake is a trademark of Id Software, Inc., (c) 1996 Id Software, Inc. All // rights reserved. -#include -#include -#include +#include #include -#include -#include + +#include #include -#include #include -#include - -#include +#include #include "quakedef.h" -// used by menu to ghost CD audio slider -cvar_t cdaudioinitialized = {CVAR_READONLY,"cdaudioinitialized","0"}; -static qboolean cdValid = false; -static qboolean playing = false; -static qboolean wasPlaying = false; -static qboolean initialized = false; -static qboolean enabled = true; -static qboolean playLooping = false; -static float cdvolume; -static qbyte remap[100]; -static qbyte playTrack; -static qbyte maxTrack; + +extern qboolean cdPlaying; +extern qboolean cdPlayLooping; +extern qbyte cdPlayTrack; static int cdfile = -1; static char cd_dev[64] = "/dev/cdrom"; -static void CDAudio_Eject(void) +void CDAudio_SysEject (void) { - if (cdfile == -1 || !enabled) - return; // no cd init'd + if (cdfile == -1) + return; - if ( ioctl(cdfile, CDROMEJECT) == -1 ) + if (ioctl(cdfile, CDROMEJECT) == -1) Con_DPrintf("ioctl cdromeject failed\n"); } -static void CDAudio_CloseDoor(void) +void CDAudio_SysCloseDoor (void) { - if (cdfile == -1 || !enabled) - return; // no cd init'd + if (cdfile == -1) + return; - if ( ioctl(cdfile, CDROMCLOSETRAY) == -1 ) + if (ioctl(cdfile, CDROMCLOSETRAY) == -1) Con_DPrintf("ioctl cdromclosetray failed\n"); } -static int CDAudio_GetAudioDiskInfo(void) +int CDAudio_SysGetAudioDiskInfo (void) { struct cdrom_tochdr tochdr; - cdValid = false; - - if ( ioctl(cdfile, CDROMREADTOCHDR, &tochdr) == -1 ) - { - Con_DPrintf("ioctl cdromreadtochdr failed\n"); - return -1; - } + if (ioctl(cdfile, CDROMREADTOCHDR, &tochdr) == -1) + { + Con_DPrintf("ioctl cdromreadtochdr failed\n"); + return -1; + } if (tochdr.cdth_trk0 < 1) { @@ -88,340 +73,142 @@ static int CDAudio_GetAudioDiskInfo(void) return -1; } - cdValid = true; - maxTrack = tochdr.cdth_trk1; - - return 0; + return tochdr.cdth_trk1; } -void CDAudio_Play(qbyte track, qboolean looping) +int CDAudio_SysPlay (qbyte track) { struct cdrom_tocentry entry; struct cdrom_ti ti; - if (cdfile == -1 || !enabled) - return; - - if (!cdValid) - { - CDAudio_GetAudioDiskInfo(); - if (!cdValid) - return; - } - - track = remap[track]; - - if (track < 1 || track > maxTrack) - { - Con_DPrintf("CDAudio: Bad track number %u.\n", track); - return; - } + if (cdfile == -1) + return -1; // don't try to play a non-audio track entry.cdte_track = track; entry.cdte_format = CDROM_MSF; - if ( ioctl(cdfile, CDROMREADTOCENTRY, &entry) == -1 ) + if (ioctl(cdfile, CDROMREADTOCENTRY, &entry) == -1) { Con_DPrintf("ioctl cdromreadtocentry failed\n"); - return; + return -1; } if (entry.cdte_ctrl == CDROM_DATA_TRACK) { Con_Printf("CDAudio: track %i is not audio\n", track); - return; + return -1; } - if (playing) - { - if (playTrack == track) - return; + if (cdPlaying) CDAudio_Stop(); - } ti.cdti_trk0 = track; ti.cdti_trk1 = track; ti.cdti_ind0 = 1; ti.cdti_ind1 = 99; - if ( ioctl(cdfile, CDROMPLAYTRKIND, &ti) == -1 ) - { + if (ioctl(cdfile, CDROMPLAYTRKIND, &ti) == -1) + { Con_DPrintf("ioctl cdromplaytrkind failed\n"); - return; - } + return -1; + } - if ( ioctl(cdfile, CDROMRESUME) == -1 ) + if (ioctl(cdfile, CDROMRESUME) == -1) + { Con_DPrintf("ioctl cdromresume failed\n"); + return -1; + } - playLooping = looping; - playTrack = track; - playing = true; - - if (cdvolume == 0.0) - CDAudio_Pause (); + return 0; } -void CDAudio_Stop(void) +int CDAudio_SysStop (void) { - if (cdfile == -1 || !enabled) - return; - - if (!playing) - return; + if (cdfile == -1) + return -1; - if ( ioctl(cdfile, CDROMSTOP) == -1 ) + if (ioctl(cdfile, CDROMSTOP) == -1) + { Con_DPrintf("ioctl cdromstop failed (%d)\n", errno); - - wasPlaying = false; - playing = false; + return -1; + } + + return 0; } -void CDAudio_Pause(void) +int CDAudio_SysPause (void) { - if (cdfile == -1 || !enabled) - return; - - if (!playing) - return; + if (cdfile == -1) + return -1; - if ( ioctl(cdfile, CDROMPAUSE) == -1 ) + if (ioctl(cdfile, CDROMPAUSE) == -1) + { Con_DPrintf("ioctl cdrompause failed\n"); - - wasPlaying = playing; - playing = false; + return -1; + } + + return 0; } -void CDAudio_Resume(void) +int CDAudio_SysResume (void) { - if (cdfile == -1 || !enabled) - return; - - if (!cdValid) - return; - - if (!wasPlaying) - return; + if (cdfile == -1) + return -1; - if ( ioctl(cdfile, CDROMRESUME) == -1 ) + if (ioctl(cdfile, CDROMRESUME) == -1) Con_DPrintf("ioctl cdromresume failed\n"); - playing = true; -} - -static void CD_f (void) -{ - const char *command; - int ret; - int n; - - if (Cmd_Argc() < 2) - return; - - command = Cmd_Argv (1); - - if (strcasecmp(command, "on") == 0) - { - enabled = true; - return; - } - if (strcasecmp(command, "off") == 0) - { - if (playing) - CDAudio_Stop(); - enabled = false; - return; - } - - if (strcasecmp(command, "reset") == 0) - { - enabled = true; - if (playing) - CDAudio_Stop(); - for (n = 0; n < 100; n++) - remap[n] = n; - CDAudio_GetAudioDiskInfo(); - return; - } - - if (strcasecmp(command, "remap") == 0) - { - ret = Cmd_Argc() - 2; - if (ret <= 0) - { - for (n = 1; n < 100; n++) - if (remap[n] != n) - Con_Printf(" %u -> %u\n", n, remap[n]); - return; - } - for (n = 1; n <= ret; n++) - remap[n] = atoi(Cmd_Argv (n+1)); - return; - } - - if (strcasecmp(command, "close") == 0) - { - CDAudio_CloseDoor(); - return; - } - - if (!cdValid) - { - CDAudio_GetAudioDiskInfo(); - if (!cdValid) - { - Con_Printf("No CD in player.\n"); - return; - } - } - - if (strcasecmp(command, "play") == 0) - { - CDAudio_Play((qbyte)atoi(Cmd_Argv (2)), false); - return; - } - - if (strcasecmp(command, "loop") == 0) - { - CDAudio_Play((qbyte)atoi(Cmd_Argv (2)), true); - return; - } - - if (strcasecmp(command, "stop") == 0) - { - CDAudio_Stop(); - return; - } - - if (strcasecmp(command, "pause") == 0) - { - CDAudio_Pause(); - return; - } - - if (strcasecmp(command, "resume") == 0) - { - CDAudio_Resume(); - return; - } - - if (strcasecmp(command, "eject") == 0) - { - if (playing) - CDAudio_Stop(); - CDAudio_Eject(); - cdValid = false; - return; - } - - if (strcasecmp(command, "info") == 0) - { - Con_Printf("%u tracks\n", maxTrack); - if (playing) - Con_Printf("Currently %s track %u\n", playLooping ? "looping" : "playing", playTrack); - else if (wasPlaying) - Con_Printf("Paused %s track %u\n", playLooping ? "looping" : "playing", playTrack); - Con_Printf("Volume is %f\n", cdvolume); - return; - } + return 0; } -void CDAudio_Update(void) +int CDAudio_SysUpdate (void) { struct cdrom_subchnl subchnl; - static time_t lastchk; - - if (!enabled) - return; - - if (bgmvolume.value != cdvolume) - { - if (cdvolume) - { - Cvar_SetValueQuick (&bgmvolume, 0.0); - cdvolume = bgmvolume.value; - CDAudio_Pause (); - } - else - { - Cvar_SetValueQuick (&bgmvolume, 1.0); - cdvolume = bgmvolume.value; - CDAudio_Resume (); - } - } + static time_t lastchk = 0; - if (playing && lastchk < time(NULL)) { + if (cdPlaying && lastchk < time(NULL)) { lastchk = time(NULL) + 2; //two seconds between chks subchnl.cdsc_format = CDROM_MSF; if (ioctl(cdfile, CDROMSUBCHNL, &subchnl) == -1 ) { Con_DPrintf("ioctl cdromsubchnl failed\n"); - playing = false; - return; + cdPlaying = false; + return -1; } if (subchnl.cdsc_audiostatus != CDROM_AUDIO_PLAY && subchnl.cdsc_audiostatus != CDROM_AUDIO_PAUSED) { - playing = false; - if (playLooping) - CDAudio_Play(playTrack, true); + cdPlaying = false; + if (cdPlayLooping) + CDAudio_Play(cdPlayTrack, true); } } + + return 0; } -int CDAudio_Init(void) +void CDAudio_SysInit (void) { int i; - if (cls.state == ca_dedicated) - return -1; - - if (COM_CheckParm("-nocdaudio") || COM_CheckParm("-safe")) - return -1; - - if ((i = COM_CheckParm("-cddev")) != 0 && i < com_argc - 1) { + if ((i = COM_CheckParm("-cddev")) != 0 && i < com_argc - 1) strlcpy (cd_dev, com_argv[i + 1], sizeof (cd_dev)); - cd_dev[sizeof(cd_dev) - 1] = 0; - } - - Cmd_AddCommand("cd", CD_f); - - for (i = 0; i < 100; i++) - remap[i] = i; - Cvar_RegisterVariable(&cdaudioinitialized); - Cvar_SetValueQuick(&cdaudioinitialized, true); - enabled = true; - - return 0; } -int CDAudio_Startup(void) +int CDAudio_SysStartup (void) { - if ((cdfile = open(cd_dev, O_RDONLY)) == -1) { - Con_DPrintf("CDAudio_Init: open of \"%s\" failed (%i)\n", cd_dev, errno); + if ((cdfile = open(cd_dev, O_RDONLY)) == -1) + { + Con_DPrintf("CDAudio_SysStartup: open of \"%s\" failed (%i)\n", cd_dev, errno); cdfile = -1; return -1; } - if (CDAudio_GetAudioDiskInfo()) - { - Con_DPrintf("CDAudio_Init: No CD in player.\n"); - cdValid = false; - } - - initialized = true; - - Con_DPrintf("CD Audio Started\n"); - return 0; } -void CDAudio_Shutdown(void) +void CDAudio_SysShutdown (void) { - if (!initialized) - return; - CDAudio_Stop(); close(cdfile); cdfile = -1; - initialized = false; } - diff --git a/cd_win.c b/cd_win.c index 69c1fc6a..6161074d 100644 --- a/cd_win.c +++ b/cd_win.c @@ -21,26 +21,14 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. // rights reserved. #include + #include "quakedef.h" extern HWND mainwindow; -cvar_t cdaudioinitialized = {CVAR_READONLY,"cdaudioinitialized","0"}; -static qboolean cdValid = false; -static qboolean playing = false; -static qboolean wasPlaying = false; -static qboolean initialized = false; -static qboolean enabled = false; -static qboolean playLooping = false; -static float cdvolume; -static qbyte remap[100]; -static qbyte playTrack; -static qbyte maxTrack; - UINT wDeviceID; - -static void CDAudio_Eject(void) +void CDAudio_SysEject(void) { DWORD dwReturn; @@ -49,7 +37,7 @@ static void CDAudio_Eject(void) } -static void CDAudio_CloseDoor(void) +void CDAudio_SysCloseDoor(void) { DWORD dwReturn; @@ -57,15 +45,11 @@ static void CDAudio_CloseDoor(void) Con_DPrintf("MCI_SET_DOOR_CLOSED failed (%i)\n", dwReturn); } - -static int CDAudio_GetAudioDiskInfo(void) +int CDAudio_SysGetAudioDiskInfo(void) { DWORD dwReturn; MCI_STATUS_PARMS mciStatusParms; - - cdValid = false; - mciStatusParms.dwItem = MCI_STATUS_READY; dwReturn = mciSendCommand(wDeviceID, MCI_STATUS, MCI_STATUS_ITEM | MCI_WAIT, (DWORD) (LPVOID) &mciStatusParms); if (dwReturn) @@ -92,37 +76,16 @@ static int CDAudio_GetAudioDiskInfo(void) return -1; } - cdValid = true; - maxTrack = mciStatusParms.dwReturn; - - return 0; + return mciStatusParms.dwReturn; } -void CDAudio_Play(qbyte track, qboolean looping) +int CDAudio_SysPlay (qbyte track) { DWORD dwReturn; MCI_PLAY_PARMS mciPlayParms; MCI_STATUS_PARMS mciStatusParms; - if (!enabled) - return; - - if (!cdValid) - { - CDAudio_GetAudioDiskInfo(); - if (!cdValid) - return; - } - - track = remap[track]; - - if (track < 1 || track > maxTrack) - { - Con_DPrintf("CDAudio: Bad track number %u.\n", track); - return; - } - // don't try to play a non-audio track mciStatusParms.dwItem = MCI_CDA_STATUS_TYPE_TRACK; mciStatusParms.dwTrack = track; @@ -130,14 +93,17 @@ void CDAudio_Play(qbyte track, qboolean looping) if (dwReturn) { Con_DPrintf("MCI_STATUS failed (%i)\n", dwReturn); - return; + return -1; } if (mciStatusParms.dwReturn != MCI_CDA_TRACK_AUDIO) { Con_Printf("CDAudio: track %i is not audio\n", track); - return; + return -1; } + if (cdPlaying) + CDAudio_Stop(); + // get the length of the track to be played mciStatusParms.dwItem = MCI_STATUS_LENGTH; mciStatusParms.dwTrack = track; @@ -145,14 +111,7 @@ void CDAudio_Play(qbyte track, qboolean looping) if (dwReturn) { Con_DPrintf("MCI_STATUS failed (%i)\n", dwReturn); - return; - } - - if (playing) - { - if (playTrack == track) - return; - CDAudio_Stop(); + return -1; } mciPlayParms.dwFrom = MCI_MAKE_TMSF(track, 0, 0, 0); @@ -162,203 +121,58 @@ void CDAudio_Play(qbyte track, qboolean looping) if (dwReturn) { Con_DPrintf("CDAudio: MCI_PLAY failed (%i)\n", dwReturn); - return; + return -1; } - playLooping = looping; - playTrack = track; - playing = true; - - if (cdvolume == 0.0) - CDAudio_Pause (); + return 0; } -void CDAudio_Stop(void) +int CDAudio_SysStop (void) { DWORD dwReturn; - if (!enabled) - return; - - if (!playing) - return; - if ((dwReturn = mciSendCommand(wDeviceID, MCI_STOP, 0, (DWORD)NULL))) + { Con_DPrintf("MCI_STOP failed (%i)", dwReturn); - - wasPlaying = false; - playing = false; + return -1; + } + return 0; } - -void CDAudio_Pause(void) +int CDAudio_SysPause (void) { DWORD dwReturn; MCI_GENERIC_PARMS mciGenericParms; - if (!enabled) - return; - - if (!playing) - return; - mciGenericParms.dwCallback = (DWORD)mainwindow; if ((dwReturn = mciSendCommand(wDeviceID, MCI_PAUSE, 0, (DWORD)(LPVOID) &mciGenericParms))) + { Con_DPrintf("MCI_PAUSE failed (%i)", dwReturn); - - wasPlaying = playing; - playing = false; + return -1; + } + return 0; } -void CDAudio_Resume(void) +int CDAudio_SysResume (void) { DWORD dwReturn; MCI_PLAY_PARMS mciPlayParms; - if (!enabled) - return; - - if (!cdValid) - return; - - if (!wasPlaying) - return; - - mciPlayParms.dwFrom = MCI_MAKE_TMSF(playTrack, 0, 0, 0); - mciPlayParms.dwTo = MCI_MAKE_TMSF(playTrack + 1, 0, 0, 0); + mciPlayParms.dwFrom = MCI_MAKE_TMSF(cdPlayTrack, 0, 0, 0); + mciPlayParms.dwTo = MCI_MAKE_TMSF(cdPlayTrack + 1, 0, 0, 0); mciPlayParms.dwCallback = (DWORD)mainwindow; dwReturn = mciSendCommand(wDeviceID, MCI_PLAY, MCI_TO | MCI_NOTIFY, (DWORD)(LPVOID) &mciPlayParms); if (dwReturn) { Con_DPrintf("CDAudio: MCI_PLAY failed (%i)\n", dwReturn); - return; - } - playing = true; -} - - -static void CD_f (void) -{ - const char *command; - int ret; - int n; - - if (Cmd_Argc() < 2) - return; - - command = Cmd_Argv (1); - - if (strcasecmp(command, "on") == 0) - { - enabled = true; - return; - } - - if (strcasecmp(command, "off") == 0) - { - if (playing) - CDAudio_Stop(); - enabled = false; - return; - } - - if (strcasecmp(command, "reset") == 0) - { - enabled = true; - if (playing) - CDAudio_Stop(); - for (n = 0; n < 100; n++) - remap[n] = n; - CDAudio_GetAudioDiskInfo(); - return; - } - - if (strcasecmp(command, "remap") == 0) - { - ret = Cmd_Argc() - 2; - if (ret <= 0) - { - for (n = 1; n < 100; n++) - if (remap[n] != n) - Con_Printf(" %u -> %u\n", n, remap[n]); - return; - } - for (n = 1; n <= ret; n++) - remap[n] = atoi(Cmd_Argv (n+1)); - return; - } - - if (strcasecmp(command, "close") == 0) - { - CDAudio_CloseDoor(); - return; - } - - if (!cdValid) - { - CDAudio_GetAudioDiskInfo(); - if (!cdValid) - { - Con_Printf("No CD in player.\n"); - return; - } - } - - if (strcasecmp(command, "play") == 0) - { - CDAudio_Play((qbyte)atoi(Cmd_Argv (2)), false); - return; - } - - if (strcasecmp(command, "loop") == 0) - { - CDAudio_Play((qbyte)atoi(Cmd_Argv (2)), true); - return; - } - - if (strcasecmp(command, "stop") == 0) - { - CDAudio_Stop(); - return; - } - - if (strcasecmp(command, "pause") == 0) - { - CDAudio_Pause(); - return; - } - - if (strcasecmp(command, "resume") == 0) - { - CDAudio_Resume(); - return; - } - - if (strcasecmp(command, "eject") == 0) - { - if (playing) - CDAudio_Stop(); - CDAudio_Eject(); - cdValid = false; - return; - } - - if (strcasecmp(command, "info") == 0) - { - Con_Printf("%u tracks\n", maxTrack); - if (playing) - Con_Printf("Currently %s track %u\n", playLooping ? "looping" : "playing", playTrack); - else if (wasPlaying) - Con_Printf("Paused %s track %u\n", playLooping ? "looping" : "playing", playTrack); - Con_Printf("Volume is %f\n", cdvolume); - return; + return -1; } + return 0; } - -LONG CDAudio_MessageHandler(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam) +LONG CDAudio_MessageHandler (HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam) { if (lParam != (LPARAM)wDeviceID) return 1; @@ -366,11 +180,11 @@ LONG CDAudio_MessageHandler(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam) switch (wParam) { case MCI_NOTIFY_SUCCESSFUL: - if (playing) + if (cdPlaying) { - playing = false; - if (playLooping) - CDAudio_Play(playTrack, true); + cdPlaying = false; + if (cdPlayLooping) + CDAudio_Play(cdPlayTrack, true); } break; @@ -393,52 +207,16 @@ LONG CDAudio_MessageHandler(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam) } -void CDAudio_Update(void) +int CDAudio_SysUpdate (void) { - if (!enabled) - return; - - if (bgmvolume.value != cdvolume) - { - if (cdvolume) - { - Cvar_SetValueQuick (&bgmvolume, 0.0); - cdvolume = bgmvolume.value; - CDAudio_Pause (); - } - else - { - Cvar_SetValueQuick (&bgmvolume, 1.0); - cdvolume = bgmvolume.value; - CDAudio_Resume (); - } - } + return 0; } - -int CDAudio_Init(void) +void CDAudio_SysInit (void) { - int n; - - if (cls.state == ca_dedicated) - return -1; - - if (COM_CheckParm("-nocdaudio") || COM_CheckParm("-safe")) - return -1; - - for (n = 0; n < 100; n++) - remap[n] = n; - - Cvar_RegisterVariable(&cdaudioinitialized); - Cvar_SetValueQuick(&cdaudioinitialized, true); - enabled = true; - - Cmd_AddCommand("cd", CD_f); - - return 0; } -int CDAudio_Startup(void) +int CDAudio_SysStartup (void) { DWORD dwReturn; MCI_OPEN_PARMS mciOpenParms; @@ -461,27 +239,11 @@ int CDAudio_Startup(void) return -1; } - if (CDAudio_GetAudioDiskInfo()) - { - Con_DPrintf("CDAudio_Init: No CD in player.\n"); - cdValid = false; - } - - initialized = true; - - Con_DPrintf("CD Audio Initialized\n"); - return 0; } - -void CDAudio_Shutdown(void) +void CDAudio_SysShutdown (void) { - if (!initialized) - return; - CDAudio_Stop(); if (mciSendCommand(wDeviceID, MCI_CLOSE, MCI_WAIT, (DWORD)NULL)) Con_DPrintf("CDAudio_Shutdown: MCI_CLOSE failed\n"); - initialized = false; } - diff --git a/cdaudio.h b/cdaudio.h index c50ad484..e58e766c 100644 --- a/cdaudio.h +++ b/cdaudio.h @@ -18,6 +18,11 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ +extern qboolean cdValid; +extern qboolean cdPlaying; +extern qboolean cdPlayLooping; +extern qbyte cdPlayTrack; + int CDAudio_Init(void); void CDAudio_Open(void); void CDAudio_Close(void); diff --git a/darkplaces.dsp b/darkplaces.dsp index 0c6607eb..36a83fef 100644 --- a/darkplaces.dsp +++ b/darkplaces.dsp @@ -96,6 +96,10 @@ SOURCE=.\builddate.c # End Source File # Begin Source File +SOURCE=.\cd_shared.c +# End Source File +# Begin Source File + SOURCE=.\cd_win.c # End Source File # Begin Source File diff --git a/makefile b/makefile index b5200830..928a2783 100644 --- a/makefile +++ b/makefile @@ -17,7 +17,7 @@ LINUXSOUNDLIB= #LINUXSOUNDLIB= #if you want CD sound in Linux -OBJ_LINUXCD=cd_linux.o +OBJ_LINUXCD=cd_shared.o cd_linux.o #if you want no CD audio #OBJ_LINUXCD=cd_null.o @@ -64,7 +64,7 @@ COMMONOBJECTS= $(CLIENTOBJECTS) $(SERVEROBJECTS) $(SHAREDOBJECTS) # built to give the executable a proper date string OBJ_GLX= builddate.c sys_linux.o vid_glx.o $(OBJ_LINUXCD) $(OBJ_LINUXSOUND) $(COMMONOBJECTS) OBJ_DED= builddate.c sys_linux.o vid_null.o cd_null.o snd_null.o $(COMMONOBJECTS) -OBJ_WGL_EXE= builddate.c sys_win.o vid_wgl.o conproc.o cd_win.o snd_win.o snd_dma.o snd_mix.o snd_mem.o $(COMMONOBJECTS) +OBJ_WGL_EXE= builddate.c sys_win.o vid_wgl.o conproc.o cd_shared.o cd_win.o snd_win.o snd_dma.o snd_mix.o snd_mem.o $(COMMONOBJECTS) OBJ_DED_EXE= builddate.c sys_linux.o vid_null.o cd_null.o snd_null.o $(COMMONOBJECTS) -- 2.39.2