Skip to content

Commit 8e1ae9b

Browse files
authored
Merge pull request #53 from Interrupt/fixes/font-example-cleanup
Getting the stresstest example to run cleanly without leaks
2 parents 880b2ba + 45236fa commit 8e1ae9b

23 files changed

Lines changed: 161 additions & 40 deletions

src/examples/collision.zig

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,8 @@ pub fn main() !void {
3636
// See https://github.com/ziglang/zig/issues/19072
3737
try delve.init(std.heap.c_allocator);
3838
} else {
39-
try delve.init(gpa.allocator());
39+
// Using the default allocator will let us detect memory leaks
40+
try delve.init(delve.mem.createDefaultAllocator());
4041
}
4142

4243
try registerModule();

src/examples/debugdraw.zig

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,8 @@ pub fn main() !void {
2929
// See https://github.com/ziglang/zig/issues/19072
3030
try delve.init(std.heap.c_allocator);
3131
} else {
32-
try delve.init(gpa.allocator());
32+
// Using the default allocator will let us detect memory leaks
33+
try delve.init(delve.mem.createDefaultAllocator());
3334
}
3435

3536
try registerModule();

src/examples/easing.zig

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,8 @@ pub fn main() !void {
3636
// See https://github.com/ziglang/zig/issues/19072
3737
try delve.init(std.heap.c_allocator);
3838
} else {
39-
try delve.init(gpa.allocator());
39+
// Using the default allocator will let us detect memory leaks
40+
try delve.init(delve.mem.createDefaultAllocator());
4041
}
4142

4243
try registerModule();

src/examples/fonts.zig

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,8 @@ pub fn main() !void {
2828
// See https://github.com/ziglang/zig/issues/19072
2929
try delve.init(std.heap.c_allocator);
3030
} else {
31-
try delve.init(gpa.allocator());
31+
// Using the default allocator will let us detect memory leaks
32+
try delve.init(delve.mem.createDefaultAllocator());
3233
}
3334

