DVUI

deinit

Parameters

#
self:*Self
*Self

Source

Implementation

#
pub fn deinit(self: *Self) void {
    // Make ourselves the current window to support data deinit functions.
    const prev_window = dvui.current_window;
    dvui.current_window = self;
    defer dvui.current_window = prev_window;

    if (dvui.accesskit_enabled) self.accesskit.deinit();

    self.data_store.deinit(self.gpa);

    self.texture_cache.deinit(self.gpa, self.backend);
    self.fonts.deinit(self.gpa, self.backend);

    if (self.is_primary)
        dvui.debug.deinit(self.gpa);

    self.subwindows.deinit(self.gpa);
    self.min_sizes.deinit(self.gpa);

    {
        var it = self.tags.map.keyIterator();
        while (it.next()) |name| {
            //std.debug.print("tag free {s}\n", .{name.*});
            self.gpa.free(name.*);
        }
        self.tags.deinit(self.gpa);
    }

    self.animations.deinit(self.gpa);
    self.tab_index_prev.deinit(self.gpa);
    self.tab_index.deinit(self.gpa);

    self.dialogs.deinit(self.gpa);
    self.toasts.deinit(self.gpa);

    var child_win_it = self.child_os_wins.iterator();
    while (child_win_it.next()) |remaining_win| {
        remaining_win.value_ptr.deinit(self.gpa);
    }
    self.child_os_wins.deinit(self.gpa);

    self.keybinds.deinit(self.gpa);
    self._arena.deinit();
    self._lifo_arena.deinit();
    self._widget_stack.deinit();
    dvui.struct_ui.deinit(self.gpa);
    self.* = undefined;
}