[PATCH xserver] xwayland: don't use logical size for RRMode

Olivier Fourdan fourdan at gmail.com
Tue Jul 10 07:44:14 UTC 2018


Hi,

On Mon, 9 Jul 2018 at 18:50, Simon Ser <contact at emersion.fr> wrote:
>
> On July 9, 2018 3:42 PM, Olivier Fourdan <fourdan at gmail.com> wrote:
> > So, can you please elaborate exactly what this is supposed to fix and
> > how to reproduce the issue?
>
> I've configured my compositor with a 90 degree output rotation. Here are the
> values sent by my compositor, as received by xwayland:
>
> output_handle_mode 1600 850
> xdg_output_handle_logical_size 850 1600
>
> As far as I can tell this is correct.
>
> Without this patch, if I open for instance Firefox, pointer events are correctly
> handled if the pointer is in the top half of the screen, but when the pointer
> moves in the bottom part the Y axis coordinate gets stuck. Here's xrandr's
> output:
>
> Screen 0: minimum 320 x 200, current 850 x 1600, maximum 8192 x 8192
> XWAYLAND0 connected 1600x848+0+0 left (normal left inverted right x axis y axis) 0mm x 0mm
>    848x1600      59.95*+
>
> This patch fixes this bug. Here's xrandr's output:
>
> Screen 0: minimum 320 x 200, current 850 x 1600, maximum 8192 x 8192
> XWAYLAND0 connected 850x1600+0+0 left (normal left inverted right x axis y axis) 0mm x 0mm
>    1600x850      59.92*+
>
> Notice the difference between the logical geometry (850x1600+0+0) and the
> current mode (1600x850).
>
> I just noticed this patch breaks HiDPI outputs (xrandr advertises a
> 850x1600+0+0 logical geometry). We might want to use the logical size for
> RRMode, but compensate transformations. What do you think?

Yeap, that's what I meant, xdg-output would advertise the logical size
(i.e. appropriately scaled), so we want to pass RR the values provided
by xdg-output here, not those from wl_output.

Basically, we do not need to keep or reuse the mode_width/height as
with your initial patch, we just need to compensate the rotation as
you said (as for the rationale behind this bug, mutter doesn't use
rotations, so I didn't notice it).

[unrelated, as an aside, it looks like in your example, the compositor
might not be sending the geometry, so we end up with 0 in the physical
size]

Cheers,
Olivier


More information about the xorg-devel mailing list