Fixed GME track length limiting when seeking backwards
This commit is contained in:
parent
2cfdacf890
commit
355df0b3b0
2 changed files with 20 additions and 7 deletions
|
@ -41,6 +41,8 @@ Music_Emu::gme_t()
|
|||
tempo_ = 1.0;
|
||||
gain_ = 1.0;
|
||||
|
||||
fade_set = false;
|
||||
|
||||
// defaults
|
||||
tfilter = track_filter.setup();
|
||||
set_max_initial_silence( 15 );
|
||||
|
@ -152,7 +154,11 @@ blargg_err_t Music_Emu::seek( int msec )
|
|||
{
|
||||
int time = msec_to_samples( msec );
|
||||
if ( time < track_filter.sample_count() )
|
||||
{
|
||||
RETURN_ERR( start_track( current_track_ ) );
|
||||
if ( fade_set )
|
||||
set_fade( length_msec, fade_msec );
|
||||
}
|
||||
return skip( time - track_filter.sample_count() );
|
||||
}
|
||||
|
||||
|
@ -211,6 +217,9 @@ blargg_err_t Music_Emu::start_track( int track )
|
|||
|
||||
void Music_Emu::set_fade( int start_msec, int length_msec )
|
||||
{
|
||||
fade_set = true;
|
||||
this->length_msec = start_msec;
|
||||
this->fade_msec = length_msec;
|
||||
track_filter.set_fade( msec_to_samples( start_msec ),
|
||||
length_msec * sample_rate() / (1000 / stereo) );
|
||||
}
|
||||
|
|
|
@ -197,6 +197,10 @@ private:
|
|||
int sample_rate_;
|
||||
int current_track_;
|
||||
|
||||
bool fade_set;
|
||||
int length_msec;
|
||||
int fade_msec;
|
||||
|
||||
void clear_track_vars();
|
||||
int msec_to_samples( int msec ) const;
|
||||
|
||||
|
|
Loading…
Reference in a new issue