mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-02 15:23:53 -06:00
input: Convert to new qapi union layout
We have two issues with our qapi union layout: 1) Even though the QMP wire format spells the tag 'type', the C code spells it 'kind', requiring some hacks in the generator. 2) The C struct uses an anonymous union, which places all tag values in the same namespace as all non-variant members. This leads to spurious collisions if a tag value matches a non-variant member's name. Make the conversion to the new layout for input-related code. Signed-off-by: Eric Blake <eblake@redhat.com> Message-Id: <1445898903-12082-20-git-send-email-eblake@redhat.com> [Commit message tweaked slightly] Signed-off-by: Markus Armbruster <armbru@redhat.com>
This commit is contained in:
parent
130257dc44
commit
568c73a478
9 changed files with 125 additions and 123 deletions
|
@ -139,11 +139,11 @@ static int number_to_qcode[0x100];
|
|||
|
||||
int qemu_input_key_value_to_number(const KeyValue *value)
|
||||
{
|
||||
if (value->kind == KEY_VALUE_KIND_QCODE) {
|
||||
return qcode_to_number[value->qcode];
|
||||
if (value->type == KEY_VALUE_KIND_QCODE) {
|
||||
return qcode_to_number[value->u.qcode];
|
||||
} else {
|
||||
assert(value->kind == KEY_VALUE_KIND_NUMBER);
|
||||
return value->number;
|
||||
assert(value->type == KEY_VALUE_KIND_NUMBER);
|
||||
return value->u.number;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -166,11 +166,11 @@ int qemu_input_key_number_to_qcode(uint8_t nr)
|
|||
|
||||
int qemu_input_key_value_to_qcode(const KeyValue *value)
|
||||
{
|
||||
if (value->kind == KEY_VALUE_KIND_QCODE) {
|
||||
return value->qcode;
|
||||
if (value->type == KEY_VALUE_KIND_QCODE) {
|
||||
return value->u.qcode;
|
||||
} else {
|
||||
assert(value->kind == KEY_VALUE_KIND_NUMBER);
|
||||
return qemu_input_key_number_to_qcode(value->number);
|
||||
assert(value->type == KEY_VALUE_KIND_NUMBER);
|
||||
return qemu_input_key_number_to_qcode(value->u.number);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -180,8 +180,8 @@ int qemu_input_key_value_to_scancode(const KeyValue *value, bool down,
|
|||
int keycode = qemu_input_key_value_to_number(value);
|
||||
int count = 0;
|
||||
|
||||
if (value->kind == KEY_VALUE_KIND_QCODE &&
|
||||
value->qcode == Q_KEY_CODE_PAUSE) {
|
||||
if (value->type == KEY_VALUE_KIND_QCODE &&
|
||||
value->u.qcode == Q_KEY_CODE_PAUSE) {
|
||||
/* specific case */
|
||||
int v = down ? 0 : 0x80;
|
||||
codes[count++] = 0xe1;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue