mirror of
https://github.com/onyx-and-iris/voicemeeter-rb.git
synced 2024-11-21 17:30:49 +00:00
prepend Util::Cache
This commit is contained in:
parent
e7244957b1
commit
bee166f354
@ -12,7 +12,7 @@ module Voicemeeter
|
|||||||
class Base
|
class Base
|
||||||
include Logging
|
include Logging
|
||||||
include Worker
|
include Worker
|
||||||
include Util::Cache
|
prepend Util::Cache
|
||||||
|
|
||||||
attr_reader :kind, :midi, :event, :callback, :running, :delay, :cache
|
attr_reader :kind, :midi, :event, :callback, :running, :delay, :cache
|
||||||
alias_method :observer, :callback
|
alias_method :observer, :callback
|
||||||
@ -105,16 +105,14 @@ module Voicemeeter
|
|||||||
end
|
end
|
||||||
|
|
||||||
def get(name, is_string = false)
|
def get(name, is_string = false)
|
||||||
polling(:get, name:) do
|
if is_string
|
||||||
if is_string
|
cget = FFI::MemoryPointer.new(:string, 512, true)
|
||||||
cget = FFI::MemoryPointer.new(:string, 512, true)
|
CBindings.call(:bind_get_parameter_string_a, name, cget)
|
||||||
CBindings.call(:bind_get_parameter_string_a, name, cget)
|
cget.read_string
|
||||||
cget.read_string
|
else
|
||||||
else
|
cget = FFI::MemoryPointer.new(:float, 1)
|
||||||
cget = FFI::MemoryPointer.new(:float, 1)
|
CBindings.call(:bind_get_parameter_float, name, cget)
|
||||||
CBindings.call(:bind_get_parameter_float, name, cget)
|
cget.read_float.round(1)
|
||||||
cget.read_float.round(1)
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -128,11 +126,9 @@ module Voicemeeter
|
|||||||
end
|
end
|
||||||
|
|
||||||
def get_buttonstatus(id, mode)
|
def get_buttonstatus(id, mode)
|
||||||
polling(:get_buttonstatus, id:, mode:) do
|
cget = FFI::MemoryPointer.new(:float, 1)
|
||||||
cget = FFI::MemoryPointer.new(:float, 1)
|
CBindings.call(:bind_macro_button_get_status, id, cget, mode)
|
||||||
CBindings.call(:bind_macro_button_get_status, id, cget, mode)
|
cget.read_float.to_i
|
||||||
cget.read_float.to_i
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
|
|
||||||
def set_buttonstatus(id, mode, state)
|
def set_buttonstatus(id, mode, state)
|
||||||
|
@ -19,16 +19,16 @@ module Voicemeeter
|
|||||||
end
|
end
|
||||||
|
|
||||||
module Cache
|
module Cache
|
||||||
def polling(func, **kwargs)
|
def get(name, is_string = false)
|
||||||
params = {
|
return cache.delete(name) if cache.key? name
|
||||||
get: kwargs[:name],
|
|
||||||
get_buttonstatus: "mb_#{kwargs[:id]}_#{kwargs[:mode]}"
|
|
||||||
}
|
|
||||||
return cache.delete(params[func]) if cache.key? params[func]
|
|
||||||
|
|
||||||
clear_dirty if @sync
|
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
|
end
|
||||||
end
|
end
|
||||||
|
Loading…
Reference in New Issue
Block a user