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

Hans de Goede hdegoede at redhat.com
Mon Oct 25 02:44:08 PDT 2010


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!

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