Module: WGPU::LeakTracker

Defined in:
lib/wgpu/native_resource.rb

Class Method Summary collapse

Class Method Details

.register(resource) ⇒ void

This method returns an undefined value.

Registers a live native resource when leak debugging is enabled.

Parameters:



20
21
22
23
24
25
26
27
# File 'lib/wgpu/native_resource.rb', line 20

def register(resource)
  return unless WGPU.debug_leaks

  object_id = resource.object_id
  description = describe(resource)
  @mutex.synchronize { @resources[object_id] = description }
  ObjectSpace.define_finalizer(resource, finalizer(object_id))
end

.unregister(resource) ⇒ void

This method returns an undefined value.

Removes a resource from leak tracking.

Parameters:



33
34
35
# File 'lib/wgpu/native_resource.rb', line 33

def unregister(resource)
  @mutex.synchronize { @resources.delete(resource.object_id) }
end

.warn_remainingvoid

This method returns an undefined value.

Warns about and clears every tracked resource.



40
41
42
43
44
45
46
47
# File 'lib/wgpu/native_resource.rb', line 40

def warn_remaining
  resources = @mutex.synchronize do
    remaining = @resources.values
    @resources.clear
    remaining
  end
  resources.each { |description| warn "WGPU resource leaked: #{description}" }
end