|  |  | @ -47,6 +47,7 @@ struct output_config *new_output_config(const char *name) { | 
			
		
	
		
		
			
				
					
					|  |  |  | 	oc->scale = -1; |  |  |  | 	oc->scale = -1; | 
			
		
	
		
		
			
				
					
					|  |  |  | 	oc->transform = -1; |  |  |  | 	oc->transform = -1; | 
			
		
	
		
		
			
				
					
					|  |  |  | 	oc->subpixel = WL_OUTPUT_SUBPIXEL_UNKNOWN; |  |  |  | 	oc->subpixel = WL_OUTPUT_SUBPIXEL_UNKNOWN; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 	oc->max_render_time = -1; | 
			
		
	
		
		
			
				
					
					|  |  |  | 	return oc; |  |  |  | 	return oc; | 
			
		
	
		
		
			
				
					
					|  |  |  | } |  |  |  | } | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
	
		
		
			
				
					|  |  | @ -81,6 +82,9 @@ void merge_output_config(struct output_config *dst, struct output_config *src) { | 
			
		
	
		
		
			
				
					
					|  |  |  | 	if (src->transform != -1) { |  |  |  | 	if (src->transform != -1) { | 
			
		
	
		
		
			
				
					
					|  |  |  | 		dst->transform = src->transform; |  |  |  | 		dst->transform = src->transform; | 
			
		
	
		
		
			
				
					
					|  |  |  | 	} |  |  |  | 	} | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 	if (src->max_render_time != -1) { | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 		dst->max_render_time = src->max_render_time; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 	} | 
			
		
	
		
		
			
				
					
					|  |  |  | 	if (src->background) { |  |  |  | 	if (src->background) { | 
			
		
	
		
		
			
				
					
					|  |  |  | 		free(dst->background); |  |  |  | 		free(dst->background); | 
			
		
	
		
		
			
				
					
					|  |  |  | 		dst->background = strdup(src->background); |  |  |  | 		dst->background = strdup(src->background); | 
			
		
	
	
		
		
			
				
					|  |  | @ -153,11 +157,12 @@ static void merge_id_on_name(struct output_config *oc) { | 
			
		
	
		
		
			
				
					
					|  |  |  | 			list_add(config->output_configs, ion_oc); |  |  |  | 			list_add(config->output_configs, ion_oc); | 
			
		
	
		
		
			
				
					
					|  |  |  | 			sway_log(SWAY_DEBUG, "Generated id on name output config \"%s\"" |  |  |  | 			sway_log(SWAY_DEBUG, "Generated id on name output config \"%s\"" | 
			
		
	
		
		
			
				
					
					|  |  |  | 				" (enabled: %d) (%dx%d@%fHz position %d,%d scale %f " |  |  |  | 				" (enabled: %d) (%dx%d@%fHz position %d,%d scale %f " | 
			
		
	
		
		
			
				
					
					|  |  |  | 				"transform %d) (bg %s %s) (dpms %d)", ion_oc->name, |  |  |  | 				"transform %d) (bg %s %s) (dpms %d) (max render time: %d)", | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  | 				ion_oc->enabled, ion_oc->width, ion_oc->height, |  |  |  | 				ion_oc->name, ion_oc->enabled, ion_oc->width, ion_oc->height, | 
			
				
				
			
		
	
		
		
	
		
		
	
		
		
			
				
					
					|  |  |  | 				ion_oc->refresh_rate, ion_oc->x, ion_oc->y, ion_oc->scale, |  |  |  | 				ion_oc->refresh_rate, ion_oc->x, ion_oc->y, ion_oc->scale, | 
			
		
	
		
		
			
				
					
					|  |  |  | 				ion_oc->transform, ion_oc->background, |  |  |  | 				ion_oc->transform, ion_oc->background, | 
			
		
	
		
		
			
				
					
					|  |  |  | 				ion_oc->background_option, ion_oc->dpms_state); |  |  |  | 				ion_oc->background_option, ion_oc->dpms_state, | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 				ion_oc->max_render_time); | 
			
		
	
		
		
			
				
					
					|  |  |  | 		} |  |  |  | 		} | 
			
		
	
		
		
			
				
					
					|  |  |  | 	} |  |  |  | 	} | 
			
		
	
		
		
			
				
					
					|  |  |  | 	free(id_on_name); |  |  |  | 	free(id_on_name); | 
			
		
	
	
		
		
			
				
					|  |  | @ -197,10 +202,12 @@ struct output_config *store_output_config(struct output_config *oc) { | 
			
		
	
		
		
			
				
					
					|  |  |  | 	} |  |  |  | 	} | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  | 	sway_log(SWAY_DEBUG, "Config stored for output %s (enabled: %d) (%dx%d@%fHz " |  |  |  | 	sway_log(SWAY_DEBUG, "Config stored for output %s (enabled: %d) (%dx%d@%fHz " | 
			
		
	
		
		
			
				
					
					|  |  |  | 		"position %d,%d scale %f subpixel %s transform %d) (bg %s %s) (dpms %d)", |  |  |  | 		"position %d,%d scale %f subpixel %s transform %d) (bg %s %s) (dpms %d) " | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 		"(max render time: %d)", | 
			
		
	
		
		
			
				
					
					|  |  |  | 		oc->name, oc->enabled, oc->width, oc->height, oc->refresh_rate, |  |  |  | 		oc->name, oc->enabled, oc->width, oc->height, oc->refresh_rate, | 
			
		
	
		
		
			
				
					
					|  |  |  | 		oc->x, oc->y, oc->scale, sway_wl_output_subpixel_to_string(oc->subpixel), |  |  |  | 		oc->x, oc->y, oc->scale, sway_wl_output_subpixel_to_string(oc->subpixel), | 
			
		
	
		
		
			
				
					
					|  |  |  | 		oc->transform, oc->background, oc->background_option, oc->dpms_state); |  |  |  | 		oc->transform, oc->background, oc->background_option, oc->dpms_state, | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 		oc->max_render_time); | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  | 	return oc; |  |  |  | 	return oc; | 
			
		
	
		
		
			
				
					
					|  |  |  | } |  |  |  | } | 
			
		
	
	
		
		
			
				
					|  |  | @ -325,6 +332,12 @@ bool apply_output_config(struct output_config *oc, struct sway_output *output) { | 
			
		
	
		
		
			
				
					
					|  |  |  | 		wlr_output_enable(wlr_output, false); |  |  |  | 		wlr_output_enable(wlr_output, false); | 
			
		
	
		
		
			
				
					
					|  |  |  | 	} |  |  |  | 	} | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 	if (oc && oc->max_render_time >= 0) { | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 		sway_log(SWAY_DEBUG, "Set %s max render time to %d", | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 			oc->name, oc->max_render_time); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 		output->max_render_time = oc->max_render_time; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 	} | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  | 	return true; |  |  |  | 	return true; | 
			
		
	
		
		
			
				
					
					|  |  |  | } |  |  |  | } | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
	
		
		
			
				
					|  |  | @ -343,6 +356,7 @@ static void default_output_config(struct output_config *oc, | 
			
		
	
		
		
			
				
					
					|  |  |  | 	oc->subpixel = output->detected_subpixel; |  |  |  | 	oc->subpixel = output->detected_subpixel; | 
			
		
	
		
		
			
				
					
					|  |  |  | 	oc->transform = WL_OUTPUT_TRANSFORM_NORMAL; |  |  |  | 	oc->transform = WL_OUTPUT_TRANSFORM_NORMAL; | 
			
		
	
		
		
			
				
					
					|  |  |  | 	oc->dpms_state = DPMS_ON; |  |  |  | 	oc->dpms_state = DPMS_ON; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 	oc->max_render_time = 0; | 
			
		
	
		
		
			
				
					
					|  |  |  | } |  |  |  | } | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  | static struct output_config *get_output_config(char *identifier, |  |  |  | static struct output_config *get_output_config(char *identifier, | 
			
		
	
	
		
		
			
				
					|  |  | @ -396,10 +410,11 @@ static struct output_config *get_output_config(char *identifier, | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  | 		sway_log(SWAY_DEBUG, "Generated output config \"%s\" (enabled: %d)" |  |  |  | 		sway_log(SWAY_DEBUG, "Generated output config \"%s\" (enabled: %d)" | 
			
		
	
		
		
			
				
					
					|  |  |  | 			" (%dx%d@%fHz position %d,%d scale %f transform %d) (bg %s %s)" |  |  |  | 			" (%dx%d@%fHz position %d,%d scale %f transform %d) (bg %s %s)" | 
			
		
	
		
		
			
				
					
					|  |  |  | 			" (dpms %d)", result->name, result->enabled, result->width, |  |  |  | 			" (dpms %d) (max render time: %d)", result->name, result->enabled, | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  | 			result->height, result->refresh_rate, result->x, result->y, |  |  |  | 			result->width, result->height, result->refresh_rate, | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  | 			result->scale, result->transform, result->background, |  |  |  | 			result->x, result->y, result->scale, result->transform, | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  | 			result->background_option, result->dpms_state); |  |  |  | 			result->background, result->background_option, result->dpms_state, | 
			
				
				
			
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 			result->max_render_time); | 
			
		
	
		
		
			
				
					
					|  |  |  | 	} else if (oc_name) { |  |  |  | 	} else if (oc_name) { | 
			
		
	
		
		
			
				
					
					|  |  |  | 		// No identifier config, just return a copy of the name config
 |  |  |  | 		// No identifier config, just return a copy of the name config
 | 
			
		
	
		
		
			
				
					
					|  |  |  | 		free(result->name); |  |  |  | 		free(result->name); | 
			
		
	
	
		
		
			
				
					|  |  | 
 |