View: fix frame perfection on unmap

This commit is contained in:
Isaac Freund
2023-03-01 23:04:42 +01:00
parent 83fe764fcd
commit ecb959f068
2 changed files with 15 additions and 3 deletions

View File

@ -222,9 +222,6 @@ pub fn handleMap(listener: *wl.Listener(*wlr.XwaylandSurface), xwayland_surface:
fn handleUnmap(listener: *wl.Listener(*wlr.XwaylandSurface), _: *wlr.XwaylandSurface) void {
const self = @fieldParentPtr(Self, "unmap", listener);
self.surface_tree.?.node.destroy();
self.surface_tree = null;
// Remove listeners that are only active while mapped
self.set_title.link.remove();
self.set_class.link.remove();
@ -232,6 +229,11 @@ fn handleUnmap(listener: *wl.Listener(*wlr.XwaylandSurface), _: *wlr.XwaylandSur
self.request_minimize.link.remove();
self.view.unmap();
// Don't destroy the surface tree until after View.unmap() has a chance
// to save buffers for frame perfection.
self.surface_tree.?.node.destroy();
self.surface_tree = null;
}
fn handleRequestConfigure(