3435
try registerModule();
@@ -132,4 +133,6 @@ fn on_draw() void {
132133

133134
fn on_cleanup() !void {
134135
debug.log("Fonts example module cleaning up", .{});
136+
font_batch.deinit();
137+
shader_blend.destroy();
135138
}

src/examples/forest.zig

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,8 @@ pub fn main() !void {
5050
// See https://github.com/ziglang/zig/issues/19072
5151
try delve.init(std.heap.c_allocator);
5252
} else {
53-
try delve.init(gpa.allocator());
53+
// Using the default allocator will let us detect memory leaks
54+
try delve.init(delve.mem.createDefaultAllocator());
5455
}
5556

5657
try registerModule();
@@ -408,4 +409,8 @@ fn on_draw() void {
408409

409410
fn on_cleanup() !void {
410411
debug.log("Forest example module cleaning up", .{});
412+
sprite_batch.deinit();
413+
cloud_batch.deinit();
414+
grass_batch.deinit();
415+
shader_blend.destroy();
411416
}

src/examples/framepacing.zig

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,8 @@ pub fn main() !void {
3838
// See https://github.com/ziglang/zig/issues/19072
3939
try delve.init(std.heap.c_allocator);
4040
} else {
41-
try delve.init(gpa.allocator());
41+
// Using the default allocator will let us detect memory leaks
42+
try delve.init(delve.mem.createDefaultAllocator());
4243
}
4344

4445
try registerModule();

src/examples/frustums.zig

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@ var gpa = std.heap.GeneralPurposeAllocator(.{}){};
77
var primary_camera: delve.graphics.camera.Camera = undefined;
88
var secondary_camera: delve.graphics.camera.Camera = undefined;
99

10+
var shader: delve.platform.graphics.Shader = undefined;
11+
1012
var material_frustum: delve.platform.graphics.Material = undefined;
1113
var material_cube: delve.platform.graphics.Material = undefined;
1214
var material_highlight: delve.platform.graphics.Material = undefined;
@@ -24,14 +26,16 @@ pub fn main() !void {
2426
// See https://github.com/ziglang/zig/issues/19072
2527
try delve.init(std.heap.c_allocator);
2628
} else {
27-
try delve.init(gpa.allocator());
29+
// Using the default allocator will let us detect memory leaks
30+
try delve.init(delve.mem.createDefaultAllocator());
2831
}
2932

3033
const example = delve.modules.Module{
3134
.name = "frustums_example",
3235
.init_fn = on_init,
3336
.tick_fn = on_tick,
3437
.draw_fn = on_draw,
38+
.cleanup_fn = on_cleanup,
3539
};
3640

3741
try delve.modules.registerModule(example);
@@ -41,7 +45,7 @@ pub fn main() !void {
4145
}
4246

4347
pub fn on_init() !void {
44-
const shader = delve.platform.graphics.Shader.initFromBuiltin(.{ .vertex_attributes = delve.graphics.mesh.getShaderAttributes() }, delve.shaders.default_mesh);
48+
shader = delve.platform.graphics.Shader.initFromBuiltin(.{ .vertex_attributes = delve.graphics.mesh.getShaderAttributes() }, delve.shaders.default_mesh).?;
4549

4650
// Create some materials
4751
material_frustum = try delve.platform.graphics.Material.init(.{
@@ -121,6 +125,14 @@ pub fn on_draw() void {
121125
frustum_mesh.draw(view_mats, frustum_model_matrix);
122126
}
123127

128+
pub fn on_cleanup() !void {
129+
frustum_mesh.deinit();
130+
material_highlight.deinit();
131+
material_cube.deinit();
132+
material_frustum.deinit();
133+
shader.destroy();
134+
}
135+
124136
pub fn createFrustumMesh() !delve.graphics.mesh.Mesh {
125137
var builder = delve.graphics.mesh.MeshBuilder.init(delve.mem.getAllocator());
126138
defer builder.deinit();

src/examples/imgui.zig

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,8 @@ pub fn main() !void {
2525
// See https://github.com/ziglang/zig/issues/19072
2626
try delve.init(std.heap.c_allocator);
2727
} else {
28-
try delve.init(gpa.allocator());
28+
// Using the default allocator will let us detect memory leaks
29+
try delve.init(delve.mem.createDefaultAllocator());
2930
}
3031

3132
try registerModule();

src/examples/lighting.zig

Lines changed: 15 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,9 @@ const Color = colors.Color;
2424
const lit_shader = delve.shaders.default_basic_lighting;
2525
const skinned_lit_shader = delve.shaders.default_skinned_basic_lighting;
2626

27+
var skinned_shader: graphics.Shader = undefined;
28+
var static_shader: graphics.Shader = undefined;
29+
2730
var animated_mesh: skinned_mesh.SkinnedMesh = undefined;
2831
var animation: skinned_mesh.PlayingAnimation = undefined;
2932

@@ -51,7 +54,8 @@ pub fn main() !void {
5154
// See https://github.com/ziglang/zig/issues/19072
5255
try delve.init(std.heap.c_allocator);
5356
} else {
54-
try delve.init(gpa.allocator());
57+
// Using the default allocator will let us detect memory leaks
58+
try delve.init(delve.mem.createDefaultAllocator());
5559
}
5660

5761
try registerModule();
@@ -81,17 +85,16 @@ fn on_init() !void {
8185
camera.direction = Vec3.new(0.0, 0.0, 1.0);
8286

8387
// make shaders for skinned and unskinned meshes
84-
const skinned_shader = graphics.Shader.initFromBuiltin(.{ .vertex_attributes = skinned_mesh.getSkinnedShaderAttributes() }, skinned_lit_shader);
85-
86-
const static_shader = graphics.Shader.initFromBuiltin(.{ .vertex_attributes = delve.graphics.mesh.getShaderAttributes() }, lit_shader);
88+
skinned_shader = graphics.Shader.initFromBuiltin(.{ .vertex_attributes = skinned_mesh.getSkinnedShaderAttributes() }, skinned_lit_shader).?;
89+
static_shader = graphics.Shader.initFromBuiltin(.{ .vertex_attributes = delve.graphics.mesh.getShaderAttributes() }, lit_shader).?;
8790

8891
var base_img: images.Image = try images.loadFile(mesh_texture_file);
8992
defer base_img.deinit();
9093
const tex_base = graphics.Texture.init(&base_img);
9194

9295
// Create a material out of our shader and textures
9396
skinned_mesh_material = try delve.platform.graphics.Material.init(.{
94-
.shader = skinned_shader.?,
97+
.shader = skinned_shader,
9598
.texture_0 = tex_base,
9699
.texture_1 = delve.platform.graphics.createSolidTexture(0x00000000),
97100

@@ -104,7 +107,7 @@ fn on_init() !void {
104107

105108
// Create a material out of the texture
106109
static_mesh_material = try graphics.Material.init(.{
107-
.shader = static_shader.?,
110+
.shader = static_shader,
108111
.texture_0 = delve.platform.graphics.createSolidTexture(0xFFFFFFFF),
109112
.texture_1 = delve.platform.graphics.createSolidTexture(0x00000000),
110113

@@ -176,6 +179,12 @@ fn on_draw() void {
176179
fn on_cleanup() !void {
177180
debug.log("Lighting example module cleaning up", .{});
178181

182+
skinned_shader.destroy();
183+
static_shader.destroy();
184+
185+
skinned_mesh_material.deinit();
186+
static_mesh_material.deinit();
187+
179188
animation.deinit();
180189
animated_mesh.deinit();
181190
}

src/examples/lua.zig

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,8 @@ pub fn main() !void {
1717
// See https://github.com/ziglang/zig/issues/19072
1818
try delve.init(std.heap.c_allocator);
1919
} else {
20-
try delve.init(gpa.allocator());
20+
// Using the default allocator will let us detect memory leaks
21+
try delve.init(delve.mem.createDefaultAllocator());
2122
}
2223

2324
try lua_module.registerModule();

0 commit comments

Comments
 (0)