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:
parent
77ae0d8e40
commit
1950f46291
|
@ -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;
|
||||
|
||||
|
|
|
@ -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;
|
||||
};
|
||||
|
|
Loading…
Reference in New Issue