about summary refs log tree commit homepage
path: root/lib/dtas/player.rb
diff options
context:
space:
mode:
Diffstat (limited to 'lib/dtas/player.rb')
-rw-r--r--lib/dtas/player.rb7
1 files changed, 3 insertions, 4 deletions
diff --git a/lib/dtas/player.rb b/lib/dtas/player.rb
index 99c7400..2a3420a 100644
--- a/lib/dtas/player.rb
+++ b/lib/dtas/player.rb
@@ -235,17 +235,16 @@ class DTAS::Player # :nodoc:
       warn("#{sink.name} died unexpectedly: #{status.inspect}")
       deleted.each { |t| drop_target(t) }
       __current_drop unless @targets[0]
+      return # sink stays dead if it died unexpectedly
     end
 
     return unless sink.active
 
-    if @queue[0] && !@paused
+    if (@current || @queue[0]) && !@paused
       # we get here if source/sinks are all killed in restart_pipeline
       __sink_activate(sink)
-      next_source(@queue.shift)
+      next_source(@queue.shift) unless @current
     end
-  ensure
-    sink.respawn = false
   end
 
   # returns a wait_ctl arg for self