From ce8c82a2ca0137631b7d29dc16cd5d1046faa07b Mon Sep 17 00:00:00 2001 From: onyx-and-iris Date: Fri, 21 Jul 2023 14:37:17 +0100 Subject: [PATCH] add init_event_threads, end_event_threads to Worker module. run now handles init/end event threads --- lib/voicemeeter/base.rb | 8 +------- lib/voicemeeter/configs.rb | 1 - lib/voicemeeter/remote.rb | 6 +++++- lib/voicemeeter/worker.rb | 9 +++++++-- rakefile | 2 +- 5 files changed, 14 insertions(+), 12 deletions(-) diff --git a/lib/voicemeeter/base.rb b/lib/voicemeeter/base.rb index 7350121..7ea1955 100644 --- a/lib/voicemeeter/base.rb +++ b/lib/voicemeeter/base.rb @@ -14,8 +14,7 @@ module Voicemeeter include Worker include Util::Cache - attr_reader :kind, :midi, :event, :running, :callback, :delay - attr_accessor :cache + attr_reader :kind, :midi, :event, :callback, :running, :delay, :cache alias_method :observer, :callback RATELIMIT = 0.033 @@ -44,14 +43,9 @@ module Voicemeeter run_voicemeeter(kind.name) if CBindings.call(:bind_login, ok: [0, 1]) == 1 clear_dirty logger.info "Successfully logged into #{self} version #{version}" - if event.any? - init_worker(@que) - init_producer(@que) - end end def logout - @running = false sleep(0.1) CBindings.call(:bind_logout) logger.info "Sucessfully logged out of #{self}" diff --git a/lib/voicemeeter/configs.rb b/lib/voicemeeter/configs.rb index 609c823..889804a 100644 --- a/lib/voicemeeter/configs.rb +++ b/lib/voicemeeter/configs.rb @@ -39,7 +39,6 @@ module Voicemeeter eq = [:eq].to_h { |param| [param, {on: false}] } overrides = {B1: true} - # physical strip params phys_strip = (0...@kind.phys_in).to_h do |i| diff --git a/lib/voicemeeter/remote.rb b/lib/voicemeeter/remote.rb index b2c648d..d936da4 100644 --- a/lib/voicemeeter/remote.rb +++ b/lib/voicemeeter/remote.rb @@ -58,9 +58,13 @@ module Voicemeeter def run login + if event.any? + init_event_threads + end yield(self) if block_given? - + ensure + end_event_threads logout end end diff --git a/lib/voicemeeter/worker.rb b/lib/voicemeeter/worker.rb index fe3c054..107584d 100644 --- a/lib/voicemeeter/worker.rb +++ b/lib/voicemeeter/worker.rb @@ -45,10 +45,15 @@ module Voicemeeter end end - def end_worker + def init_event_threads + init_worker(@que) + init_producer(@que) + end + + def end_event_threads @running = false end - module_function :init_worker, :end_worker + module_function :init_event_threads, :end_event_threads end end diff --git a/rakefile b/rakefile index 9396115..a3a6738 100644 --- a/rakefile +++ b/rakefile @@ -18,5 +18,5 @@ end task :obs do targetdir = File.join(HERE, "examples", "obs") Dir.chdir(targetdir) - bundle exec ruby File.join(targetdir, "main.rb") + ruby File.join(targetdir, "main.rb") end