|  |  |  | @ -98,17 +98,40 @@ static void output_resolution_notify(struct wl_listener *listener, void *data) { | 
			
		
	
		
			
				
					|  |  |  |  | 	arrange_windows(soutput->swayc, -1, -1); | 
			
		
	
		
			
				
					|  |  |  |  | } | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | static void output_scale_notify(struct wl_listener *listener, void *data) { | 
			
		
	
		
			
				
					|  |  |  |  | 	struct sway_output *soutput = wl_container_of( | 
			
		
	
		
			
				
					|  |  |  |  | 			listener, soutput, scale); | 
			
		
	
		
			
				
					|  |  |  |  | 	arrange_windows(soutput->swayc, -1, -1); | 
			
		
	
		
			
				
					|  |  |  |  | } | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | static void output_transform_notify(struct wl_listener *listener, void *data) { | 
			
		
	
		
			
				
					|  |  |  |  | 	struct sway_output *soutput = wl_container_of( | 
			
		
	
		
			
				
					|  |  |  |  | 			listener, soutput, transform); | 
			
		
	
		
			
				
					|  |  |  |  | 	arrange_windows(soutput->swayc, -1, -1); | 
			
		
	
		
			
				
					|  |  |  |  | } | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | void output_add_notify(struct wl_listener *listener, void *data) { | 
			
		
	
		
			
				
					|  |  |  |  | 	struct sway_server *server = wl_container_of(listener, server, output_add); | 
			
		
	
		
			
				
					|  |  |  |  | 	struct wlr_output *wlr_output = data; | 
			
		
	
		
			
				
					|  |  |  |  | 	sway_log(L_DEBUG, "New output %p: %s", wlr_output, wlr_output->name); | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | 	struct sway_output *output = calloc(1, sizeof(struct sway_output)); | 
			
		
	
		
			
				
					|  |  |  |  | 	if (!output) { | 
			
		
	
		
			
				
					|  |  |  |  | 		return; | 
			
		
	
		
			
				
					|  |  |  |  | 	} | 
			
		
	
		
			
				
					|  |  |  |  | 	output->wlr_output = wlr_output; | 
			
		
	
		
			
				
					|  |  |  |  | 	output->server = server; | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | 	wl_signal_init(&output->events.scale); | 
			
		
	
		
			
				
					|  |  |  |  | 	wl_signal_init(&output->events.transform); | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | 	output->swayc = new_output(output); | 
			
		
	
		
			
				
					|  |  |  |  | 	if (!output->swayc) { | 
			
		
	
		
			
				
					|  |  |  |  | 		free(output); | 
			
		
	
		
			
				
					|  |  |  |  | 		return; | 
			
		
	
		
			
				
					|  |  |  |  | 	} | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | 	if (wl_list_length(&wlr_output->modes) > 0) { | 
			
		
	
		
			
				
					|  |  |  |  | 	if (!wl_list_empty(&wlr_output->modes)) { | 
			
		
	
		
			
				
					|  |  |  |  | 		struct wlr_output_mode *mode = NULL; | 
			
		
	
		
			
				
					|  |  |  |  | 		mode = wl_container_of((&wlr_output->modes)->prev, mode, link); | 
			
		
	
		
			
				
					|  |  |  |  | 		wlr_output_set_mode(wlr_output, mode); | 
			
		
	
	
		
			
				
					|  |  |  | @ -116,9 +139,12 @@ void output_add_notify(struct wl_listener *listener, void *data) { | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | 	output->frame.notify = output_frame_notify; | 
			
		
	
		
			
				
					|  |  |  |  | 	wl_signal_add(&wlr_output->events.frame, &output->frame); | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | 	output->resolution.notify = output_resolution_notify; | 
			
		
	
		
			
				
					|  |  |  |  | 	wl_signal_add(&wlr_output->events.resolution, &output->resolution); | 
			
		
	
		
			
				
					|  |  |  |  | 	output->scale.notify = output_scale_notify; | 
			
		
	
		
			
				
					|  |  |  |  | 	wl_signal_add(&output->events.scale, &output->scale); | 
			
		
	
		
			
				
					|  |  |  |  | 	output->transform.notify = output_transform_notify; | 
			
		
	
		
			
				
					|  |  |  |  | 	wl_signal_add(&output->events.transform, &output->transform); | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | 	arrange_windows(output->swayc, -1, -1); | 
			
		
	
		
			
				
					|  |  |  |  | } | 
			
		
	
	
		
			
				
					|  |  |  | 
 |