Changeset - r22911:fcd57e709c23
[Not reviewed]
master
0 4 0
Niels Martin Hansen - 6 years ago 2018-06-06 18:58:06
nielsm@indvikleren.dk
Change: Improved looping of title song
4 files changed with 8 insertions and 6 deletions:
0 comments (0 inline, 0 general)
src/base_media_base.h
Show inline comments
 
@@ -301,6 +301,7 @@ struct MusicSongInfo {
 
	const char *filename;    ///< file on disk containing song (when used in MusicSet class, this pointer is owned by MD5File object for the file)
 
	MusicTrackType filetype; ///< decoder required for song file
 
	int cat_index;           ///< entry index in CAT file, for filetype==MTT_MPSMIDI
 
	bool loop;               ///< song should play in a tight loop if possible, never ending
 
	int override_start;      ///< MIDI ticks to skip over in beginning
 
	int override_end;        ///< MIDI tick to end the song at (0 if no override)
 
};
src/music/dmusic.cpp
Show inline comments
 
@@ -832,8 +832,8 @@ static void MidiThreadProc(void *)
 
			/* end? */
 
			if (current_block == current_file.blocks.size()) {
 
				if (current_segment.loop) {
 
					current_block = 0;
 
					clock->GetTime(&playback_start_time);
 
					current_block = current_segment.start_block;
 
					playback_start_time = block_time - current_file.blocks[current_block].realtime * MIDITIME_TO_REFTIME;
 
				} else {
 
					_playback.do_stop = true;
 
				}
 
@@ -1237,7 +1237,7 @@ void MusicDriver_DMusic::PlaySong(const 
 

	
 
	_playback.next_segment.start = song.override_start;
 
	_playback.next_segment.end = song.override_end;
 
	_playback.next_segment.loop = false;
 
	_playback.next_segment.loop = song.loop;
 

	
 
	_playback.do_start = true;
 
	SetEvent(_thread_event);
src/music/win32_m.cpp
Show inline comments
 
@@ -302,8 +302,8 @@ void CALLBACK TimerCallback(UINT uTimerI
 
	/* end? */
 
	if (_midi.current_block == _midi.current_file.blocks.size()) {
 
		if (_midi.current_segment.loop) {
 
			_midi.current_block = 0;
 
			_midi.playback_start_time = timeGetTime();
 
			_midi.current_block = _midi.current_segment.start_block;
 
			_midi.playback_start_time = timeGetTime() - _midi.current_file.blocks[_midi.current_block].realtime / 1000;
 
		} else {
 
			_midi.do_stop = true;
 
		}
 
@@ -322,7 +322,7 @@ void MusicDriver_Win32::PlaySong(const M
 

	
 
	_midi.next_segment.start = song.override_start;
 
	_midi.next_segment.end = song.override_end;
 
	_midi.next_segment.loop = false;
 
	_midi.next_segment.loop = song.loop;
 

	
 
	DEBUG(driver, 2, "Win32-MIDI: PlaySong: setting flag");
 
	_midi.do_stop = _midi.playing;
src/music_gui.cpp
Show inline comments
 
@@ -191,6 +191,7 @@ static void DoPlaySong()
 
		FioFindFullPath(filename, lastof(filename), OLD_GM_DIR, songinfo.filename);
 
	}
 
	songinfo.filename = filename; // non-owned pointer
 
	songinfo.loop = (_game_mode == GM_MENU) && (_music_wnd_cursong == 1);
 
	MusicDriver::GetInstance()->PlaySong(songinfo);
 
	SetWindowDirty(WC_MUSIC_WINDOW, 0);
 
}
0 comments (0 inline, 0 general)