Hi, On Mon, 9 Jul 2018 at 09:17, Simon Ser <cont...@emersion.fr> wrote: > > The logical size is the size of the output in the global compositor > space. The mode width/height shouldn't be transformed and scaled. > > This fixes issues with pointer input on transformed outputs. > > Signed-Off-By: Simon Ser <cont...@emersion.fr> > --- > hw/xwayland/xwayland-output.c | 9 ++++++--- > hw/xwayland/xwayland.h | 3 ++- > 2 files changed, 8 insertions(+), 4 deletions(-) > > diff --git a/hw/xwayland/xwayland-output.c b/hw/xwayland/xwayland-output.c > index 379062549..44fd5c26a 100644 > --- a/hw/xwayland/xwayland-output.c > +++ b/hw/xwayland/xwayland-output.c > @@ -113,12 +113,15 @@ output_handle_mode(void *data, struct wl_output > *wl_output, uint32_t flags, > if (!(flags & WL_OUTPUT_MODE_CURRENT)) > return; > > + xwl_output->mode_width = width; > + xwl_output->mode_height = height; > + xwl_output->mode_refresh = refresh;
So, with that patch mode_width/height reflects the wl_output size. > + > /* Apply the change from wl_output only if xdg-output is not supported */ > if (!xwl_output->xdg_output) { > xwl_output->width = width; > xwl_output->height = height; > } > - xwl_output->refresh = refresh; > } > > static inline void > @@ -224,8 +227,8 @@ apply_output_change(struct xwl_output *xwl_output) > /* xdg-output sends output size in compositor space. so already rotated > */ > need_rotate = (xwl_output->xdg_output == NULL); > > - randr_mode = xwayland_cvt(xwl_output->width, xwl_output->height, > - xwl_output->refresh / 1000.0, 0, 0); > + randr_mode = xwayland_cvt(xwl_output->mode_width, > xwl_output->mode_height, > + xwl_output->mode_refresh / 1000.0, 0, 0); And we'd advertise wl_ouput size as RR size? That's not how it's meant to work, we want RR to reflect the xdg-output (logical) size. > RROutputSetModes(xwl_output->randr_output, &randr_mode, 1, 1); > RRCrtcNotify(xwl_output->randr_crtc, randr_mode, > xwl_output->x, xwl_output->y, > diff --git a/hw/xwayland/xwayland.h b/hw/xwayland/xwayland.h > index d70ad54bf..66daf58de 100644 > --- a/hw/xwayland/xwayland.h > +++ b/hw/xwayland/xwayland.h > @@ -368,7 +368,8 @@ struct xwl_output { > struct xwl_screen *xwl_screen; > RROutputPtr randr_output; > RRCrtcPtr randr_crtc; > - int32_t x, y, width, height, refresh; > + int32_t x, y, width, height; > + int32_t mode_width, mode_height, mode_refresh; > Rotation rotation; > Bool wl_output_done; > Bool xdg_output_done; > -- > 2.18.0 So, can you please elaborate exactly what this is supposed to fix and how to reproduce the issue? Cheers, Olivier _______________________________________________ xorg-devel@lists.x.org: X.Org development Archives: http://lists.x.org/archives/xorg-devel Info: https://lists.x.org/mailman/listinfo/xorg-devel