lib/progress.rb in progress-2.2.0 vs lib/progress.rb in progress-2.3.0

- old
+ new

@@ -74,16 +74,11 @@ def start(title = nil, total = nil) if levels.empty? @started_at = Time.now @eta = nil @semaphore = Mutex.new - @beeper = Thread.new do - loop do - sleep 1 - print_message - end - end + start_beeper end levels << new(title, total) print_message true if block_given? begin @@ -127,11 +122,11 @@ print_message true set_title nil end levels.pop if levels.empty? - @beeper.kill + stop_beeper io.puts end end end @@ -215,11 +210,34 @@ @semaphore.unlock end end end + def start_beeper + @beeper = Thread.new do + loop do + sleep 10 + print_message unless Thread.current[:skip] + end + end + end + + def stop_beeper + @beeper.kill + @beeper = nil + end + + def restart_beeper + if @beeper + @beeper[:skip] = true + @beeper.run + @beeper[:skip] = false + end + end + def print_message(force = false) lock force do + restart_beeper if force || time_to_print? inner = 0 parts, parts_cl = [], [] levels.reverse.each do |level| inner = current = level.to_f(inner)