[Spice-devel] [PATCH] vdagent-x11: reopen tablet on resolution change to register new resolution

Alon Levy alevy at redhat.com
Mon Oct 25 04:52:38 PDT 2010


On Mon, Oct 25, 2010 at 11:44:08AM +0200, Hans de Goede wrote:
> Ok,
> 
> On 10/25/2010 10:48 AM, Alon Levy wrote:
> >On Mon, Oct 25, 2010 at 09:30:02AM +0200, Hans de Goede wrote:
> >>Hi,
> >>
> >>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.
> >
> 
> Ack then. Note that the linux agent now has a non personal / private git repo here:
> ssh://jwrdegoede@git.freedesktop.org/git/spice/linux/vd_agent
> 
> Which does not yet show up in cgit for some reason (need to ping ajax about that).
> If you replace jwrdegoede by your freedesktop.org username you should be able
> to push the patch their yourself!

I'll push. btw, to fix your cgit issue: touch ~/repo/.git/git-daemon-export-ok

> 
> Also this repo has patches for image copy and paste support, so with this version
> you should be able to copy and paste images between a linux guest and a linux client.
> 
> Note you need spice-server from git (for some vdagent channel fixes,
> and this qemu patch:
> http://cgit.freedesktop.org/spice/qemu/commit/?h=bugfix.1&id=f3d7d80a52e71a35a5f603dcead181f9f9e9709c
> 
> Or your guest may end up hanging, when sending large amounts of data over
> the vdagent channel.
> 
> >Could it be that the messages are sent to a different window? or that X doesn't send
> >those messages to the originating process?
> 
> I've no idea :|
> 
> Regards,
> 
> Hans


More information about the Spice-devel mailing list