[Spice-devel] [PATCH] vdagent-x11: reopen tablet on resolution change to register new resolution
alevy at redhat.com
Mon Oct 25 01:48:06 PDT 2010
On Mon, Oct 25, 2010 at 09:30:02AM +0200, Hans de Goede wrote:
> On 10/24/2010 03:13 PM, Alon Levy wrote:
> >The tablet uinput device is closed and opened by vdagentd as a result of guest_xorg_res.
> >So far this message was only sent on startup of vdagent. Unless we resend it
> >uinput doesn't know of the changed resolution, and the mouse position in the guest is incorrect.
> > vdagent-x11.c | 3 +++
> > 1 files changed, 3 insertions(+), 0 deletions(-)
> >diff --git a/vdagent-x11.c b/vdagent-x11.c
> >index 00d1886..a8dadde 100644
> >--- a/vdagent-x11.c
> >+++ b/vdagent-x11.c
> >@@ -789,6 +789,9 @@ void vdagent_x11_set_monitor_config(struct vdagent_x11 *x11,
> > rotation, CurrentTime);
> > XRRFreeScreenConfigInfo(config);
> > XFlush(x11->display);
> >+ x11->width = sizes[best].width;
> >+ x11->height = sizes[best].height;
> >+ vdagent_x11_send_daemon_guest_xorg_res(x11);
> > }
> > void vdagent_x11_clipboard_request(struct vdagent_x11 *x11, uint32_t type)
> Hmm, is this really necessary? I'm asking because we are watching for
> ConfigureNotify events on the root window and when we get those do
> a vdagent_x11_send_daemon_guest_xorg_res(x11). I have not tested the scenario you
> are referring to here. But if one changes the guest resolution through
> for example system->preferences->monitor, vdagent will get a ConfigureNotify event
> and based on that do a vdagent_x11_send_daemon_guest_xorg_res(x11). I would
> expect the same to happen if the agent itself changes the resolution.
Yes, I saw you are listening for those events, but for some reason they are not
triggered when the resolution is changed by the set_monitor_config function. I'm
sorry I didn't investigate further, I just checked to make sure I don't create any
endless feedback loop by seeing that xrandr works fine with my patch, and of course
with this patch changes that are triggered by the monitor_config message (i.e. from
the client side) are reflected.
Could it be that the messages are sent to a different window? or that X doesn't send
those messages to the originating process?
> Spice-devel mailing list
> Spice-devel at lists.freedesktop.org
More information about the Spice-devel