rootston: damage output on mode change

This commit is contained in:
emersion 2018-01-19 11:31:04 +01:00
parent 443bd4cd89
commit 7f9f918b78
No known key found for this signature in database
GPG key ID: 0FDE7BE0E88F5E48
2 changed files with 10 additions and 1 deletions

View file

@ -14,10 +14,12 @@ struct roots_output {
struct roots_view *fullscreen_view; struct roots_view *fullscreen_view;
struct wl_listener frame;
struct timespec last_frame; struct timespec last_frame;
pixman_region32_t damage, previous_damage; pixman_region32_t damage, previous_damage;
struct wl_event_source *repaint_timer; struct wl_event_source *repaint_timer;
struct wl_listener frame;
struct wl_listener mode;
}; };
void output_add_notify(struct wl_listener *listener, void *data); void output_add_notify(struct wl_listener *listener, void *data);

View file

@ -471,6 +471,11 @@ void output_damage_from_view(struct roots_output *output,
// TODO: subsurfaces, popups, etc // TODO: subsurfaces, popups, etc
} }
static void output_handle_mode(struct wl_listener *listener, void *data) {
struct roots_output *output = wl_container_of(listener, output, mode);
output_damage_whole(output);
}
static void set_mode(struct wlr_output *output, static void set_mode(struct wlr_output *output,
struct roots_output_config *oc) { struct roots_output_config *oc) {
int mhz = (int)(oc->mode.refresh_rate * 1000); int mhz = (int)(oc->mode.refresh_rate * 1000);
@ -530,6 +535,8 @@ void output_add_notify(struct wl_listener *listener, void *data) {
output->frame.notify = output_handle_frame; output->frame.notify = output_handle_frame;
wl_signal_add(&wlr_output->events.frame, &output->frame); wl_signal_add(&wlr_output->events.frame, &output->frame);
output->mode.notify = output_handle_mode;
wl_signal_add(&wlr_output->events.mode, &output->mode);
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);