HID: core: simplify active collection tracking

Manually tracking an active collection to set collection parents is not
necessary, we just have to look one step back into the collection stack
to find the correct parent.

Signed-off-by: Philipp Zabel <philipp.zabel@gmail.com>
Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net>
Signed-off-by: Benjamin Tissoires <benjamin.tissoires@redhat.com>
This commit is contained in:
Philipp Zabel 2019-01-14 08:19:22 +01:00 committed by Benjamin Tissoires
parent 77ae0d8e40
commit 1950f46291
2 changed files with 2 additions and 12 deletions

View File

@ -173,8 +173,8 @@ static int open_collection(struct hid_parser *parser, unsigned type)
collection->type = type;
collection->usage = usage;
collection->level = parser->collection_stack_ptr - 1;
collection->parent_idx = parser->active_collection_idx;
parser->active_collection_idx = collection_index;
collection->parent_idx = (collection->level == 0) ? -1 :
parser->collection_stack[collection->level - 1];
if (type == HID_COLLECTION_APPLICATION)
parser->device->maxapplication++;
@ -193,13 +193,6 @@ static int close_collection(struct hid_parser *parser)
return -EINVAL;
}
parser->collection_stack_ptr--;
if (parser->active_collection_idx != -1) {
struct hid_device *device = parser->device;
struct hid_collection *c;
c = &device->collection[parser->active_collection_idx];
parser->active_collection_idx = c->parent_idx;
}
return 0;
}
@ -825,7 +818,6 @@ static int hid_scan_report(struct hid_device *hid)
return -ENOMEM;
parser->device = hid;
parser->active_collection_idx = -1;
hid->group = HID_GROUP_GENERIC;
/*
@ -1179,7 +1171,6 @@ int hid_open_report(struct hid_device *device)
}
parser->device = device;
parser->active_collection_idx = -1;
end = start + size;

View File

@ -658,7 +658,6 @@ struct hid_parser {
unsigned int *collection_stack;
unsigned int collection_stack_ptr;
unsigned int collection_stack_size;
int active_collection_idx; /* device->collection */
struct hid_device *device;
unsigned int scan_flags;
};