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 )
|
static void handle_wl_surface_destroy( struct wl_listener *l, void *data )
|
||||||
{
|
{
|
||||||
wlserver_wl_surface_info *surf = wl_container_of( l, surf, destroy );
|
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;
|
delete surf;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1230,16 +1238,6 @@ void wlserver_x11_surface_info_finish( struct wlserver_x11_surface_info *surf )
|
||||||
wl_info->x11_surface = nullptr;
|
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->wl_id = 0;
|
||||||
surf->wlr = nullptr;
|
surf->wlr = nullptr;
|
||||||
wl_list_remove( &surf->pending_link );
|
wl_list_remove( &surf->pending_link );
|
||||||
|
|
Loading…
Reference in a new issue