wlserver: Fix stale wlr pointer in x11_surface_info + fix mouse focus surface destruction

Stale pointers aaaa
This commit is contained in:
Joshua Ashton 2022-09-15 22:53:18 +00:00 committed by Joshie
parent 716552b7d6
commit 4754b17824

View file

@ -366,6 +366,14 @@ static wlserver_wl_surface_info *get_wl_surface_info(struct wlr_surface *wlr_sur
static void handle_wl_surface_destroy( struct wl_listener *l, void *data )
{
wlserver_wl_surface_info *surf = wl_container_of( l, surf, destroy );
if (surf->x11_surface)
surf->x11_surface->wlr = nullptr;
if ( surf->wlr == wlserver.mouse_focus_surface )
wlserver.mouse_focus_surface = nullptr;
if ( surf->wlr == wlserver.kb_focus_surface )
wlserver.kb_focus_surface = nullptr;
delete surf;
}
@ -1230,16 +1238,6 @@ void wlserver_x11_surface_info_finish( struct wlserver_x11_surface_info *surf )
wl_info->x11_surface = nullptr;
}
if ( surf->wlr == wlserver.mouse_focus_surface )
{
wlserver.mouse_focus_surface = nullptr;
}
if ( surf->wlr == wlserver.kb_focus_surface )
{
wlserver.kb_focus_surface = nullptr;
}
surf->wl_id = 0;
surf->wlr = nullptr;
wl_list_remove( &surf->pending_link );