[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