From 724b2aedfa55704c199ad5f2f8ce01240e1d17a0 Mon Sep 17 00:00:00 2001 From: Mitchell Hashimoto Date: Sun, 24 Apr 2022 10:14:25 -0700 Subject: [PATCH] various fixes for macos --- shaders/cell.f.glsl | 12 ++++++------ src/Window.zig | 2 ++ src/libuv/Embed.zig | 2 +- 3 files changed, 9 insertions(+), 7 deletions(-) diff --git a/shaders/cell.f.glsl b/shaders/cell.f.glsl index b80a6d430..3126ff433 100644 --- a/shaders/cell.f.glsl +++ b/shaders/cell.f.glsl @@ -14,7 +14,7 @@ flat in vec2 screen_cell_pos; layout(origin_upper_left) in vec4 gl_FragCoord; // Must declare this output for some versions of OpenGL. -layout(location = 0) out vec4 FragColor; +layout(location = 0) out vec4 out_FragColor; // Font texture uniform sampler2D text; @@ -31,16 +31,16 @@ const uint MODE_CURSOR_RECT_HOLLOW = 4u; void main() { switch (mode) { case MODE_BG: - FragColor = color; + out_FragColor = color; break; case MODE_FG: float a = texture(text, glyph_tex_coords).r; - FragColor = vec4(color.rgb, color.a*a); + out_FragColor = vec4(color.rgb, color.a*a); break; case MODE_CURSOR_RECT: - FragColor = color; + out_FragColor = color; break; case MODE_CURSOR_RECT_HOLLOW: @@ -49,7 +49,7 @@ void main() { // rectangle so we take the slowdown for that one. // Default to no color. - FragColor = vec4(0., 0., 0., 0.); + out_FragColor = vec4(0., 0., 0., 0.); // We subtracted one from cell size because our coordinates start at 0. // So a width of 50 means max pixel of 49. @@ -73,7 +73,7 @@ void main() { abs(cell_frag_coord.x - cell_size_coords.x) < eps || abs(cell_frag_coord.y) < eps || abs(cell_frag_coord.y - cell_size_coords.y) < eps) { - FragColor = color; + out_FragColor = color; } } diff --git a/src/Window.zig b/src/Window.zig index 89b231882..811e33a46 100644 --- a/src/Window.zig +++ b/src/Window.zig @@ -6,6 +6,7 @@ const Window = @This(); const std = @import("std"); +const builtin = @import("builtin"); const assert = std.debug.assert; const Allocator = std.mem.Allocator; const Grid = @import("Grid.zig"); @@ -55,6 +56,7 @@ pub fn create(alloc: Allocator, loop: libuv.Loop) !*Window { .context_version_minor = 3, .opengl_profile = .opengl_core_profile, .opengl_forward_compat = true, + .cocoa_graphics_switching = builtin.os.tag == .macos, }); errdefer window.destroy(); diff --git a/src/libuv/Embed.zig b/src/libuv/Embed.zig index 537cdbb83..89a393b4c 100644 --- a/src/libuv/Embed.zig +++ b/src/libuv/Embed.zig @@ -105,7 +105,7 @@ fn threadMain(self: *Embed) void { .macos, .dragonfly, .freebsd, .openbsd, .netbsd => { var ts: std.os.timespec = .{ .tv_sec = @divTrunc(timeout, 1000), - .tv_nsec = @mod(timeout, 1000) * 1000, + .tv_nsec = @mod(timeout, 1000) * 1000000, }; var ev: [0]std.os.Kevent = undefined;