@ -361,6 +361,8 @@ shell_destroy(struct wl_listener *listener, void *data)
text_backend_destroy ( shell - > text_backend ) ;
text_backend_destroy ( shell - > text_backend ) ;
input_panel_destroy ( shell ) ;
input_panel_destroy ( shell ) ;
wl_list_remove ( & shell - > wake_listener . link ) ;
wl_list_for_each_safe ( ivisurf , next , & shell - > ivi_surface_list , link ) {
wl_list_for_each_safe ( ivisurf , next , & shell - > ivi_surface_list , link ) {
wl_list_remove ( & ivisurf - > link ) ;
wl_list_remove ( & ivisurf - > link ) ;
free ( ivisurf ) ;
free ( ivisurf ) ;
@ -369,6 +371,17 @@ shell_destroy(struct wl_listener *listener, void *data)
free ( shell ) ;
free ( shell ) ;
}
}
/*
* Called through the compositor ' s wake signal .
*/
static void
wake_handler ( struct wl_listener * listener , void * data )
{
struct weston_compositor * compositor = data ;
weston_compositor_damage_all ( compositor ) ;
}
static void
static void
terminate_binding ( struct weston_keyboard * keyboard , const struct timespec * time ,
terminate_binding ( struct weston_keyboard * keyboard , const struct timespec * time ,
uint32_t key , void * data )
uint32_t key , void * data )
@ -480,6 +493,9 @@ wet_shell_init(struct weston_compositor *compositor,
shell - > destroy_listener . notify = shell_destroy ;
shell - > destroy_listener . notify = shell_destroy ;
wl_signal_add ( & compositor - > destroy_signal , & shell - > destroy_listener ) ;
wl_signal_add ( & compositor - > destroy_signal , & shell - > destroy_listener ) ;
shell - > wake_listener . notify = wake_handler ;
wl_signal_add ( & compositor - > wake_signal , & shell - > wake_listener ) ;
if ( input_panel_setup ( shell ) < 0 )
if ( input_panel_setup ( shell ) < 0 )
goto out ;
goto out ;