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:
@@ -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]);
|
||||
|
||||
Reference in New Issue
Block a user