void StopSong(void) { if (DemoMode) return; if (SongType == SongTypeWave && SongVoice >= 0) { FX_StopSound(SongVoice); } else if (SongType == SongTypeMIDI) { MUSIC_StopSong(); } SongType = SongTypeNone; DO_FREE_AND_NULL(SongName); SongTrack = 0; if (SongPtr) { FreeMem(SongPtr); SongPtr = 0; SongLength = 0; } }
int32_t MUSIC_Shutdown(void) { MUSIC_StopSong(); music_context = 0; music_initialized = 0; music_loopflag = MUSIC_PlayOnce; return(MUSIC_Ok); } // MUSIC_Shutdown
// Duke3D-specific. --ryan. // void MUSIC_PlayMusic(char *_filename) int32_t MUSIC_PlaySong(char *song, int32_t loopflag) { // initprintf("MUSIC_PlaySong"); MUSIC_StopSong(); if (external_midi) { FILE *fp; #if defined FORK_EXEC_MIDI static int32_t sigchld_handler_set = 0; if (!sigchld_handler_set) { struct sigaction sa; sa.sa_handler=sigchld_handler; sa.sa_flags=0; sigemptyset(&sa.sa_mask); if (sigaction(SIGCHLD, &sa, NULL)==-1) initprintf("%s: sigaction: %s\n", __func__, strerror(errno)); sigchld_handler_set = 1; } #endif fp = Bfopen(external_midi_tempfn, "wb"); if (fp) { fwrite(song, 1, g_musicSize, fp); Bfclose(fp); #if defined FORK_EXEC_MIDI external_midi_restart = loopflag; playmusic(); #else music_musicchunk = Mix_LoadMUS(external_midi_tempfn); if (!music_musicchunk) initprintf("Mix_LoadMUS: %s\n", Mix_GetError()); #endif } else initprintf("%s: fopen: %s\n", __func__, strerror(errno)); } else music_musicchunk = Mix_LoadMUS_RW(SDL_RWFromMem((char *) song, g_musicSize) #if (SDL_MAJOR_VERSION > 1) , SDL_FALSE #endif ); if (music_musicchunk != NULL) if (Mix_PlayMusic(music_musicchunk, (loopflag == MUSIC_LoopSong)?-1:0) == -1) initprintf("Mix_PlayMusic: %s\n", Mix_GetError()); return MUSIC_Ok; }
int32_t MUSIC_Shutdown(void) { // TODO - make sure this is being called from the menu -- SA #if !defined FORK_EXEC_MIDI if (external_midi) Mix_SetMusicCMD(NULL); #endif MUSIC_StopSong(); music_context = 0; music_initialized = 0; music_loopflag = MUSIC_PlayOnce; return(MUSIC_Ok); } // MUSIC_Shutdown
void S_StopMusic(void) { MusicPaused = 0; if (MusicIsWaveform && MusicVoice >= 0) { FX_StopSound(MusicVoice); MusicVoice = -1; MusicIsWaveform = 0; } MUSIC_StopSong(); ALIGNED_FREE_AND_NULL(MusicPtr); g_musicSize = 0; }
void stopmusic(void) { if (MusicIsWaveform && MusicVoice >= 0) { FX_StopSound(MusicVoice); MusicVoice = -1; } else if (!MusicIsWaveform) { MUSIC_StopSong(); } MusicPaused = 0; if (MusicPtr) { free(MusicPtr); MusicPtr = 0; MusicLen = 0; } }
int MUSIC_PlaySong ( unsigned char *song, int loopflag ) { int status; MUSIC_StopSong(); status = MIDI_PlaySong( song, loopflag ); if ( status != MIDI_Ok ) { MUSIC_SetErrorCode( MUSIC_MidiError ); return( MUSIC_Warning ); } return( MUSIC_Ok ); }