Class: Hakuban::EventQueue
- Inherits:
-
Object
- Object
- Hakuban::EventQueue
- Defined in:
- lib/hakuban/hakuban.rb
Class Method Summary collapse
- .generate_callback(queue, prefix) ⇒ Object
- .generate_unregister(unregister_method, callback) ⇒ Object
Instance Method Summary collapse
-
#initialize(queue, prefix, register_method, pointer, unregister_method) ⇒ EventQueue
constructor
A new instance of EventQueue.
Constructor Details
#initialize(queue, prefix, register_method, pointer, unregister_method) ⇒ EventQueue
Returns a new instance of EventQueue.
168 169 170 171 172 173 174 175 176 177 |
# File 'lib/hakuban/hakuban.rb', line 168 def initialize(queue, prefix, register_method, pointer, unregister_method) @queue = queue @callback = EventQueue.generate_callback(@queue, prefix) @registered_callback_pointer = ::FFI::AutoPointer.new( register_method.call(pointer, @callback, ::FFI::Pointer::NULL), EventQueue.generate_unregister(unregister_method, @callback) ) #puts "Allocated callback pointer: #{@registered_callback_pointer}" #puts "Allocated callback queue: #{@events}" end |
Class Method Details
.generate_callback(queue, prefix) ⇒ Object
179 180 181 182 183 184 185 186 |
# File 'lib/hakuban/hakuban.rb', line 179 def self.generate_callback(queue, prefix) proc { |_userdata, ffi_descriptor, ffi_action| #puts "Callback for queue: #{queue}" action = Hakuban::action_int_to_symbol(ffi_action) descriptor = ObjectDescriptor.from_ffi(ffi_descriptor) queue << prefix + [action, descriptor] } end |
.generate_unregister(unregister_method, callback) ⇒ Object
188 189 190 191 192 193 194 |
# File 'lib/hakuban/hakuban.rb', line 188 def self.generate_unregister(unregister_method, callback) proc { |pointer| #puts "Dropping callback pointer: #{pointer}" callback # probably not needed, but I want to be sure this is captured unregister_method.call(pointer) } end |