mach: update to latest GLFW error handling approach
Signed-off-by: Stephen Gutekanst <stephen@hexops.com>
This commit is contained in:
parent
abb1077052
commit
2cd4ce12f2
1 changed files with 17 additions and 13 deletions
|
|
@ -55,24 +55,25 @@ pub const Platform = struct {
|
||||||
const backend_type = try util.detectBackendType(allocator);
|
const backend_type = try util.detectBackendType(allocator);
|
||||||
|
|
||||||
glfw.setErrorCallback(Platform.errorCallback);
|
glfw.setErrorCallback(Platform.errorCallback);
|
||||||
try glfw.init(.{});
|
if (!glfw.init(.{})) try glfw.getError();
|
||||||
|
|
||||||
// Create the test window and discover adapters using it (esp. for OpenGL)
|
// Create the test window and discover adapters using it (esp. for OpenGL)
|
||||||
var hints = util.glfwWindowHintsForBackend(backend_type);
|
var hints = util.glfwWindowHintsForBackend(backend_type);
|
||||||
hints.cocoa_retina_framebuffer = true;
|
hints.cocoa_retina_framebuffer = true;
|
||||||
const window = try glfw.Window.create(
|
const window = glfw.Window.create(
|
||||||
options.width,
|
options.width,
|
||||||
options.height,
|
options.height,
|
||||||
options.title,
|
options.title,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
hints,
|
hints,
|
||||||
);
|
) orelse return glfw.mustGetError();
|
||||||
if (backend_type == .opengl) try glfw.makeContextCurrent(window);
|
|
||||||
if (backend_type == .opengles) try glfw.makeContextCurrent(window);
|
|
||||||
|
|
||||||
const window_size = try window.getSize();
|
if (backend_type == .opengl) glfw.makeContextCurrent(window);
|
||||||
const framebuffer_size = try window.getFramebufferSize();
|
if (backend_type == .opengles) glfw.makeContextCurrent(window);
|
||||||
|
const window_size = window.getSize();
|
||||||
|
const framebuffer_size = window.getFramebufferSize();
|
||||||
|
try glfw.getError();
|
||||||
|
|
||||||
const instance = gpu.createInstance(null);
|
const instance = gpu.createInstance(null);
|
||||||
if (instance == null) {
|
if (instance == null) {
|
||||||
|
|
@ -142,7 +143,8 @@ pub const Platform = struct {
|
||||||
core.current_desc = descriptor;
|
core.current_desc = descriptor;
|
||||||
core.target_desc = descriptor;
|
core.target_desc = descriptor;
|
||||||
core.swap_chain = null;
|
core.swap_chain = null;
|
||||||
const cursor_pos = try window.getCursorPos();
|
const cursor_pos = window.getCursorPos();
|
||||||
|
try glfw.getError();
|
||||||
|
|
||||||
return Platform{
|
return Platform{
|
||||||
.window = window,
|
.window = window,
|
||||||
|
|
@ -151,7 +153,7 @@ pub const Platform = struct {
|
||||||
.allocator = core.allocator,
|
.allocator = core.allocator,
|
||||||
.last_window_size = .{ .width = window_size.width, .height = window_size.height },
|
.last_window_size = .{ .width = window_size.width, .height = window_size.height },
|
||||||
.last_framebuffer_size = .{ .width = framebuffer_size.width, .height = framebuffer_size.height },
|
.last_framebuffer_size = .{ .width = framebuffer_size.width, .height = framebuffer_size.height },
|
||||||
.last_position = try window.getPos(),
|
.last_position = window.getPos(),
|
||||||
.last_cursor_position = .{
|
.last_cursor_position = .{
|
||||||
.x = cursor_pos.xpos,
|
.x = cursor_pos.xpos,
|
||||||
.y = cursor_pos.ypos,
|
.y = cursor_pos.ypos,
|
||||||
|
|
@ -321,7 +323,8 @@ pub const Platform = struct {
|
||||||
platform.last_position = try platform.window.getPos();
|
platform.last_position = try platform.window.getPos();
|
||||||
|
|
||||||
if (options.borderless_window) {
|
if (options.borderless_window) {
|
||||||
try glfw.Window.setAttrib(platform.window, .decorated, false);
|
glfw.Window.setAttrib(platform.window, .decorated, false);
|
||||||
|
try glfw.getError();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (options.fullscreen) {
|
if (options.fullscreen) {
|
||||||
|
|
@ -638,15 +641,16 @@ pub fn coreUpdate(core: *Core, resize: ?CoreResizeCallback) !void {
|
||||||
if (core.internal.wait_event_timeout > 0.0) {
|
if (core.internal.wait_event_timeout > 0.0) {
|
||||||
if (core.internal.wait_event_timeout == std.math.inf(f64)) {
|
if (core.internal.wait_event_timeout == std.math.inf(f64)) {
|
||||||
// Wait for an event
|
// Wait for an event
|
||||||
try glfw.waitEvents();
|
glfw.waitEvents();
|
||||||
} else {
|
} else {
|
||||||
// Wait for an event with a timeout
|
// Wait for an event with a timeout
|
||||||
try glfw.waitEventsTimeout(core.internal.wait_event_timeout);
|
glfw.waitEventsTimeout(core.internal.wait_event_timeout);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
// Don't wait for events
|
// Don't wait for events
|
||||||
try glfw.pollEvents();
|
glfw.pollEvents();
|
||||||
}
|
}
|
||||||
|
try glfw.getError();
|
||||||
|
|
||||||
core.delta_time_ns = core.timer.lapPrecise();
|
core.delta_time_ns = core.timer.lapPrecise();
|
||||||
core.delta_time = @intToFloat(f32, core.delta_time_ns) / @intToFloat(f32, std.time.ns_per_s);
|
core.delta_time = @intToFloat(f32, core.delta_time_ns) / @intToFloat(f32, std.time.ns_per_s);
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue