prepend Util::Cache

This commit is contained in:
onyx-and-iris 2023-07-26 14:12:47 +01:00
parent e7244957b1
commit bee166f354
2 changed files with 20 additions and 24 deletions

View File

@ -12,7 +12,7 @@ module Voicemeeter
class Base
include Logging
include Worker
include Util::Cache
prepend Util::Cache
attr_reader :kind, :midi, :event, :callback, :running, :delay, :cache
alias_method :observer, :callback
@ -105,7 +105,6 @@ module Voicemeeter
end
def get(name, is_string = false)
polling(:get, name:) do
if is_string
cget = FFI::MemoryPointer.new(:string, 512, true)
CBindings.call(:bind_get_parameter_string_a, name, cget)
@ -116,7 +115,6 @@ module Voicemeeter
cget.read_float.round(1)
end
end
end
def set(name, value)
if value.is_a? String
@ -128,12 +126,10 @@ module Voicemeeter
end
def get_buttonstatus(id, mode)
polling(:get_buttonstatus, id:, mode:) do
cget = FFI::MemoryPointer.new(:float, 1)
CBindings.call(:bind_macro_button_get_status, id, cget, mode)
cget.read_float.to_i
end
end
def set_buttonstatus(id, mode, state)
CBindings.call(:bind_macro_button_set_status, id, state, mode)

View File

@ -19,16 +19,16 @@ module Voicemeeter
end
module Cache
def polling(func, **kwargs)
params = {
get: kwargs[:name],
get_buttonstatus: "mb_#{kwargs[:id]}_#{kwargs[:mode]}"
}
return cache.delete(params[func]) if cache.key? params[func]
def get(name, is_string = false)
return cache.delete(name) if cache.key? name
clear_dirty if @sync
super
end
yield
def get_buttonstatus(id, mode)
return cache.delete("mb_#{id}_#{mode}") if cache.key? "mb_#{id}_#{mode}"
clear_dirty if @sync
super
end
end
end