summaryrefslogtreecommitdiff
path: root/src/Presentation.zig
diff options
context:
space:
mode:
Diffstat (limited to 'src/Presentation.zig')
-rw-r--r--src/Presentation.zig13
1 files changed, 11 insertions, 2 deletions
diff --git a/src/Presentation.zig b/src/Presentation.zig
index fe8317dd..45b196c8 100644
--- a/src/Presentation.zig
+++ b/src/Presentation.zig
@@ -295,11 +295,18 @@ pub fn acknowledge(self: *Presentation, p: *Pardes, tracks: []const Track) void
self.tracks = @splat(null);
self.closing_len = 0;
self.diff_state = .none;
- self.capturePrevious(p.gpa, &p.surface);
+ // The frozen grid exists for transitions alone: with them off, an
+ // idle frame copies nothing.
+ if (p.settings.panel_transition != .off) {
+ self.capturePrevious(p.gpa, &p.surface);
+ } else {
+ self.previous_valid = false;
+ self.previous_layout = @splat(null);
+ }
}
}
-fn capturePrevious(self: *Presentation, gpa: std.mem.Allocator, surface: *const pardes.Surface) void {
+pub fn capturePrevious(self: *Presentation, gpa: std.mem.Allocator, surface: *const pardes.Surface) void {
self.diff_state = .none;
const cells = surface.cells;
if (cells.len == 0) {
@@ -651,6 +658,8 @@ test "presentation submission failure preserves shown geometry until retry is ac
defer p.deinit();
var frame: std.heap.ArenaAllocator = .init(std.testing.allocator);
defer frame.deinit();
+ // The frozen grid is kept only while a transition is chosen.
+ p.settings.panel_transition = .slide;
_ = try p.render(frame.allocator());
p.acknowledgePanelPresentation(&.{});
const shown = p.presentation.shown;