Module: Vulkan::Finalizer::ClassMethods

Defined in:
lib/vulkan/finalizer.rb

Instance Method Summary collapse

Instance Method Details

#finalizer(vk, cleanup_method_name, *cleanup_method_args) ⇒ Object



4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
# File 'lib/vulkan/finalizer.rb', line 4

def finalizer(vk, cleanup_method_name, *cleanup_method_args)
  proc do
    begin
      unless ENV['NO_FINALIZE']
        if ENV['CALL_TRACE']
          cleanup_method_args_s = cleanup_method_args.map do |arg|
            arg = arg.to_ptr  if arg.respond_to?(:to_ptr)
            arg = arg.hexaddr if arg.respond_to?(:hexaddr)
            arg.kind_of?(Fiddle::Pointer) ? arg.to_i.to_s(16) : arg.inspect
          end
          puts "FINALIZE #{name}: #{vk.instance.to_i.to_s(16)}/#{vk.device.to_i.to_s(16)}/(#{cleanup_method_args_s.join(', ')})"
        end

        vk.send(cleanup_method_name, *cleanup_method_args)
      end
    rescue
      puts $!
      $!.backtrace.each { |line| puts "  #{line}" }
    end
  end
end