dtas-all
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[PATCH 3/3] player/client_handler: prevent seek from excessive requeue


From: Eric Wong
Subject: [PATCH 3/3] player/client_handler: prevent seek from excessive requeue
Date: Mon, 9 Sep 2013 07:25:25 +0000

Otherwise we end up constantly pushing tracks to the top of the
queue and getting surprising behavior if seek is called repeatedly.
---
 lib/dtas/player/client_handler.rb | 9 +++++++--
 1 file changed, 7 insertions(+), 2 deletions(-)

diff --git a/lib/dtas/player/client_handler.rb 
b/lib/dtas/player/client_handler.rb
index 7a63df1..355451d 100644
--- a/lib/dtas/player/client_handler.rb
+++ b/lib/dtas/player/client_handler.rb
@@ -363,8 +363,13 @@ module DTAS::Player::ClientHandler # :nodoc:
         rescue ArgumentError
           return io.emit("ERR bad time format")
         end
-        @queue.unshift([ @current.infile, offset ])
-        __buf_reset(@current.dst) # trigger EPIPE
+        if @current.requeued
+          @queue[0][1] = offset
+        else
+          @queue.unshift([ @current.infile, offset ])
+          @current.requeued = true
+          __buf_reset(@current.dst) # trigger EPIPE
+        end
       else
         return io.emit("ERR unseekable")
       end
-- 
1.8.4




reply via email to

[Prev in Thread] Current Thread [Next in Thread]