Fix: output rotation checks with WAYLAND

Only 90 & 270 degree transforms were accounted for.
Check for 90 degree rotation using a flag to include
flipped & rotated output transform.
This commit is contained in:
Campbell Barton
2025-05-08 12:11:39 +00:00
parent 702a7a0ba3
commit f7dc522834

View File

@@ -6396,7 +6396,7 @@ static void output_handle_done(void *data, wl_output * /*wl_output*/)
GWL_Output *output = static_cast<GWL_Output *>(data);
int32_t size_native[2] = {UNPACK2(output->size_native)};
if (ELEM(output->transform, WL_OUTPUT_TRANSFORM_90, WL_OUTPUT_TRANSFORM_270)) {
if (output->transform & WL_OUTPUT_TRANSFORM_90) {
std::swap(size_native[0], size_native[1]);
}
@@ -8320,7 +8320,7 @@ void GHOST_SystemWayland::getMainDisplayDimensions(uint32_t &width, uint32_t &he
/* We assume first output as main. */
const GWL_Output *output = display_->outputs[0];
int32_t size_native[2] = {UNPACK2(output->size_native)};
if (ELEM(output->transform, WL_OUTPUT_TRANSFORM_90, WL_OUTPUT_TRANSFORM_270)) {
if (output->transform & WL_OUTPUT_TRANSFORM_90) {
std::swap(size_native[0], size_native[1]);
}
width = uint32_t(size_native[0]);
@@ -8344,7 +8344,7 @@ void GHOST_SystemWayland::getAllDisplayDimensions(uint32_t &width, uint32_t &hei
xy[0] = output->position_logical[0];
xy[1] = output->position_logical[1];
}
if (ELEM(output->transform, WL_OUTPUT_TRANSFORM_90, WL_OUTPUT_TRANSFORM_270)) {
if (output->transform & WL_OUTPUT_TRANSFORM_90) {
std::swap(size_native[0], size_native[1]);
}
xy_min[0] = std::min(xy_min[0], xy[0]);