From 15fc2b737ea5fe7e4c8b21eb6395721ba9522ab4 Mon Sep 17 00:00:00 2001 From: Eric Wong Date: Sun, 13 Dec 2015 13:01:06 +0000 Subject: player: support "tl clear" internally It is orders of magnitude more efficient to implement this in the player and very noticeable when using large playlists. --- bin/dtas-tl | 4 ---- lib/dtas/player/client_handler.rb | 6 ++++++ lib/dtas/tracklist.rb | 6 ++++++ 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) -- cgit v1.2.3-24-ge0c7