output: introduce wlr_output_preferred_mode

This commit is contained in:
Simon Ser 2019-04-22 14:03:53 +03:00 committed by Drew DeVault
parent 95b22619e0
commit 8acbf449cc
2 changed files with 21 additions and 0 deletions

View file

@ -157,6 +157,11 @@ struct wlr_surface;
bool wlr_output_enable(struct wlr_output *output, bool enable); bool wlr_output_enable(struct wlr_output *output, bool enable);
void wlr_output_create_global(struct wlr_output *output); void wlr_output_create_global(struct wlr_output *output);
void wlr_output_destroy_global(struct wlr_output *output); void wlr_output_destroy_global(struct wlr_output *output);
/**
* Returns the preferred mode for this output. If the output doesn't support
* modes, returns NULL.
*/
struct wlr_output_mode *wlr_output_preferred_mode(struct wlr_output *output);
/** /**
* Sets the output mode. Enables the output if it's currently disabled. * Sets the output mode. Enables the output if it's currently disabled.
*/ */

View file

@ -344,6 +344,22 @@ void wlr_output_effective_resolution(struct wlr_output *output,
*height /= output->scale; *height /= output->scale;
} }
struct wlr_output_mode *wlr_output_preferred_mode(struct wlr_output *output) {
if (wl_list_empty(&output->modes)) {
return NULL;
}
struct wlr_output_mode *mode;
wl_list_for_each(mode, &output->modes, link) {
if (mode->preferred) {
return mode;
}
}
// No preferred mode, choose the last one
return mode;
}
bool wlr_output_make_current(struct wlr_output *output, int *buffer_age) { bool wlr_output_make_current(struct wlr_output *output, int *buffer_age) {
return output->impl->make_current(output, buffer_age); return output->impl->make_current(output, buffer_age);
} }