void I_UnRegisterSong (int handle) { if(!music_initialized) return; if(handle < 0 || handle >= MUSIC_TRACKS) return; if(!registered_tracks[handle].Track) return; if(handle == current_track) I_StopSong(current_track); #ifdef OSX DisposeMusicSequence(sequence); #else if (registered_tracks[handle].Track) Mix_FreeMusic(registered_tracks[handle].Track); //if (registered_tracks[handle].Data) //SDL_FreeRW(registered_tracks[handle].Data); #endif registered_tracks[handle].Track = NULL; registered_tracks[handle].Data = NULL; }
void I_PlayCD (UINT8 nTrack, UINT8 bLooping) { MCI_PLAY_PARMS mciPlay; MCIERROR iErr; if (!cdaudio_started || !cdEnabled) return; //faB: try again if it didn't work (just free the user of typing 'cd reset' command) if (!cdValid) cdValid = CD_ReadTrackInfo(); if (!cdValid) return; // tracks start at 0 in the code.. nTrack--; if (nTrack < 0 || nTrack >= m_nTracksCount) nTrack = nTrack % m_nTracksCount; nTrack = cdRemap[nTrack]; if (cdPlaying) { if (cdPlayTrack == nTrack) return; I_StopCD (); } cdPlayTrack = nTrack; if (!m_nTracks[nTrack].IsAudio) { //CONS_Printf ("\2CD Play: not an audio track\n"); // Tails 03-25-2001 return; } cdLooping = bLooping; //faB: stop MIDI music, MIDI music will restart if volume is upped later cv_digmusicvolume.value = 0; cv_midimusicvolume.value = 0; I_StopSong (0); //faB: I don't use the notify message, I'm trying to minimize the delay mciPlay.dwCallback = (DWORD_PTR)((size_t)hWndMain); mciPlay.dwFrom = MCI_MAKE_TMSF(nTrack+1, 0, 0, 0); iErr = mciSendCommand(m_MCIOpen.wDeviceID, MCI_PLAY, MCI_FROM|MCI_NOTIFY, (DWORD_PTR)&mciPlay); if (iErr) { MCIErrorMessageBox (iErr); cdValid = false; cdPlaying = false; return; } cdPlaying = true; }
void I_PauseSong (int handle) { switch(mus_pause_opt) { case 0: //printf("Stopping song %d (pause)\n", handle); I_StopSong(handle); break; case 1: //printf("Pausing song %d (pause)\n", handle); Mix_PauseMusic(); break; } // Default - let music continue }
void I_ShutdownMIDIMusic(void) { if (midimode) I_StopSong(0); }