mirror of
				https://gitlab.freedesktop.org/wlroots/wlroots.git
				synced 2025-11-03 09:01:40 -05:00 
			
		
		
		
	Disable outputs in rootston config
This commit is contained in:
		
							parent
							
								
									d9ecfbaf32
								
							
						
					
					
						commit
						be3a7b0017
					
				
					 3 changed files with 24 additions and 9 deletions
				
			
		| 
						 | 
					@ -7,6 +7,7 @@
 | 
				
			||||||
 | 
					
 | 
				
			||||||
struct roots_output_config {
 | 
					struct roots_output_config {
 | 
				
			||||||
	char *name;
 | 
						char *name;
 | 
				
			||||||
 | 
						bool enable;
 | 
				
			||||||
	enum wl_output_transform transform;
 | 
						enum wl_output_transform transform;
 | 
				
			||||||
	int x, y;
 | 
						int x, y;
 | 
				
			||||||
	float scale;
 | 
						float scale;
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -263,10 +263,19 @@ static int config_ini_handler(void *user, const char *section, const char *name,
 | 
				
			||||||
			oc->name = strdup(output_name);
 | 
								oc->name = strdup(output_name);
 | 
				
			||||||
			oc->transform = WL_OUTPUT_TRANSFORM_NORMAL;
 | 
								oc->transform = WL_OUTPUT_TRANSFORM_NORMAL;
 | 
				
			||||||
			oc->scale = 1;
 | 
								oc->scale = 1;
 | 
				
			||||||
 | 
								oc->enable = true;
 | 
				
			||||||
			wl_list_insert(&config->outputs, &oc->link);
 | 
								wl_list_insert(&config->outputs, &oc->link);
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		if (strcmp(name, "x") == 0) {
 | 
							if (strcmp(name, "enable") == 0) {
 | 
				
			||||||
 | 
								if (strcasecmp(value, "true") == 0) {
 | 
				
			||||||
 | 
									oc->enable = true;
 | 
				
			||||||
 | 
								} else if (strcasecmp(value, "false") == 0) {
 | 
				
			||||||
 | 
									oc->enable = false;
 | 
				
			||||||
 | 
								} else {
 | 
				
			||||||
 | 
									wlr_log(L_ERROR, "got invalid output enable value: %s", value);
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
							} else if (strcmp(name, "x") == 0) {
 | 
				
			||||||
			oc->x = strtol(value, NULL, 10);
 | 
								oc->x = strtol(value, NULL, 10);
 | 
				
			||||||
		} else if (strcmp(name, "y") == 0) {
 | 
							} else if (strcmp(name, "y") == 0) {
 | 
				
			||||||
			oc->y = strtol(value, NULL, 10);
 | 
								oc->y = strtol(value, NULL, 10);
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -324,9 +324,10 @@ void output_add_notify(struct wl_listener *listener, void *data) {
 | 
				
			||||||
	wlr_log(L_DEBUG, "'%s %s %s' %"PRId32"mm x %"PRId32"mm", wlr_output->make,
 | 
						wlr_log(L_DEBUG, "'%s %s %s' %"PRId32"mm x %"PRId32"mm", wlr_output->make,
 | 
				
			||||||
		wlr_output->model, wlr_output->serial, wlr_output->phys_width,
 | 
							wlr_output->model, wlr_output->serial, wlr_output->phys_width,
 | 
				
			||||||
		wlr_output->phys_height);
 | 
							wlr_output->phys_height);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (wl_list_length(&wlr_output->modes) > 0) {
 | 
						if (wl_list_length(&wlr_output->modes) > 0) {
 | 
				
			||||||
		struct wlr_output_mode *mode = NULL;
 | 
							struct wlr_output_mode *mode =
 | 
				
			||||||
		mode = wl_container_of((&wlr_output->modes)->prev, mode, link);
 | 
								wl_container_of((&wlr_output->modes)->prev, mode, link);
 | 
				
			||||||
		wlr_output_set_mode(wlr_output, mode);
 | 
							wlr_output_set_mode(wlr_output, mode);
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -341,13 +342,17 @@ void output_add_notify(struct wl_listener *listener, void *data) {
 | 
				
			||||||
	struct roots_output_config *output_config =
 | 
						struct roots_output_config *output_config =
 | 
				
			||||||
		roots_config_get_output(config, wlr_output);
 | 
							roots_config_get_output(config, wlr_output);
 | 
				
			||||||
	if (output_config) {
 | 
						if (output_config) {
 | 
				
			||||||
		if (output_config->mode.width) {
 | 
							if (output_config->enable) {
 | 
				
			||||||
			set_mode(wlr_output, output_config);
 | 
								if (output_config->mode.width) {
 | 
				
			||||||
 | 
									set_mode(wlr_output, output_config);
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
								wlr_output_set_scale(wlr_output, output_config->scale);
 | 
				
			||||||
 | 
								wlr_output_set_transform(wlr_output, output_config->transform);
 | 
				
			||||||
 | 
								wlr_output_layout_add(desktop->layout, wlr_output, output_config->x,
 | 
				
			||||||
 | 
									output_config->y);
 | 
				
			||||||
 | 
							} else {
 | 
				
			||||||
 | 
								wlr_output_enable(wlr_output, false);
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		wlr_output_set_scale(wlr_output, output_config->scale);
 | 
					 | 
				
			||||||
		wlr_output_set_transform(wlr_output, output_config->transform);
 | 
					 | 
				
			||||||
		wlr_output_layout_add(desktop->layout, wlr_output, output_config->x,
 | 
					 | 
				
			||||||
			output_config->y);
 | 
					 | 
				
			||||||
	} else {
 | 
						} else {
 | 
				
			||||||
		wlr_output_layout_add_auto(desktop->layout, wlr_output);
 | 
							wlr_output_layout_add_auto(desktop->layout, wlr_output);
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue