Message ID | 1372855818-15337-1-git-send-email-eugene.shatokhin@rosalab.ru |
---|---|
State | New |
Headers | show |
Am 03.07.2013 14:50, schrieb Eugene Shatokhin: > If absolute positions are used, 'mouse_button' command moved mouse > pointer to (0, 0) before generating a mouse button event. The event was > therefore generated at incorrect position. > > This problem is now fixed. > > Signed-off-by: Eugene Shatokhin <eugene.shatokhin@rosalab.ru> This patch has been rejected before. I had suggested a different solution but that was not fully accepted either and I haven't respun yet: http://lists.nongnu.org/archive/html/qemu-devel/2013-06/msg02506.html Andreas > --- > monitor.c | 14 +++++++++++++- > 1 file changed, 13 insertions(+), 1 deletion(-) > > diff --git a/monitor.c b/monitor.c > index 9be515c..d742942 100644 > --- a/monitor.c > +++ b/monitor.c > @@ -1267,6 +1267,9 @@ static void do_sum(Monitor *mon, const QDict *qdict) > monitor_printf(mon, "%05d\n", sum); > } > > +static int mouse_x; > +static int mouse_y; > +static int mouse_z; > static int mouse_button_state; > > static void do_mouse_move(Monitor *mon, const QDict *qdict) > @@ -1281,13 +1284,22 @@ static void do_mouse_move(Monitor *mon, const QDict *qdict) > if (dz_str) > dz = strtol(dz_str, NULL, 0); > kbd_mouse_event(dx, dy, dz, mouse_button_state); > + if (kbd_mouse_is_absolute()) { > + mouse_x = dx; > + mouse_y = dy; > + mouse_z = dz; > + } > } > > static void do_mouse_button(Monitor *mon, const QDict *qdict) > { > int button_state = qdict_get_int(qdict, "button_state"); > mouse_button_state = button_state; > - kbd_mouse_event(0, 0, 0, mouse_button_state); > + if (kbd_mouse_is_absolute()) { > + kbd_mouse_event(mouse_x, mouse_y, mouse_z, mouse_button_state); > + } else { > + kbd_mouse_event(0, 0, 0, mouse_button_state); > + } > } > > static void do_ioport_read(Monitor *mon, const QDict *qdict) >
Ah, I see it now. Thanks for the link, I should have found that thread earlier. Indeed, there can be several mice and keeping the position in global variables is a bad idea here. Will test your patches when you update them. Our automated testing system at ROSA Laboratory is quite similar to os-autoinst, so it is no surprise we ran into the same problem. Thanks again for the info. Regards, Eugene
Hi, On 07/03/2013 08:08 PM, Andreas Färber wrote: > Am 03.07.2013 14:50, schrieb Eugene Shatokhin: >> If absolute positions are used, 'mouse_button' command moved mouse >> pointer to (0, 0) before generating a mouse button event. The event was >> therefore generated at incorrect position. >> >> This problem is now fixed. >> >> Signed-off-by: Eugene Shatokhin <eugene.shatokhin@rosalab.ru> > > This patch has been rejected before. I had suggested a different > solution but that was not fully accepted either and I haven't respun yet: > http://lists.nongnu.org/archive/html/qemu-devel/2013-06/msg02506.html > Any news on this issue? I have just checked qemu 1.7.0 - the problem still exists there. Regards, Eugene
On Di, 2014-02-25 at 16:21 +0400, Eugene Shatokhin wrote: > Hi, > > On 07/03/2013 08:08 PM, Andreas Färber wrote: > > Am 03.07.2013 14:50, schrieb Eugene Shatokhin: > >> If absolute positions are used, 'mouse_button' command moved mouse > >> pointer to (0, 0) before generating a mouse button event. The event was > >> therefore generated at incorrect position. > >> > >> This problem is now fixed. > >> > >> Signed-off-by: Eugene Shatokhin <eugene.shatokhin@rosalab.ru> > > > > This patch has been rejected before. I had suggested a different > > solution but that was not fully accepted either and I haven't respun yet: > > http://lists.nongnu.org/archive/html/qemu-devel/2013-06/msg02506.html > > > > Any news on this issue? I have just checked qemu 1.7.0 - the problem > still exists there. I have an outstanding pull request for a input layer rewrite: http://www.kraxel.org/cgit/qemu/tag/?id=pull-input-2 Once it is merged it should be easy to fix as you can simply generate mouse button events without having to care about the position at all. cheers, Gerd
On 02/25/2014 04:43 PM, Gerd Hoffmann wrote: > On Di, 2014-02-25 at 16:21 +0400, Eugene Shatokhin wrote: >> Hi, >> >> On 07/03/2013 08:08 PM, Andreas Färber wrote: >>> Am 03.07.2013 14:50, schrieb Eugene Shatokhin: >>>> If absolute positions are used, 'mouse_button' command moved mouse >>>> pointer to (0, 0) before generating a mouse button event. The event was >>>> therefore generated at incorrect position. >>>> >>>> This problem is now fixed. >>>> >>>> Signed-off-by: Eugene Shatokhin <eugene.shatokhin@rosalab.ru> >>> >>> This patch has been rejected before. I had suggested a different >>> solution but that was not fully accepted either and I haven't respun yet: >>> http://lists.nongnu.org/archive/html/qemu-devel/2013-06/msg02506.html >>> >> >> Any news on this issue? I have just checked qemu 1.7.0 - the problem >> still exists there. > > I have an outstanding pull request for a input layer rewrite: > > http://www.kraxel.org/cgit/qemu/tag/?id=pull-input-2 > > Once it is merged it should be easy to fix as you can simply generate > mouse button events without having to care about the position at all. > > cheers, > Gerd > > > Good to know that, thanks! Regards, Eugene
diff --git a/monitor.c b/monitor.c index 9be515c..d742942 100644 --- a/monitor.c +++ b/monitor.c @@ -1267,6 +1267,9 @@ static void do_sum(Monitor *mon, const QDict *qdict) monitor_printf(mon, "%05d\n", sum); } +static int mouse_x; +static int mouse_y; +static int mouse_z; static int mouse_button_state; static void do_mouse_move(Monitor *mon, const QDict *qdict) @@ -1281,13 +1284,22 @@ static void do_mouse_move(Monitor *mon, const QDict *qdict) if (dz_str) dz = strtol(dz_str, NULL, 0); kbd_mouse_event(dx, dy, dz, mouse_button_state); + if (kbd_mouse_is_absolute()) { + mouse_x = dx; + mouse_y = dy; + mouse_z = dz; + } } static void do_mouse_button(Monitor *mon, const QDict *qdict) { int button_state = qdict_get_int(qdict, "button_state"); mouse_button_state = button_state; - kbd_mouse_event(0, 0, 0, mouse_button_state); + if (kbd_mouse_is_absolute()) { + kbd_mouse_event(mouse_x, mouse_y, mouse_z, mouse_button_state); + } else { + kbd_mouse_event(0, 0, 0, mouse_button_state); + } } static void do_ioport_read(Monitor *mon, const QDict *qdict)
If absolute positions are used, 'mouse_button' command moved mouse pointer to (0, 0) before generating a mouse button event. The event was therefore generated at incorrect position. This problem is now fixed. Signed-off-by: Eugene Shatokhin <eugene.shatokhin@rosalab.ru> --- monitor.c | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-)