DVUI

deinit

Parameters

#
self:*AccessKit
*AccessKit

Source

Implementation

#
pub fn deinit(self: *AccessKit) void {
    if (!dvui.accesskit_enabled) return;

    const io = dvui.io;
    self.mutex.lockUncancelable(io);
    defer self.mutex.unlock(io);

    if (self.adapter == null) return;

    const window: *dvui.Window = @alignCast(@fieldParentPtr("accesskit", self));

    self.action_requests.clearAndFree(window.gpa);
    self.nodes.clearAndFree(window.gpa);
    self.text_runs.clearAndFree(window.gpa);

    if (builtin.os.tag == .windows)
        if (dvui.backend.kind == .dx11) {
            c.accesskit_windows_adapter_free(self.adapter.?);
        } else {
            c.accesskit_windows_subclassing_adapter_free(self.adapter.?);
        }
    else if (builtin.os.tag.isDarwin())
        c.accesskit_macos_subclassing_adapter_free(self.adapter.?)
    else if (builtin.os.tag == .linux)
        c.accesskit_unix_adapter_free(self.adapter.?);
}