wlr_output: do not modeset to current mode
There is no point in modesetting an output to a mode that it is already
set to. Modesetting will cause the output to briefly flicker which is
undesirable for a noop. This prevents modesetting any wlr_output,
regardless of the backend, to it's currently set mode.
@@ -159,6 +159,9 @@ bool wlr_output_set_mode(struct wlr_output *output,
if (!output->impl || !output->impl->set_mode) {
return false;
}
+ if (output->current_mode == mode) {
+ return true;
+ }
return output->impl->set_mode(output, mode);
}
@@ -167,6 +170,10 @@ bool wlr_output_set_custom_mode(struct wlr_output *output, int32_t width,
if (!output->impl || !output->impl->set_custom_mode) {
return false;
}
+ if (output->width == width && output->height == height &&
+ output->refresh == refresh) {
+ return true;
+ }
return output->impl->set_custom_mode(output, width, height, refresh);
}
