xwayland: Unconditionally initialize lists in init_tablet_manager_seat()
In the event that xwayland gets launched on a wayland compositor that doesn't yet have support for wp_tablet_manager, we end up skipping the initialization of the lists. This is wrong, because regardless of whether or not a tablet is present we still attempt to traverse these lists later in xwl_set_cursor(), expecting that if the lists are empty from no tablet manager that we simply won't execute any loop iterations. (EE) (EE) Backtrace: (EE) 0: Xwayland (OsSigHandler+0x3b) [0x4982f9] (EE) 1: /lib64/libpthread.so.0 (__restore_rt+0x0) [0x7f73722545bf] (EE) 2: Xwayland (xwl_set_cursor+0x9f) [0x429974] (EE) 3: Xwayland (miPointerUpdateSprite+0x261) [0x4fe1ca] (EE) 4: Xwayland (mieqProcessInputEvents+0x239) [0x4f8d33] (EE) 5: Xwayland (ProcessInputEvents+0x9) [0x4282f0] (EE) 6: Xwayland (Dispatch+0x42) [0x43e2d4] (EE) 7: Xwayland (dix_main+0x5c9) [0x44c6dc] (EE) 8: Xwayland (main+0x28) [0x61c523] (EE) 9: /lib64/libc.so.6 (__libc_start_main+0xf1) [0x7f7371e9d401] (EE) 10: Xwayland (_start+0x2a) [0x4208fa] (EE) 11: ? (?+0x2a) [0x2a] (EE) (EE) Segmentation fault at address 0x28 (EE) Fatal server error: (EE) Caught signal 11 (Segmentation fault). Server aborting (EE) Reproduced when trying to run upstream xwayland under fedora 25's weston package. Signed-off-by: Lyude <lyude@redhat.com> Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net> Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
This commit is contained in:
		
							parent
							
								
									5f83b951ac
								
							
						
					
					
						commit
						a06bb73053
					
				| 
						 | 
				
			
			@ -2194,6 +2194,10 @@ static void
 | 
			
		|||
init_tablet_manager_seat(struct xwl_screen *xwl_screen,
 | 
			
		||||
                         struct xwl_seat *xwl_seat)
 | 
			
		||||
{
 | 
			
		||||
    xorg_list_init(&xwl_seat->tablets);
 | 
			
		||||
    xorg_list_init(&xwl_seat->tablet_tools);
 | 
			
		||||
    xorg_list_init(&xwl_seat->tablet_pads);
 | 
			
		||||
 | 
			
		||||
    if (!xwl_screen->tablet_manager)
 | 
			
		||||
        return;
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -2201,10 +2205,6 @@ init_tablet_manager_seat(struct xwl_screen *xwl_screen,
 | 
			
		|||
        zwp_tablet_manager_v2_get_tablet_seat(xwl_screen->tablet_manager,
 | 
			
		||||
                                              xwl_seat->seat);
 | 
			
		||||
 | 
			
		||||
    xorg_list_init(&xwl_seat->tablets);
 | 
			
		||||
    xorg_list_init(&xwl_seat->tablet_tools);
 | 
			
		||||
    xorg_list_init(&xwl_seat->tablet_pads);
 | 
			
		||||
 | 
			
		||||
    zwp_tablet_seat_v2_add_listener(xwl_seat->tablet_seat, &tablet_seat_listener, xwl_seat);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue