a73x

cd9e8b61

Add ScaleTracker.enteredCount

a73x   2026-04-16 10:41

Commit message
Add ScaleTracker.enteredCount

Exposes the size of the entered-output set so higher layers can gate
rendering on surface visibility.

src/scale_tracker.zig
Old New
@@ -52,6 +52,10 @@ pub const ScaleTracker = struct {
52 } 52 }
53 return max_scale; 53 return max_scale;
54 } 54 }
55
56 pub fn enteredCount(self: *const ScaleTracker) usize {
57 return self.entered.count();
58 }
55 }; 59 };
56 60
57 test "new tracker reports default scale of 1" { 61 test "new tracker reports default scale of 1" {
@@ -135,3 +139,26 @@ test "setOutputScale on unknown id is a no-op" {
135 t.setOutputScale(999, 5); 139 t.setOutputScale(999, 5);
136 try std.testing.expectEqual(@as(i32, 1), t.bufferScale()); 140 try std.testing.expectEqual(@as(i32, 1), t.bufferScale());
137 } 141 }
142
143 test "enteredCount reflects the entered-output set" {
144 var t = ScaleTracker.init(std.testing.allocator);
145 defer t.deinit();
146
147 try std.testing.expectEqual(@as(usize, 0), t.enteredCount());
148
149 try t.addOutput(1);
150 try t.addOutput(2);
151 try std.testing.expectEqual(@as(usize, 0), t.enteredCount());
152
153 try t.enterOutput(1);
154 try std.testing.expectEqual(@as(usize, 1), t.enteredCount());
155
156 try t.enterOutput(2);
157 try std.testing.expectEqual(@as(usize, 2), t.enteredCount());
158
159 t.leaveOutput(1);
160 try std.testing.expectEqual(@as(usize, 1), t.enteredCount());
161
162 t.removeOutput(2);
163 try std.testing.expectEqual(@as(usize, 0), t.enteredCount());
164 }