diff --git a/lib/voicemeeter/bus.rb b/lib/voicemeeter/bus.rb index 175134b..5a85c0e 100644 --- a/lib/voicemeeter/bus.rb +++ b/lib/voicemeeter/bus.rb @@ -102,7 +102,7 @@ module Voicemeeter def getter(mode) convert = ->(x) { (x > 0) ? (20 * Math.log(x, 10)).round(1) : -200.0 } - vals = if @remote.running && @remote.event.ldirty + vals = if @remote.running? && @remote.event.ldirty @remote.cache[:bus_level][@init, @offset] else (@init...@init + @offset).map { |i| @remote.get_level(mode, i) } diff --git a/lib/voicemeeter/strip.rb b/lib/voicemeeter/strip.rb index d5b5680..1ad20e9 100644 --- a/lib/voicemeeter/strip.rb +++ b/lib/voicemeeter/strip.rb @@ -232,7 +232,7 @@ module Voicemeeter convert = ->(x) { (x > 0) ? (20 * Math.log(x, 10)).round(1) : -200.0 } @remote.cache[:strip_mode] = mode - vals = if @remote.running && @remote.event.ldirty + vals = if @remote.running? && @remote.event.ldirty @remote.cache[:strip_level][@init, @offset] else (@init...@init + @offset).map { |i| @remote.get_level(mode, i) } diff --git a/lib/voicemeeter/worker.rb b/lib/voicemeeter/worker.rb index fc3e548..fb4454b 100644 --- a/lib/voicemeeter/worker.rb +++ b/lib/voicemeeter/worker.rb @@ -49,13 +49,17 @@ module Voicemeeter public + def running? + @producer&.alive? # safe navigation + end + def init_event_threads que = Queue.new init_worker(que) and init_producer(que) end def end_event_threads - if @producer&.alive? # safe navigation + if running @producer[:running] = false @producer.join end