Пример #1
0
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;

}
Пример #2
0
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;
}
Пример #3
0
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
}
Пример #4
0
void I_ShutdownMIDIMusic(void)
{
	if (midimode)
		I_StopSong(0);
}