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
|
@ -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…
Reference in New Issue