Skip to content

Commit

Permalink
HID: wacom: Short-circuit processing of touch when it is disabled
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
Jason Gerecke authored and Jiri Kosina committed Jul 28, 2021
1 parent dc9dc86 commit 5bed012
Show file tree
Hide file tree
Showing 3 changed files with 14 additions and 0 deletions.
1 change: 1 addition & 0 deletions drivers/hid/wacom_sys.c
Original file line number Diff line number Diff line change
Expand Up @@ -2797,6 +2797,7 @@ static int wacom_probe(struct hid_device *hdev,
error);
}

wacom_wac->probe_complete = true;
return 0;
}

Expand Down
12 changes: 12 additions & 0 deletions drivers/hid/wacom_wac.c
Original file line number Diff line number Diff line change
Expand Up @@ -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;

Expand Down Expand Up @@ -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++) {
Expand Down
1 change: 1 addition & 0 deletions drivers/hid/wacom_wac.h
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down

0 comments on commit 5bed012

Please sign in to comment.