mach: improve compatibility with self-hosted compiler
Signed-off-by: Stephen Gutekanst <stephen@hexops.com>
This commit is contained in:
parent
1c43f0f1e8
commit
192de6946e
2 changed files with 15 additions and 23 deletions
|
|
@ -8,39 +8,24 @@ pub fn checkApplication(comptime app_pkg: type) void {
|
||||||
|
|
||||||
if (@hasDecl(App, "init")) {
|
if (@hasDecl(App, "init")) {
|
||||||
const InitFn = @TypeOf(@field(App, "init"));
|
const InitFn = @TypeOf(@field(App, "init"));
|
||||||
if (@import("builtin").zig_backend == .stage1) {
|
|
||||||
if (InitFn != fn (app: *App, core: *Core) @typeInfo(@typeInfo(InitFn).Fn.return_type.?).ErrorUnion.error_set!void)
|
if (InitFn != fn (app: *App, core: *Core) @typeInfo(@typeInfo(InitFn).Fn.return_type.?).ErrorUnion.error_set!void)
|
||||||
@compileError("expected 'pub fn init(app: *App, core: *mach.Core) !void' found '" ++ @typeName(InitFn) ++ "'");
|
@compileError("expected 'pub fn init(app: *App, core: *mach.Core) !void' found '" ++ @typeName(InitFn) ++ "'");
|
||||||
} else {
|
|
||||||
if (InitFn != *const fn (app: *App, core: *Core) @typeInfo(@typeInfo(InitFn).Fn.return_type.?).ErrorUnion.error_set!void)
|
|
||||||
@compileError("expected 'pub fn init(app: *App, core: *mach.Core) !void' found '" ++ @typeName(InitFn) ++ "'");
|
|
||||||
}
|
|
||||||
} else {
|
} else {
|
||||||
@compileError("App must export 'pub fn init(app: *App, core: *mach.Core) !void'");
|
@compileError("App must export 'pub fn init(app: *App, core: *mach.Core) !void'");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (@hasDecl(App, "update")) {
|
if (@hasDecl(App, "update")) {
|
||||||
const UpdateFn = @TypeOf(@field(App, "update"));
|
const UpdateFn = @TypeOf(@field(App, "update"));
|
||||||
if (@import("builtin").zig_backend == .stage1) {
|
|
||||||
if (UpdateFn != fn (app: *App, core: *Core) @typeInfo(@typeInfo(UpdateFn).Fn.return_type.?).ErrorUnion.error_set!void)
|
if (UpdateFn != fn (app: *App, core: *Core) @typeInfo(@typeInfo(UpdateFn).Fn.return_type.?).ErrorUnion.error_set!void)
|
||||||
@compileError("expected 'pub fn update(app: *App, core: *mach.Core) !void' found '" ++ @typeName(UpdateFn) ++ "'");
|
@compileError("expected 'pub fn update(app: *App, core: *mach.Core) !void' found '" ++ @typeName(UpdateFn) ++ "'");
|
||||||
} else {
|
|
||||||
if (UpdateFn != *const fn (app: *App, core: *Core) @typeInfo(@typeInfo(UpdateFn).Fn.return_type.?).ErrorUnion.error_set!void)
|
|
||||||
@compileError("expected 'pub fn update(app: *App, core: *mach.Core) !void' found '" ++ @typeName(UpdateFn) ++ "'");
|
|
||||||
}
|
|
||||||
} else {
|
} else {
|
||||||
@compileError("App must export 'pub fn update(app: *App, core: *mach.Core) !void'");
|
@compileError("App must export 'pub fn update(app: *App, core: *mach.Core) !void'");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (@hasDecl(App, "deinit")) {
|
if (@hasDecl(App, "deinit")) {
|
||||||
const DeinitFn = @TypeOf(@field(App, "deinit"));
|
const DeinitFn = @TypeOf(@field(App, "deinit"));
|
||||||
if (@import("builtin").zig_backend == .stage1) {
|
|
||||||
if (DeinitFn != fn (app: *App, core: *Core) void)
|
if (DeinitFn != fn (app: *App, core: *Core) void)
|
||||||
@compileError("expected 'pub fn deinit(app: *App, core: *mach.Core) void' found '" ++ @typeName(DeinitFn) ++ "'");
|
@compileError("expected 'pub fn deinit(app: *App, core: *mach.Core) void' found '" ++ @typeName(DeinitFn) ++ "'");
|
||||||
} else {
|
|
||||||
if (DeinitFn != *const fn (app: *App, core: *Core) void)
|
|
||||||
@compileError("expected 'pub fn deinit(app: *App, core: *mach.Core) void' found '" ++ @typeName(DeinitFn) ++ "'");
|
|
||||||
}
|
|
||||||
} else {
|
} else {
|
||||||
@compileError("App must export 'pub fn deinit(app: *App, core: *mach.Core) void'");
|
@compileError("App must export 'pub fn deinit(app: *App, core: *mach.Core) void'");
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -341,8 +341,8 @@ pub const Platform = struct {
|
||||||
try platform.window.setSize(.{ .width = options.width, .height = options.height });
|
try platform.window.setSize(.{ .width = options.width, .height = options.height });
|
||||||
try platform.window.setTitle(options.title);
|
try platform.window.setTitle(options.title);
|
||||||
try platform.window.setSizeLimits(
|
try platform.window.setSizeLimits(
|
||||||
@bitCast(glfw.Window.SizeOptional, options.size_min),
|
glfwSizeOptional(options.size_min),
|
||||||
@bitCast(glfw.Window.SizeOptional, options.size_max),
|
glfwSizeOptional(options.size_max),
|
||||||
);
|
);
|
||||||
platform.core.target_desc.present_mode = switch (options.vsync) {
|
platform.core.target_desc.present_mode = switch (options.vsync) {
|
||||||
.none => .immediate,
|
.none => .immediate,
|
||||||
|
|
@ -669,3 +669,10 @@ pub fn coreUpdate(core: *Core, resize: ?CoreResizeCallback) !void {
|
||||||
core.current_desc = core.target_desc;
|
core.current_desc = core.target_desc;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn glfwSizeOptional(size: structs.SizeOptional) glfw.Window.SizeOptional {
|
||||||
|
return .{
|
||||||
|
.width = size.width,
|
||||||
|
.height = size.height,
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue