mirror of
https://gitlab.freedesktop.org/wlroots/wlroots.git
synced 2026-04-14 08:22:25 -04:00
wlr_output: Make wlr_output_transformed_resolution take a state
This commit is contained in:
parent
f59706ecc0
commit
c3b5e710f4
5 changed files with 21 additions and 15 deletions
|
|
@ -1179,7 +1179,7 @@ static bool drm_connector_move_cursor(struct wlr_output *output,
|
|||
struct wlr_box box = { .x = x, .y = y };
|
||||
|
||||
int width, height;
|
||||
wlr_output_transformed_resolution(output, &width, &height);
|
||||
wlr_output_transformed_resolution(output, NULL, &width, &height);
|
||||
|
||||
enum wl_output_transform transform =
|
||||
wlr_output_transform_invert(output->transform);
|
||||
|
|
|
|||
|
|
@ -339,7 +339,7 @@ void wlr_output_destroy(struct wlr_output *output);
|
|||
* Computes the transformed output resolution.
|
||||
*/
|
||||
void wlr_output_transformed_resolution(struct wlr_output *output,
|
||||
int *width, int *height);
|
||||
const struct wlr_output_state *state, int *width, int *height);
|
||||
/**
|
||||
* Computes the transformed and scaled output resolution.
|
||||
*/
|
||||
|
|
|
|||
|
|
@ -89,8 +89,9 @@ static void output_cursor_get_box(struct wlr_output_cursor *cursor,
|
|||
|
||||
void wlr_output_add_software_cursors_to_render_pass(struct wlr_output *output,
|
||||
struct wlr_render_pass *render_pass, const pixman_region32_t *damage) {
|
||||
// TODO: pass output state from caller
|
||||
int width, height;
|
||||
wlr_output_transformed_resolution(output, &width, &height);
|
||||
wlr_output_transformed_resolution(output, NULL, &width, &height);
|
||||
|
||||
struct wlr_output_cursor *cursor;
|
||||
wl_list_for_each(cursor, &output->cursors, link) {
|
||||
|
|
@ -158,7 +159,7 @@ static void output_cursor_reset(struct wlr_output_cursor *cursor) {
|
|||
static void output_cursor_update_visible(struct wlr_output_cursor *cursor) {
|
||||
struct wlr_box output_box;
|
||||
output_box.x = output_box.y = 0;
|
||||
wlr_output_transformed_resolution(cursor->output, &output_box.width,
|
||||
wlr_output_transformed_resolution(cursor->output, NULL, &output_box.width,
|
||||
&output_box.height);
|
||||
|
||||
struct wlr_box cursor_box;
|
||||
|
|
|
|||
|
|
@ -441,19 +441,24 @@ void wlr_output_destroy(struct wlr_output *output) {
|
|||
}
|
||||
|
||||
void wlr_output_transformed_resolution(struct wlr_output *output,
|
||||
int *width, int *height) {
|
||||
if (output->transform % 2 == 0) {
|
||||
*width = output->width;
|
||||
*height = output->height;
|
||||
} else {
|
||||
*width = output->height;
|
||||
*height = output->width;
|
||||
const struct wlr_output_state *state, int *width, int *height) {
|
||||
output_pending_resolution(output, state, width, height);
|
||||
|
||||
enum wl_output_transform transform = output->transform;
|
||||
if (state && state->committed & WLR_OUTPUT_STATE_TRANSFORM) {
|
||||
transform = state->transform;
|
||||
}
|
||||
|
||||
if (transform % 2 != 0) {
|
||||
int tmp = *width;
|
||||
*width = *height;
|
||||
*height = tmp;
|
||||
}
|
||||
}
|
||||
|
||||
void wlr_output_effective_resolution(struct wlr_output *output,
|
||||
int *width, int *height) {
|
||||
wlr_output_transformed_resolution(output, width, height);
|
||||
wlr_output_transformed_resolution(output, NULL, width, height);
|
||||
*width /= output->scale;
|
||||
*height /= output->scale;
|
||||
}
|
||||
|
|
@ -476,7 +481,7 @@ struct wlr_output_mode *wlr_output_preferred_mode(struct wlr_output *output) {
|
|||
|
||||
void output_pending_resolution(struct wlr_output *output,
|
||||
const struct wlr_output_state *state, int *width, int *height) {
|
||||
if (state->committed & WLR_OUTPUT_STATE_MODE) {
|
||||
if (state && state->committed & WLR_OUTPUT_STATE_MODE) {
|
||||
switch (state->mode_type) {
|
||||
case WLR_OUTPUT_STATE_MODE_FIXED:
|
||||
*width = state->mode->width;
|
||||
|
|
|
|||
|
|
@ -339,7 +339,7 @@ static void logical_to_buffer_coords(pixman_region32_t *damage, const struct ren
|
|||
|
||||
static void output_to_buffer_coords(pixman_region32_t *damage, struct wlr_output *output) {
|
||||
int width, height;
|
||||
wlr_output_transformed_resolution(output, &width, &height);
|
||||
wlr_output_transformed_resolution(output, NULL, &width, &height);
|
||||
|
||||
wlr_region_transform(damage, damage,
|
||||
wlr_output_transform_invert(output->transform), width, height);
|
||||
|
|
@ -1579,7 +1579,7 @@ static void scene_output_handle_damage(struct wl_listener *listener, void *data)
|
|||
struct wlr_output_event_damage *event = data;
|
||||
|
||||
int width, height;
|
||||
wlr_output_transformed_resolution(output, &width, &height);
|
||||
wlr_output_transformed_resolution(output, NULL, &width, &height);
|
||||
|
||||
pixman_region32_t damage;
|
||||
pixman_region32_init(&damage);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue