|  |  | @ -72,30 +72,31 @@ static struct wlr_backend *attempt_wl_backend(struct wl_display *display) { | 
			
		
	
		
		
			
				
					
					|  |  |  | } |  |  |  | } | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  | struct wlr_backend *wlr_backend_autocreate(struct wl_display *display) { |  |  |  | struct wlr_backend *wlr_backend_autocreate(struct wl_display *display) { | 
			
		
	
		
		
			
				
					
					|  |  |  | 	struct wlr_backend *backend; |  |  |  | 	struct wlr_backend *backend = wlr_multi_backend_create(display); | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 	if (!backend) { | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 		wlr_log(L_ERROR, "could not allocate multibackend"); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 		return NULL; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 	} | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  | 	if (getenv("WAYLAND_DISPLAY") || getenv("_WAYLAND_DISPLAY")) { |  |  |  | 	if (getenv("WAYLAND_DISPLAY") || getenv("_WAYLAND_DISPLAY")) { | 
			
		
	
		
		
			
				
					
					|  |  |  | 		backend = attempt_wl_backend(display); |  |  |  | 		struct wlr_backend *wl_backend = attempt_wl_backend(display); | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  | 		if (backend) { |  |  |  | 		if (wl_backend) { | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  | 			return backend; |  |  |  | 			wlr_multi_backend_add(backend, wl_backend); | 
			
				
				
			
		
	
		
		
	
		
		
	
		
		
	
		
		
			
				
					
					|  |  |  | 		} |  |  |  | 		} | 
			
		
	
		
		
			
				
					
					|  |  |  | 	} |  |  |  | 	} | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  | 	const char *x11_display = getenv("DISPLAY"); |  |  |  | 	const char *x11_display = getenv("DISPLAY"); | 
			
		
	
		
		
			
				
					
					|  |  |  | 	if (x11_display) { |  |  |  | 	if (x11_display) { | 
			
		
	
		
		
			
				
					
					|  |  |  | 		return wlr_x11_backend_create(display, x11_display); |  |  |  | 		struct wlr_backend *x11_backend = | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 			wlr_x11_backend_create(display, x11_display); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 		wlr_multi_backend_add(backend, x11_backend); | 
			
		
	
		
		
			
				
					
					|  |  |  | 	} |  |  |  | 	} | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  | 	// Attempt DRM+libinput
 |  |  |  | 	// Attempt DRM+libinput
 | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 	struct wlr_session *session = wlr_session_create(display); |  |  |  | 	struct wlr_session *session = wlr_session_create(display); | 
			
		
	
		
		
			
				
					
					|  |  |  | 	if (!session) { |  |  |  | 	if (!session) { | 
			
		
	
		
		
			
				
					
					|  |  |  | 		wlr_log(L_ERROR, "Failed to start a DRM session"); |  |  |  | 		wlr_log(L_ERROR, "Failed to start a DRM session"); | 
			
		
	
		
		
			
				
					
					|  |  |  | 		return NULL; |  |  |  | 		return backend; | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  | 	} |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 	backend = wlr_multi_backend_create(display); |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 	if (!backend) { |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 		goto error_session; |  |  |  |  | 
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  | 	} |  |  |  | 	} | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  | 	struct wlr_backend *libinput = wlr_libinput_backend_create(display, session); |  |  |  | 	struct wlr_backend *libinput = wlr_libinput_backend_create(display, session); | 
			
		
	
	
		
		
			
				
					|  |  | @ -134,9 +135,8 @@ struct wlr_backend *wlr_backend_autocreate(struct wl_display *display) { | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  | error_multi: |  |  |  | error_multi: | 
			
		
	
		
		
			
				
					
					|  |  |  | 	wlr_backend_destroy(backend); |  |  |  | 	wlr_backend_destroy(backend); | 
			
		
	
		
		
			
				
					
					|  |  |  | error_session: |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 	wlr_session_destroy(session); |  |  |  | 	wlr_session_destroy(session); | 
			
		
	
		
		
			
				
					
					|  |  |  | 	return NULL; |  |  |  | 	return backend; | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  | } |  |  |  | } | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  | uint32_t usec_to_msec(uint64_t usec) { |  |  |  | uint32_t usec_to_msec(uint64_t usec) { | 
			
		
	
	
		
		
			
				
					|  |  | 
 |