about summary refs log tree commit homepage
diff options
context:
space:
mode:
authorEric Wong <e@80x24.org>2015-12-13 13:01:06 +0000
committerEric Wong <e@80x24.org>2015-12-13 13:01:06 +0000
commit15fc2b737ea5fe7e4c8b21eb6395721ba9522ab4 (patch)
tree609c265935f12483c1b6afd4d605bc15921b61f3
parentfc00838faa4480a03e8a33fedc80c4648817bb93 (diff)
downloaddtas-15fc2b737ea5fe7e4c8b21eb6395721ba9522ab4.tar.gz
It is orders of magnitude more efficient to implement this
in the player and very noticeable when using large playlists.
-rwxr-xr-xbin/dtas-tl4
-rw-r--r--lib/dtas/player/client_handler.rb6
-rw-r--r--lib/dtas/tracklist.rb6
3 files changed, 12 insertions, 4 deletions
diff --git a/bin/dtas-tl b/bin/dtas-tl
index 5fde3f0..3d1d946 100755
--- a/bin/dtas-tl
+++ b/bin/dtas-tl
@@ -24,10 +24,6 @@ when "cat"
     res.sub!(/\A1 /, '')
     print "#{res}\n"
   end
-when "clear"
-  get_track_ids(c).each do |track_id|
-    print("#{track_id} " << c.req("tl remove #{track_id}") << "\n")
-  end
 when "addhead"
   ARGV.shift
   ARGV.reverse.each do |path|
diff --git a/lib/dtas/player/client_handler.rb b/lib/dtas/player/client_handler.rb
index 4827840..1c0a79e 100644
--- a/lib/dtas/player/client_handler.rb
+++ b/lib/dtas/player/client_handler.rb
@@ -676,6 +676,12 @@ module DTAS::Player::ClientHandler # :nodoc:
     io.emit('OK')
   end
 
+  def _dpc_tl_clear(io, msg)
+    @tl.clear
+    _tl_skip
+    io.emit('OK')
+  end
+
   def __bp_prev_next(io, msg, cur, bp)
     case type = msg[1]
     when nil, "track"
diff --git a/lib/dtas/tracklist.rb b/lib/dtas/tracklist.rb
index b1cdc1e..b9abe55 100644
--- a/lib/dtas/tracklist.rb
+++ b/lib/dtas/tracklist.rb
@@ -195,6 +195,12 @@ class DTAS::Tracklist # :nodoc:
     track.to_path
   end
 
+  def clear
+    @list.clear
+    @shuffle.clear if @shuffle
+    reset
+  end
+
   def go_to(track_id, offset_hhmmss = nil)
     list = @shuffle || @list
     if idx = _idx_of(list, track_id)