lib/mikeplayer.rb in mikeplayer-1.0.0 vs lib/mikeplayer.rb in mikeplayer-1.0.1

- old
+ new

@@ -17,10 +17,11 @@ PAUSED = :paused def initialize(options, *args) @settings = Settings.new(options) @playlist = Playlist.new(@settings.playlist) + @minutes = @settings.minutes @command = '' @pid = nil @timer_start = nil @state = STOPPED @@ -65,10 +66,11 @@ stdin, stdother, thread_info = Open3.popen2e('play', '--no-show-progress', '--volume', @settings.volume, song.filename) @state = PLAYING @pid = thread_info.pid indicator = '' + info_changed = false while (true == pid_alive?) pause_if_over_time_limit if (true == playing?) @@ -90,10 +92,11 @@ display_width = info.size print(info) + info_changed = false $stdout.flush end sleep SLEEP_SETTING end @@ -176,13 +179,16 @@ end def press_pause if (true == playing?) kill("STOP") + @pause_time = Time.now @state = PAUSED elsif (true == paused?) kill("CONT") + @song_start += (Time.now - @pause_time) + @pause_time = nil @state = PLAYING else print("Confused state #{@state}.") end end @@ -238,10 +244,18 @@ end end end def playing_time - return (Time.now - @song_start).to_i + return (Time.now - @song_start).to_i - pause_time + end + + def pause_time + if (@pause_time.nil?) + return 0 + else + return (Time.now - @pause_time).to_i + end end def minutes_remaining if ((0 == @minutes) || (@timer_start.nil?)) return -1