void SoundManager::TerminateMusic(void) { if (!g_theProfileDB->IsUseRedbookAudio() || !c3files_HasCD()) return; if (m_noSound) return; if (m_usePlaySound) return; #if !defined(USE_SDL) if (!m_redbook) return; #else if (!m_cdrom) return; #endif m_stopRedbookTemporarily = TRUE; #if !defined(USE_SDL) if (AIL_redbook_track(m_redbook)) { AIL_redbook_stop(m_redbook); } #else CDstatus status = SDL_CDStatus(m_cdrom); if (CD_PLAYING == status) { SDL_CDStop(m_cdrom); } #endif }
// // Stop // // Stop redbook audio // void Stop() { if (initialized && driver) { // Reset our track counter track = 0; // Stop the redbook device AIL_redbook_stop(driver); // Stop searching search = FALSE; } }
void SoundManager::CleanupRedbook() { #if defined(USE_SDL) if (m_cdrom) { SDL_CDClose(m_cdrom); m_cdrom = 0; } #else if (m_redbook) { AIL_redbook_stop(m_redbook); AIL_redbook_close(m_redbook); m_redbook = NULL; } #endif }
void SoundManager::StartMusic(const sint32 &InTrackNum) { m_stopRedbookTemporarily = FALSE; if (!g_theProfileDB->IsUseRedbookAudio() || !c3files_HasCD()) return; if (m_noSound) return; if (m_usePlaySound) return; if (m_curTrack == -1) return; #if defined(USE_SDL) if (!m_cdrom) { return; } CDstatus status = SDL_CDStatus(m_cdrom); if ((CD_ERROR == status) || (!CD_INDRIVE(status))) { return; } sint32 const numTracks = m_cdrom->numtracks; #else if (!m_redbook) { return; } U32 status = AIL_redbook_status(m_redbook); if (status == REDBOOK_ERROR) { return; } if (AIL_redbook_track(m_redbook)) { AIL_redbook_stop(m_redbook); } sint32 const numTracks = AIL_redbook_tracks(m_redbook); #endif if (numTracks <= s_startTrack) return; m_numTracks = numTracks; sint32 trackNum = InTrackNum; if (trackNum < 0) trackNum = 0; if (trackNum > m_numTracks) trackNum = m_numTracks; m_curTrack = trackNum; #if defined(USE_SDL) SDL_CDPlayTracks(m_cdrom, trackNum, 0, 1, 0); #else U32 start; U32 end; AIL_redbook_track_info(m_redbook, trackNum, &start, &end); // Why? TerminateAllSounds(); AIL_redbook_play(m_redbook, start, end); #endif }