mirror of
				https://gitlab.freedesktop.org/wlroots/wlroots.git
				synced 2025-11-03 09:01:40 -05:00 
			
		
		
		
	Add a wlr_output_set_subpixel()
drmModeConnector.subpixel doesn't seem to detect subpixel order on many displays (especially laptops). Allow subpixel order to be manually set. The corresponding PR for sway adds a subpixel output option: https://github.com/swaywm/sway/pull/3645 Once both are merged, https://github.com/swaywm/sway/issues/3163 will be fixed.
This commit is contained in:
		
							parent
							
								
									db6206aa1c
								
							
						
					
					
						commit
						5c8d2da0a1
					
				
					 2 changed files with 14 additions and 0 deletions
				
			
		| 
						 | 
					@ -174,6 +174,7 @@ void wlr_output_set_transform(struct wlr_output *output,
 | 
				
			||||||
	enum wl_output_transform transform);
 | 
						enum wl_output_transform transform);
 | 
				
			||||||
void wlr_output_set_position(struct wlr_output *output, int32_t lx, int32_t ly);
 | 
					void wlr_output_set_position(struct wlr_output *output, int32_t lx, int32_t ly);
 | 
				
			||||||
void wlr_output_set_scale(struct wlr_output *output, float scale);
 | 
					void wlr_output_set_scale(struct wlr_output *output, float scale);
 | 
				
			||||||
 | 
					void wlr_output_set_subpixel(struct wlr_output *output, enum wl_output_subpixel subpixel);
 | 
				
			||||||
void wlr_output_destroy(struct wlr_output *output);
 | 
					void wlr_output_destroy(struct wlr_output *output);
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
 * Computes the transformed output resolution.
 | 
					 * Computes the transformed output resolution.
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -248,6 +248,19 @@ void wlr_output_set_scale(struct wlr_output *output, float scale) {
 | 
				
			||||||
	wlr_signal_emit_safe(&output->events.scale, output);
 | 
						wlr_signal_emit_safe(&output->events.scale, output);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void wlr_output_set_subpixel(struct wlr_output *output, enum wl_output_subpixel subpixel) {
 | 
				
			||||||
 | 
						if (output->subpixel == subpixel) {
 | 
				
			||||||
 | 
							return;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						output->subpixel = subpixel;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						struct wl_resource *resource;
 | 
				
			||||||
 | 
						wl_resource_for_each(resource, &output->resources) {
 | 
				
			||||||
 | 
							output_send_to_resource(resource);
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static void handle_display_destroy(struct wl_listener *listener, void *data) {
 | 
					static void handle_display_destroy(struct wl_listener *listener, void *data) {
 | 
				
			||||||
	struct wlr_output *output =
 | 
						struct wlr_output *output =
 | 
				
			||||||
		wl_container_of(listener, output, display_destroy);
 | 
							wl_container_of(listener, output, display_destroy);
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue