diff options
author | Eric Wong <e@80x24.org> | 2014-12-28 00:43:07 +0000 |
---|---|---|
committer | Eric Wong <e@80x24.org> | 2014-12-28 01:49:06 +0000 |
commit | a462961df2088af99e2e815ad60b8d838c9d062d (patch) | |
tree | f60f5b89c44dd2bf33739c4653d815b1bcf254ba /lib/dtas/player.rb | |
parent | 949dbe07c02919f8f17d7880bc69c3ee683daca4 (diff) | |
download | dtas-a462961df2088af99e2e815ad60b8d838c9d062d.tar.gz |
Since splitfx YAML files are intended to be frequently edited and modified by the user, we'll support automatically restarting the source when the user saves changes via their favorite $EDITOR This change is only for Linux users. However, sleepy_penguin supports kqueue nowadays so a patch to support such functionality would be appreciated.
Diffstat (limited to 'lib/dtas/player.rb')
-rw-r--r-- | lib/dtas/player.rb | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/lib/dtas/player.rb b/lib/dtas/player.rb index 0ae8cef..ea48926 100644 --- a/lib/dtas/player.rb +++ b/lib/dtas/player.rb @@ -385,6 +385,7 @@ class DTAS::Player # :nodoc: end def next_source(source_spec) + @current.respond_to?(:watch_end) and @current.watch_end(@srv) @current = nil if source_spec case source_spec @@ -413,6 +414,12 @@ class DTAS::Player # :nodoc: dst = @sink_buf pending.dst_assoc(dst) pending.spawn(@format, @rg, out: dst.wr, in: "/dev/null") + + # watch and restart on modifications + pending.respond_to?(:watch_begin) and + @srv.wait_ctl(pending.watch_begin(method(:__current_requeue)), + :wait_readable) + @current = pending @srv.wait_ctl(dst, :wait_readable) wall(msg) |