mirror of
https://github.com/swaywm/sway.git
synced 2026-06-13 14:33:19 -04:00
Merge c2797d0d9b into 47ec005a58
This commit is contained in:
commit
7b308a10b6
4 changed files with 25 additions and 0 deletions
|
|
@ -72,6 +72,9 @@ struct sway_output {
|
|||
|
||||
bool allow_tearing;
|
||||
bool hdr;
|
||||
|
||||
bool brightness_changed;
|
||||
float brightness;
|
||||
};
|
||||
|
||||
struct sway_output_non_desktop {
|
||||
|
|
@ -145,6 +148,8 @@ void handle_output_manager_test(struct wl_listener *listener, void *data);
|
|||
|
||||
void handle_output_power_manager_set_mode(struct wl_listener *listener,
|
||||
void *data);
|
||||
void handle_output_power_manager_set_brightness(struct wl_listener *listener,
|
||||
void *data);
|
||||
|
||||
struct sway_output_non_desktop *output_non_desktop_create(struct wlr_output *wlr_output);
|
||||
|
||||
|
|
|
|||
|
|
@ -100,6 +100,7 @@ struct sway_server {
|
|||
|
||||
struct wlr_output_power_manager_v1 *output_power_manager_v1;
|
||||
struct wl_listener output_power_manager_set_mode;
|
||||
struct wl_listener output_power_manager_set_brightness;
|
||||
struct wlr_input_method_manager_v2 *input_method;
|
||||
struct wlr_text_input_manager_v3 *text_input;
|
||||
struct wlr_ext_foreign_toplevel_list_v1 *foreign_toplevel_list;
|
||||
|
|
|
|||
|
|
@ -303,6 +303,11 @@ static int output_repaint_timer_handler(void *data) {
|
|||
}
|
||||
}
|
||||
|
||||
if (output->brightness_changed) {
|
||||
wlr_output_state_set_brightness(&pending, output->brightness);
|
||||
output->brightness_changed = false;
|
||||
}
|
||||
|
||||
if (!wlr_output_commit_state(output->wlr_output, &pending)) {
|
||||
sway_log(SWAY_ERROR, "Page-flip failed on output %s", output->wlr_output->name);
|
||||
}
|
||||
|
|
@ -725,3 +730,13 @@ void handle_output_power_manager_set_mode(struct wl_listener *listener,
|
|||
store_output_config(oc);
|
||||
request_modeset();
|
||||
}
|
||||
|
||||
void handle_output_power_manager_set_brightness(struct wl_listener *listener,
|
||||
void *data) {
|
||||
struct wlr_output_power_v1_set_brightness_event *event = data;
|
||||
struct sway_output *output = event->output->data;
|
||||
|
||||
output->brightness_changed = true;
|
||||
output->brightness = event->value;
|
||||
wlr_output_schedule_frame(output->wlr_output);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -458,6 +458,10 @@ bool server_init(struct sway_server *server) {
|
|||
handle_output_power_manager_set_mode;
|
||||
wl_signal_add(&server->output_power_manager_v1->events.set_mode,
|
||||
&server->output_power_manager_set_mode);
|
||||
server->output_power_manager_set_brightness.notify =
|
||||
handle_output_power_manager_set_brightness;
|
||||
wl_signal_add(&server->output_power_manager_v1->events.set_brightness,
|
||||
&server->output_power_manager_set_brightness);
|
||||
server->input_method = wlr_input_method_manager_v2_create(server->wl_display);
|
||||
if (!server->input_method) {
|
||||
sway_log(SWAY_ERROR, "Failed to create input method manager");
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue