about summary refs log tree commit homepage
diff options
context:
space:
mode:
authorEric Wong <e@80x24.org>2015-12-13 11:12:45 +0000
committerEric Wong <e@80x24.org>2015-12-13 12:22:52 +0000
commite751a396e43f07f15d9b639a850c0c8cbebf9539 (patch)
treea5b11aadaceae5ccad6a719e144823f057545647
parent1a63ca046d42dc9d35fe656c034e0c791834ae67 (diff)
downloaddtas-e751a396e43f07f15d9b639a850c0c8cbebf9539.tar.gz
Disabling shuffle should be idempotent.
-rw-r--r--lib/dtas/tracklist.rb6
-rw-r--r--test/test_tracklist.rb2
2 files changed, 6 insertions, 2 deletions
diff --git a/lib/dtas/tracklist.rb b/lib/dtas/tracklist.rb
index d3db4e9..b1cdc1e 100644
--- a/lib/dtas/tracklist.rb
+++ b/lib/dtas/tracklist.rb
@@ -93,9 +93,11 @@ class DTAS::Tracklist # :nodoc:
     prev = @shuffle
     if bool
       list = @shuffle = (prev ||= @list).shuffle
-    else
-      list = @list
+    elsif prev
       @shuffle = false
+      list = @list
+    else
+      return false
     end
     @pos = _update_pos(@pos, prev, list) if @pos >= 0
     @goto_pos = _update_pos(@goto_pos, prev, list) if @goto_pos
diff --git a/test/test_tracklist.rb b/test/test_tracklist.rb
index 4d00227..c918ff7 100644
--- a/test/test_tracklist.rb
+++ b/test/test_tracklist.rb
@@ -73,6 +73,8 @@ class TestTracklist < Testcase
     assert_equal false, tl.shuffle
 
     tl.instance_variable_set :@pos, 3
+    assert_equal false, tl.shuffle = false
+
     before = tl.cur_track
     3.times do
       tl.shuffle = true