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.rb8
1 files changed, 8 insertions, 0 deletions
diff --git a/lib/dtas/player.rb b/lib/dtas/player.rb
index 56fbdac..04c03b0 100644
--- a/lib/dtas/player.rb
+++ b/lib/dtas/player.rb
@@ -300,6 +300,13 @@ class DTAS::Player # :nodoc:
     end
   end
 
+  def _optimize_write_prepare(targets)
+    targets.each do |dst|
+      dst.wait_writable_prepare
+      @srv.wait_ctl(dst, :wait_writable)
+    end
+  end
+
   # returns a wait_ctl arg for self
   def broadcast_iter(buf, targets)
     case rv = buf.broadcast(targets)
@@ -315,6 +322,7 @@ class DTAS::Player # :nodoc:
       # via DTAS::Sink#writable_iter
       :ignore
     else # :wait_readable or nil
+      _optimize_write_prepare(targets)
       rv
     end
   end