]> de.git.xonotic.org Git - xonotic/darkplaces.git/blobdiff - cd_win.c
call reset functions in init code (not necessary currently, as the compilers currentl...
[xonotic/darkplaces.git] / cd_win.c
index 5b35239f4a0615458415e45e3a1a50e64778ba9a..e3359487ff4365be89808dde7d0da11ee3d4e802 100644 (file)
--- a/cd_win.c
+++ b/cd_win.c
@@ -8,7 +8,7 @@ of the License, or (at your option) any later version.
 
 This program is distributed in the hope that it will be useful,
 but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
 
 See the GNU General Public License for more details.
 
@@ -34,7 +34,6 @@ static qboolean enabled = false;
 static qboolean playLooping = false;
 static float cdvolume;
 static qbyte remap[100];
-static qbyte cdrom;
 static qbyte playTrack;
 static qbyte maxTrack;
 
@@ -45,7 +44,7 @@ static void CDAudio_Eject(void)
 {
        DWORD   dwReturn;
 
-    if (dwReturn = mciSendCommand(wDeviceID, MCI_SET, MCI_SET_DOOR_OPEN, (DWORD)NULL))
+       if ((dwReturn = mciSendCommand(wDeviceID, MCI_SET, MCI_SET_DOOR_OPEN, (DWORD)NULL)))
                Con_DPrintf("MCI_SET_DOOR_OPEN failed (%i)\n", dwReturn);
 }
 
@@ -54,7 +53,7 @@ static void CDAudio_CloseDoor(void)
 {
        DWORD   dwReturn;
 
-    if (dwReturn = mciSendCommand(wDeviceID, MCI_SET, MCI_SET_DOOR_CLOSED, (DWORD)NULL))
+       if ((dwReturn = mciSendCommand(wDeviceID, MCI_SET, MCI_SET_DOOR_CLOSED, (DWORD)NULL)))
                Con_DPrintf("MCI_SET_DOOR_CLOSED failed (%i)\n", dwReturn);
 }
 
@@ -68,7 +67,7 @@ static int CDAudio_GetAudioDiskInfo(void)
        cdValid = false;
 
        mciStatusParms.dwItem = MCI_STATUS_READY;
-    dwReturn = mciSendCommand(wDeviceID, MCI_STATUS, MCI_STATUS_ITEM | MCI_WAIT, (DWORD) (LPVOID) &mciStatusParms);
+       dwReturn = mciSendCommand(wDeviceID, MCI_STATUS, MCI_STATUS_ITEM | MCI_WAIT, (DWORD) (LPVOID) &mciStatusParms);
        if (dwReturn)
        {
                Con_DPrintf("CDAudio: drive ready test - get status failed\n");
@@ -81,7 +80,7 @@ static int CDAudio_GetAudioDiskInfo(void)
        }
 
        mciStatusParms.dwItem = MCI_STATUS_NUMBER_OF_TRACKS;
-    dwReturn = mciSendCommand(wDeviceID, MCI_STATUS, MCI_STATUS_ITEM | MCI_WAIT, (DWORD) (LPVOID) &mciStatusParms);
+       dwReturn = mciSendCommand(wDeviceID, MCI_STATUS, MCI_STATUS_ITEM | MCI_WAIT, (DWORD) (LPVOID) &mciStatusParms);
        if (dwReturn)
        {
                Con_DPrintf("CDAudio: get tracks - status failed\n");
@@ -103,12 +102,12 @@ static int CDAudio_GetAudioDiskInfo(void)
 void CDAudio_Play(qbyte track, qboolean looping)
 {
        DWORD                           dwReturn;
-    MCI_PLAY_PARMS             mciPlayParms;
+       MCI_PLAY_PARMS          mciPlayParms;
        MCI_STATUS_PARMS        mciStatusParms;
 
        if (!enabled)
                return;
-       
+
        if (!cdValid)
        {
                CDAudio_GetAudioDiskInfo();
@@ -127,7 +126,7 @@ void CDAudio_Play(qbyte track, qboolean looping)
        // don't try to play a non-audio track
        mciStatusParms.dwItem = MCI_CDA_STATUS_TYPE_TRACK;
        mciStatusParms.dwTrack = track;
-    dwReturn = mciSendCommand(wDeviceID, MCI_STATUS, MCI_STATUS_ITEM | MCI_TRACK | MCI_WAIT, (DWORD) (LPVOID) &mciStatusParms);
+       dwReturn = mciSendCommand(wDeviceID, MCI_STATUS, MCI_STATUS_ITEM | MCI_TRACK | MCI_WAIT, (DWORD) (LPVOID) &mciStatusParms);
        if (dwReturn)
        {
                Con_DPrintf("MCI_STATUS failed (%i)\n", dwReturn);
@@ -142,7 +141,7 @@ void CDAudio_Play(qbyte track, qboolean looping)
        // get the length of the track to be played
        mciStatusParms.dwItem = MCI_STATUS_LENGTH;
        mciStatusParms.dwTrack = track;
-    dwReturn = mciSendCommand(wDeviceID, MCI_STATUS, MCI_STATUS_ITEM | MCI_TRACK | MCI_WAIT, (DWORD) (LPVOID) &mciStatusParms);
+       dwReturn = mciSendCommand(wDeviceID, MCI_STATUS, MCI_STATUS_ITEM | MCI_TRACK | MCI_WAIT, (DWORD) (LPVOID) &mciStatusParms);
        if (dwReturn)
        {
                Con_DPrintf("MCI_STATUS failed (%i)\n", dwReturn);
@@ -156,10 +155,10 @@ void CDAudio_Play(qbyte track, qboolean looping)
                CDAudio_Stop();
        }
 
-    mciPlayParms.dwFrom = MCI_MAKE_TMSF(track, 0, 0, 0);
+       mciPlayParms.dwFrom = MCI_MAKE_TMSF(track, 0, 0, 0);
        mciPlayParms.dwTo = (mciStatusParms.dwReturn << 8) | track;
-    mciPlayParms.dwCallback = (DWORD)mainwindow;
-    dwReturn = mciSendCommand(wDeviceID, MCI_PLAY, MCI_NOTIFY | MCI_FROM | MCI_TO, (DWORD)(LPVOID) &mciPlayParms);
+       mciPlayParms.dwCallback = (DWORD)mainwindow;
+       dwReturn = mciSendCommand(wDeviceID, MCI_PLAY, MCI_NOTIFY | MCI_FROM | MCI_TO, (DWORD)(LPVOID) &mciPlayParms);
        if (dwReturn)
        {
                Con_DPrintf("CDAudio: MCI_PLAY failed (%i)\n", dwReturn);
@@ -181,11 +180,11 @@ void CDAudio_Stop(void)
 
        if (!enabled)
                return;
-       
+
        if (!playing)
                return;
 
-    if (dwReturn = mciSendCommand(wDeviceID, MCI_STOP, 0, (DWORD)NULL))
+       if ((dwReturn = mciSendCommand(wDeviceID, MCI_STOP, 0, (DWORD)NULL)))
                Con_DPrintf("MCI_STOP failed (%i)", dwReturn);
 
        wasPlaying = false;
@@ -205,7 +204,7 @@ void CDAudio_Pause(void)
                return;
 
        mciGenericParms.dwCallback = (DWORD)mainwindow;
-    if (dwReturn = mciSendCommand(wDeviceID, MCI_PAUSE, 0, (DWORD)(LPVOID) &mciGenericParms))
+       if ((dwReturn = mciSendCommand(wDeviceID, MCI_PAUSE, 0, (DWORD)(LPVOID) &mciGenericParms)))
                Con_DPrintf("MCI_PAUSE failed (%i)", dwReturn);
 
        wasPlaying = playing;
@@ -216,21 +215,21 @@ void CDAudio_Pause(void)
 void CDAudio_Resume(void)
 {
        DWORD                   dwReturn;
-    MCI_PLAY_PARMS     mciPlayParms;
+       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.dwCallback = (DWORD)mainwindow;
-    dwReturn = mciSendCommand(wDeviceID, MCI_PLAY, MCI_TO | MCI_NOTIFY, (DWORD)(LPVOID) &mciPlayParms);
+
+       mciPlayParms.dwFrom = MCI_MAKE_TMSF(playTrack, 0, 0, 0);
+       mciPlayParms.dwTo = MCI_MAKE_TMSF(playTrack + 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);
@@ -242,22 +241,22 @@ void CDAudio_Resume(void)
 
 static void CD_f (void)
 {
-       char    *command;
-       int             ret;
-       int             n;
+       const char *command;
+       int ret;
+       int n;
 
        if (Cmd_Argc() < 2)
                return;
 
        command = Cmd_Argv (1);
 
-       if (Q_strcasecmp(command, "on") == 0)
+       if (strcasecmp(command, "on") == 0)
        {
                enabled = true;
                return;
        }
 
-       if (Q_strcasecmp(command, "off") == 0)
+       if (strcasecmp(command, "off") == 0)
        {
                if (playing)
                        CDAudio_Stop();
@@ -265,7 +264,7 @@ static void CD_f (void)
                return;
        }
 
-       if (Q_strcasecmp(command, "reset") == 0)
+       if (strcasecmp(command, "reset") == 0)
        {
                enabled = true;
                if (playing)
@@ -276,7 +275,7 @@ static void CD_f (void)
                return;
        }
 
-       if (Q_strcasecmp(command, "remap") == 0)
+       if (strcasecmp(command, "remap") == 0)
        {
                ret = Cmd_Argc() - 2;
                if (ret <= 0)
@@ -291,7 +290,7 @@ static void CD_f (void)
                return;
        }
 
-       if (Q_strcasecmp(command, "close") == 0)
+       if (strcasecmp(command, "close") == 0)
        {
                CDAudio_CloseDoor();
                return;
@@ -307,37 +306,37 @@ static void CD_f (void)
                }
        }
 
-       if (Q_strcasecmp(command, "play") == 0)
+       if (strcasecmp(command, "play") == 0)
        {
                CDAudio_Play((qbyte)atoi(Cmd_Argv (2)), false);
                return;
        }
 
-       if (Q_strcasecmp(command, "loop") == 0)
+       if (strcasecmp(command, "loop") == 0)
        {
                CDAudio_Play((qbyte)atoi(Cmd_Argv (2)), true);
                return;
        }
 
-       if (Q_strcasecmp(command, "stop") == 0)
+       if (strcasecmp(command, "stop") == 0)
        {
                CDAudio_Stop();
                return;
        }
 
-       if (Q_strcasecmp(command, "pause") == 0)
+       if (strcasecmp(command, "pause") == 0)
        {
                CDAudio_Pause();
                return;
        }
 
-       if (Q_strcasecmp(command, "resume") == 0)
+       if (strcasecmp(command, "resume") == 0)
        {
                CDAudio_Resume();
                return;
        }
 
-       if (Q_strcasecmp(command, "eject") == 0)
+       if (strcasecmp(command, "eject") == 0)
        {
                if (playing)
                        CDAudio_Stop();
@@ -346,7 +345,7 @@ static void CD_f (void)
                return;
        }
 
-       if (Q_strcasecmp(command, "info") == 0)
+       if (strcasecmp(command, "info") == 0)
        {
                Con_Printf("%u tracks\n", maxTrack);
                if (playing)
@@ -361,7 +360,7 @@ static void CD_f (void)
 
 LONG CDAudio_MessageHandler(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
 {
-       if (lParam != wDeviceID)
+       if (lParam != (LPARAM)wDeviceID)
                return 1;
 
        switch (wParam)
@@ -419,49 +418,56 @@ void CDAudio_Update(void)
 
 int CDAudio_Init(void)
 {
-       DWORD   dwReturn;
-       MCI_OPEN_PARMS  mciOpenParms;
-    MCI_SET_PARMS      mciSetParms;
-       int                             n;
+       int n;
 
        if (cls.state == ca_dedicated)
                return -1;
 
-       if (COM_CheckParm("-nocdaudio"))
+       if (COM_CheckParm("-nocdaudio") || COM_CheckParm("-safe"))
                return -1;
 
+       for (n = 0; n < 100; n++)
+               remap[n] = n;
+       cdaudioinitialized = true;
+       enabled = true;
+
+       Cmd_AddCommand("cd", CD_f);
+
+       return 0;
+}
+
+int CDAudio_Startup(void)
+{
+       DWORD   dwReturn;
+       MCI_OPEN_PARMS  mciOpenParms;
+       MCI_SET_PARMS   mciSetParms;
+
        mciOpenParms.lpstrDeviceType = "cdaudio";
-       if (dwReturn = mciSendCommand(0, MCI_OPEN, MCI_OPEN_TYPE | MCI_OPEN_SHAREABLE, (DWORD) (LPVOID) &mciOpenParms))
+       if ((dwReturn = mciSendCommand(0, MCI_OPEN, MCI_OPEN_TYPE | MCI_OPEN_SHAREABLE, (DWORD) (LPVOID) &mciOpenParms)))
        {
                Con_Printf("CDAudio_Init: MCI_OPEN failed (%i)\n", dwReturn);
                return -1;
        }
        wDeviceID = mciOpenParms.wDeviceID;
 
-    // Set the time format to track/minute/second/frame (TMSF).
-    mciSetParms.dwTimeFormat = MCI_FORMAT_TMSF;
-    if (dwReturn = mciSendCommand(wDeviceID, MCI_SET, MCI_SET_TIME_FORMAT, (DWORD)(LPVOID) &mciSetParms))
-    {
+       // Set the time format to track/minute/second/frame (TMSF).
+       mciSetParms.dwTimeFormat = MCI_FORMAT_TMSF;
+       if ((dwReturn = mciSendCommand(wDeviceID, MCI_SET, MCI_SET_TIME_FORMAT, (DWORD)(LPVOID) &mciSetParms)))
+       {
                Con_Printf("MCI_SET_TIME_FORMAT failed (%i)\n", dwReturn);
-        mciSendCommand(wDeviceID, MCI_CLOSE, 0, (DWORD)NULL);
+               mciSendCommand(wDeviceID, MCI_CLOSE, 0, (DWORD)NULL);
                return -1;
-    }
-
-       for (n = 0; n < 100; n++)
-               remap[n] = n;
-       cdaudioinitialized = true;
-       initialized = true;
-       enabled = true;
+       }
 
        if (CDAudio_GetAudioDiskInfo())
        {
-               Con_Printf("CDAudio_Init: No CD in player.\n");
+               Con_DPrintf("CDAudio_Init: No CD in player.\n");
                cdValid = false;
        }
 
-       Cmd_AddCommand ("cd", CD_f);
+       initialized = true;
 
-       Con_Printf("CD Audio Initialized\n");
+       Con_DPrintf("CD Audio Initialized\n");
 
        return 0;
 }
@@ -474,4 +480,6 @@ void CDAudio_Shutdown(void)
        CDAudio_Stop();
        if (mciSendCommand(wDeviceID, MCI_CLOSE, MCI_WAIT, (DWORD)NULL))
                Con_DPrintf("CDAudio_Shutdown: MCI_CLOSE failed\n");
+       initialized = false;
 }
+