xwayland: associate/dissociate/map/unmap cleanups

- connect/disconnect map handlers in set_surface()
- call set_surface() at time of associate/dissociate

This separates the concepts of "associate" and "map" more clearly.

It's no longer necessary to listen for wlr_surface "destroy" event,
because dissociate is always received first.

Also, view->content_tree is now destroyed and set to NULL at unmap.
Previously, we relied on wlr_scene to destroy it automatically when
the surface was destroyed, but kept a potentially dangling pointer in
view->content_tree until next map. Similar change for unmanaged.

v2: comment updates
This commit is contained in:
John Lindgren 2025-11-24 11:27:19 -05:00
parent 4b0903cfa9
commit b9da216bde
3 changed files with 27 additions and 32 deletions

View file

@ -237,7 +237,6 @@ struct view {
struct mappable mappable;
struct wl_listener destroy;
struct wl_listener surface_destroy;
struct wl_listener commit;
struct wl_listener request_move;
struct wl_listener request_resize;