macos/opengl: lock context while rendering to stop resize crashes

This commit is contained in:
Qwerasd
2024-08-14 23:43:17 -04:00
parent ff6a0bf9a2
commit 57d850822e
2 changed files with 12 additions and 0 deletions

View File

@ -1117,6 +1117,10 @@ fn addDeps(
step.root_module.addImport("macos", macos_dep.module("macos")); step.root_module.addImport("macos", macos_dep.module("macos"));
step.linkLibrary(macos_dep.artifact("macos")); step.linkLibrary(macos_dep.artifact("macos"));
try static_libs.append(macos_dep.artifact("macos").getEmittedBin()); try static_libs.append(macos_dep.artifact("macos").getEmittedBin());
if (config.renderer == .opengl) {
step.linkFramework("OpenGL");
}
} }
// cimgui // cimgui

View File

@ -2030,6 +2030,14 @@ pub fn drawFrame(self: *OpenGL, surface: *apprt.Surface) !void {
} }
} }
const is_darwin = builtin.target.isDarwin();
const ogl = if (comptime is_darwin) @cImport({
@cInclude("OpenGL/OpenGL.h");
}) else {};
const cgl_ctx = if (comptime is_darwin) ogl.CGLGetCurrentContext();
if (comptime is_darwin) _ = ogl.CGLLockContext(cgl_ctx);
defer _ = if (comptime is_darwin) ogl.CGLUnlockContext(cgl_ctx);
// Draw our terminal cells // Draw our terminal cells
try self.drawCellProgram(gl_state); try self.drawCellProgram(gl_state);