mirror of
https://github.com/ghostty-org/ghostty.git
synced 2026-09-01 20:03:40 +00:00
Lots of 0.14 changes
This commit is contained in:
@@ -1147,12 +1147,12 @@ pub fn updateFrame(
|
||||
// the entire screen. This can be optimized in the future.
|
||||
const full_rebuild: bool = rebuild: {
|
||||
{
|
||||
const Int = @typeInfo(terminal.Terminal.Dirty).Struct.backing_integer.?;
|
||||
const Int = @typeInfo(terminal.Terminal.Dirty).@"struct".backing_integer.?;
|
||||
const v: Int = @bitCast(state.terminal.flags.dirty);
|
||||
if (v > 0) break :rebuild true;
|
||||
}
|
||||
{
|
||||
const Int = @typeInfo(terminal.Screen.Dirty).Struct.backing_integer.?;
|
||||
const Int = @typeInfo(terminal.Screen.Dirty).@"struct".backing_integer.?;
|
||||
const v: Int = @bitCast(state.terminal.screen.dirty);
|
||||
if (v > 0) break :rebuild true;
|
||||
}
|
||||
|
||||
@@ -799,12 +799,12 @@ pub fn updateFrame(
|
||||
// the entire screen. This can be optimized in the future.
|
||||
const full_rebuild: bool = rebuild: {
|
||||
{
|
||||
const Int = @typeInfo(terminal.Terminal.Dirty).Struct.backing_integer.?;
|
||||
const Int = @typeInfo(terminal.Terminal.Dirty).@"struct".backing_integer.?;
|
||||
const v: Int = @bitCast(state.terminal.flags.dirty);
|
||||
if (v > 0) break :rebuild true;
|
||||
}
|
||||
{
|
||||
const Int = @typeInfo(terminal.Screen.Dirty).Struct.backing_integer.?;
|
||||
const Int = @typeInfo(terminal.Screen.Dirty).@"struct".backing_integer.?;
|
||||
const v: Int = @bitCast(state.terminal.screen.dirty);
|
||||
if (v > 0) break :rebuild true;
|
||||
}
|
||||
@@ -1392,29 +1392,29 @@ pub fn rebuildCells(
|
||||
// Try to read the cells from the shaping cache if we can.
|
||||
self.font_shaper_cache.get(run) orelse
|
||||
cache: {
|
||||
// Otherwise we have to shape them.
|
||||
const cells = try self.font_shaper.shape(run);
|
||||
// Otherwise we have to shape them.
|
||||
const cells = try self.font_shaper.shape(run);
|
||||
|
||||
// Try to cache them. If caching fails for any reason we
|
||||
// continue because it is just a performance optimization,
|
||||
// not a correctness issue.
|
||||
self.font_shaper_cache.put(
|
||||
self.alloc,
|
||||
run,
|
||||
cells,
|
||||
) catch |err| {
|
||||
log.warn(
|
||||
"error caching font shaping results err={}",
|
||||
.{err},
|
||||
);
|
||||
};
|
||||
|
||||
// The cells we get from direct shaping are always owned
|
||||
// by the shaper and valid until the next shaping call so
|
||||
// we can safely use them.
|
||||
break :cache cells;
|
||||
// Try to cache them. If caching fails for any reason we
|
||||
// continue because it is just a performance optimization,
|
||||
// not a correctness issue.
|
||||
self.font_shaper_cache.put(
|
||||
self.alloc,
|
||||
run,
|
||||
cells,
|
||||
) catch |err| {
|
||||
log.warn(
|
||||
"error caching font shaping results err={}",
|
||||
.{err},
|
||||
);
|
||||
};
|
||||
|
||||
// The cells we get from direct shaping are always owned
|
||||
// by the shaper and valid until the next shaping call so
|
||||
// we can safely use them.
|
||||
break :cache cells;
|
||||
};
|
||||
|
||||
// Advance our index until we reach or pass
|
||||
// our current x position in the shaper cells.
|
||||
while (shaper_cells.?[shaper_cells_i].x < x) {
|
||||
@@ -1637,29 +1637,29 @@ pub fn rebuildCells(
|
||||
// Try to read the cells from the shaping cache if we can.
|
||||
self.font_shaper_cache.get(run) orelse
|
||||
cache: {
|
||||
// Otherwise we have to shape them.
|
||||
const cells = try self.font_shaper.shape(run);
|
||||
// Otherwise we have to shape them.
|
||||
const cells = try self.font_shaper.shape(run);
|
||||
|
||||
// Try to cache them. If caching fails for any reason we
|
||||
// continue because it is just a performance optimization,
|
||||
// not a correctness issue.
|
||||
self.font_shaper_cache.put(
|
||||
self.alloc,
|
||||
run,
|
||||
cells,
|
||||
) catch |err| {
|
||||
log.warn(
|
||||
"error caching font shaping results err={}",
|
||||
.{err},
|
||||
);
|
||||
};
|
||||
|
||||
// The cells we get from direct shaping are always owned
|
||||
// by the shaper and valid until the next shaping call so
|
||||
// we can safely use them.
|
||||
break :cache cells;
|
||||
// Try to cache them. If caching fails for any reason we
|
||||
// continue because it is just a performance optimization,
|
||||
// not a correctness issue.
|
||||
self.font_shaper_cache.put(
|
||||
self.alloc,
|
||||
run,
|
||||
cells,
|
||||
) catch |err| {
|
||||
log.warn(
|
||||
"error caching font shaping results err={}",
|
||||
.{err},
|
||||
);
|
||||
};
|
||||
|
||||
// The cells we get from direct shaping are always owned
|
||||
// by the shaper and valid until the next shaping call so
|
||||
// we can safely use them.
|
||||
break :cache cells;
|
||||
};
|
||||
|
||||
const cells = shaper_cells orelse break :glyphs;
|
||||
|
||||
// If there are no shaper cells for this run, ignore it.
|
||||
@@ -2327,7 +2327,7 @@ pub fn drawFrame(self: *OpenGL, surface: *apprt.Surface) !void {
|
||||
// This locks the context and avoids crashes that can happen due to
|
||||
// races with the underlying Metal layer that Apple is using to
|
||||
// implement OpenGL.
|
||||
const is_darwin = builtin.target.isDarwin();
|
||||
const is_darwin = builtin.target.os.tag.isDarwin();
|
||||
const ogl = if (comptime is_darwin) @cImport({
|
||||
@cInclude("OpenGL/OpenGL.h");
|
||||
}) else {};
|
||||
|
||||
@@ -248,7 +248,7 @@ fn threadMain_(self: *Thread) !void {
|
||||
|
||||
fn setQosClass(self: *const Thread) void {
|
||||
// Thread QoS classes are only relevant on macOS.
|
||||
if (comptime !builtin.target.isDarwin()) return;
|
||||
if (comptime !builtin.target.os.tag.isDarwin()) return;
|
||||
|
||||
const class: internal_os.macos.QosClass = class: {
|
||||
// If we aren't visible (our view is fully occluded) then we
|
||||
|
||||
@@ -34,7 +34,7 @@ pub const MTLResourceOptions = packed struct(c_ulong) {
|
||||
hazard_tracking_mode: HazardTrackingMode = .default,
|
||||
|
||||
_pad: @Type(.{
|
||||
.Int = .{ .signedness = .unsigned, .bits = @bitSizeOf(c_ulong) - 10 },
|
||||
.int = .{ .signedness = .unsigned, .bits = @bitSizeOf(c_ulong) - 10 },
|
||||
}) = 0,
|
||||
|
||||
pub const CPUCacheMode = enum(u4) {
|
||||
|
||||
@@ -681,11 +681,11 @@ fn initImagePipeline(
|
||||
}
|
||||
|
||||
fn autoAttribute(T: type, attrs: objc.Object) void {
|
||||
inline for (@typeInfo(T).Struct.fields, 0..) |field, i| {
|
||||
inline for (@typeInfo(T).@"struct".fields, 0..) |field, i| {
|
||||
const offset = @offsetOf(T, field.name);
|
||||
|
||||
const FT = switch (@typeInfo(field.type)) {
|
||||
.Enum => |e| e.tag_type,
|
||||
.@"enum" => |e| e.tag_type,
|
||||
else => field.type,
|
||||
};
|
||||
|
||||
|
||||
@@ -67,7 +67,7 @@ pub const CellMode = enum(u8) {
|
||||
// Since we use bit tricks below, we want to ensure the enum
|
||||
// doesn't change without us looking at this logic again.
|
||||
comptime {
|
||||
const info = @typeInfo(CellMode).Enum;
|
||||
const info = @typeInfo(CellMode).@"enum";
|
||||
std.debug.assert(info.fields.len == 5);
|
||||
}
|
||||
|
||||
|
||||
@@ -75,7 +75,7 @@ pub const Coordinate = union(enum) {
|
||||
terminal: Terminal,
|
||||
grid: Grid,
|
||||
|
||||
pub const Tag = @typeInfo(Coordinate).Union.tag_type.?;
|
||||
pub const Tag = @typeInfo(Coordinate).@"union".tag_type.?;
|
||||
pub const Surface = struct { x: f64, y: f64 };
|
||||
pub const Terminal = struct { x: f64, y: f64 };
|
||||
pub const Grid = struct { x: GridSize.Unit, y: GridSize.Unit };
|
||||
|
||||
Reference in New Issue
Block a user