forked from Minki/linux
HID: wacom: Short-circuit processing of touch when it is disabled
Avoid doing unnecessary work when touch is disabled by detecting this condition and returning early. Note that the probe process sends GET FEATURE requests to discover e.g. HID_DG_CONTACTMAX, so we can't start ignoring touch reports until probe finishes. Signed-off-by: Ping Cheng <ping.cheng@wacom.com> Signed-off-by: Jason Gerecke <jason.gerecke@wacom.com> Signed-off-by: Jiri Kosina <jkosina@suse.cz>
This commit is contained in:
parent
dc9dc864f3
commit
5bed012886
@ -2797,6 +2797,7 @@ static int wacom_probe(struct hid_device *hdev,
|
||||
error);
|
||||
}
|
||||
|
||||
wacom_wac->probe_complete = true;
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -2584,6 +2584,12 @@ static void wacom_wac_finger_event(struct hid_device *hdev,
|
||||
unsigned equivalent_usage = wacom_equivalent_usage(usage->hid);
|
||||
struct wacom_features *features = &wacom->wacom_wac.features;
|
||||
|
||||
/* don't process touch events when touch is off */
|
||||
if (wacom_wac->probe_complete &&
|
||||
!wacom_wac->shared->is_touch_on &&
|
||||
!wacom_wac->shared->touch_down)
|
||||
return;
|
||||
|
||||
if (wacom_wac->is_invalid_bt_frame)
|
||||
return;
|
||||
|
||||
@ -2633,6 +2639,12 @@ static void wacom_wac_finger_pre_report(struct hid_device *hdev,
|
||||
struct hid_data* hid_data = &wacom_wac->hid_data;
|
||||
int i;
|
||||
|
||||
/* don't process touch events when touch is off */
|
||||
if (wacom_wac->probe_complete &&
|
||||
!wacom_wac->shared->is_touch_on &&
|
||||
!wacom_wac->shared->touch_down)
|
||||
return;
|
||||
|
||||
wacom_wac->is_invalid_bt_frame = false;
|
||||
|
||||
for (i = 0; i < report->maxfield; i++) {
|
||||
|
@ -337,6 +337,7 @@ struct wacom_wac {
|
||||
int tool[2];
|
||||
int id[2];
|
||||
__u64 serial[2];
|
||||
bool probe_complete;
|
||||
bool reporting_data;
|
||||
struct wacom_features features;
|
||||
struct wacom_shared *shared;
|
||||
|
Loading…
Reference in New Issue
Block a user