wlserver: Fix stale wlr pointer in x11_surface_info + fix mouse focus surface destruction
Stale pointers aaaa
This commit is contained in:
parent
716552b7d6
commit
4754b17824
1 changed files with 8 additions and 10 deletions
|
@ -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 );
|
||||
|
|
Loading…
Reference in a new issue