From: Marcelo Tosatti <mtosatti@redhat.com>
To: Eric Blake <eblake@redhat.com>
Cc: Amos Kong <akong@redhat.com>, Gerd Hoffmann <kraxel@redhat.com>,
qemu-devel <qemu-devel@nongnu.org>
Subject: Re: [Qemu-devel] [PATCH v3] add input-send-event command
Date: Mon, 29 Sep 2014 16:30:45 -0300 [thread overview]
Message-ID: <20140929193045.GA30934@amt.cnet> (raw)
In-Reply-To: <5429AF2C.7000001@redhat.com>
On Mon, Sep 29, 2014 at 01:12:44PM -0600, Eric Blake wrote:
> On 09/29/2014 12:56 PM, Marcelo Tosatti wrote:
> >
> > Which allows specification of absolute/relative,
> > up/down and console parameters.
> >
> > Suggested by Gerd Hoffman.
> >
> > Signed-off-by: Marcelo Tosatti <mtosatti@redhat.com>
> >
> > ---
> > qapi-schema.json | 17 +++++++++++++++
> > qmp-commands.hx | 63 +++++++++++++++++++++++++++++++++++++++++++++++++++++
> > ui/input.c | 31 ++++++++++++++++++++++++++
> > 3 files changed, 111 insertions(+)
> >
> > diff --git a/qapi-schema.json b/qapi-schema.json
> > index 4bfaf20..2e9e261 100644
> > --- a/qapi-schema.json
> > +++ b/qapi-schema.json
> > @@ -3233,6 +3233,23 @@
> > 'abs' : 'InputMoveEvent' } }
> >
> > ##
> > +# @input-send-event
> > +#
> > +# Send input event(s) to guest.
> > +#
> > +# @console: Which console to send event(s) to.
> > +#
> > +# @events: List of InputEvent union.
> > +#
> > +# Returns: Nothing on success.
> > +#
> > +# Since: 2.2
> > +#
> > +##
> > +{ 'command': 'input-send-event',
> > + 'data': { 'console':'int', 'events': [ 'InputEvent' ] } }
>
> 'console' is mandatory; I guess that's okay.
>
> Are we guaranteed that either all events are sent? Or is there a need to
Events can be dropped at hardware level if the event queue is full, for
example. Would have to modify individual drivers to return error codes,
i suppose. Gerd?
> worry about partial success (on a list of 3 events, the first gets sent,
> then some error is encountered on the second, and the third is not
> attempted)? Are the only errors due to something that can be detected
> up front (such as trying to send a mouse event to a console that has
> only keyboard support)?
>
> > +The consoles are visible in the qom tree, under
> > +/backend/console[$index]. They have a device link and head property, so
> > +its possible to map which console belongs to which device and display.
>
> s/its/it's/ (or 'it is')
>
> > +void qmp_input_send_event(int64_t console, InputEventList *events,
> > + Error **errp)
> > +{
> > + InputEventList *e;
> > + QemuConsole *con;
> > +
> > + con = qemu_console_lookup_by_index(console);
> > + if (!con) {
> > + error_setg(errp, "console %" PRId64 " not found", console);
> > + return;
> > + }
> > +
> > + if (!runstate_is_running() && !runstate_check(RUN_STATE_SUSPENDED)) {
> > + error_setg(errp, "VM not running");
> > + return;
> > + }
> > +
> > + for (e = events; e != NULL; e = e->next) {
> > + InputEvent *event = e->value;
> > +
> > + if (!qemu_input_find_handler(1 << event->kind, con)) {
> > + error_setg(errp, "Input handler not found for "
> > + "event type %s",
> > + InputEventKind_lookup[event->kind]);
> > + return;
>
>
> Ouch. You can return mid-loop. I'd be more comfortable with a two-pass
> algorithm (first pass ensures all list elements have a handler, second
> actually calls qemu_input_event_send) or with a return that gives an
> integer count of how many list items were processed.
Sure.
next prev parent reply other threads:[~2014-09-29 19:31 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-09-29 18:56 [Qemu-devel] [PATCH v3] add input-send-event command Marcelo Tosatti
2014-09-29 19:12 ` Eric Blake
2014-09-29 19:30 ` Marcelo Tosatti [this message]
2014-09-30 6:51 ` Gerd Hoffmann
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20140929193045.GA30934@amt.cnet \
--to=mtosatti@redhat.com \
--cc=akong@redhat.com \
--cc=eblake@redhat.com \
--cc=kraxel@redhat.com \
--cc=qemu-devel@nongnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).