Commit ccb51c2e authored by Jason Gerecke's avatar Jason Gerecke Committed by Jiri Kosina
Browse files

HID: wacom: Avoid sending empty sync events



Empty sync events clutter up logs and are a waste of CPU cycles. We can
avoid sending mt_sync events if touch is disabled or a specific slot is
unused. We can avoid sending full sync events if no events were generated.

Signed-off-by: default avatarPing Cheng <ping.cheng@wacom.com>
Signed-off-by: default avatarJason Gerecke <jason.gerecke@wacom.com>
Signed-off-by: default avatarJiri Kosina <jkosina@suse.cz>
parent 5bed0128
Loading
Loading
Loading
Loading
+14 −1
Original line number Diff line number Diff line
@@ -2551,8 +2551,17 @@ static void wacom_wac_finger_slot(struct wacom_wac *wacom_wac,
		int slot;

		slot = input_mt_get_slot_by_key(input, hid_data->id);
		if (slot < 0)
		if (slot < 0) {
			return;
		} else {
			struct input_mt_slot *ps = &input->mt->slots[slot];
			int mt_id = input_mt_get_value(ps, ABS_MT_TRACKING_ID);

			if (!prox && mt_id < 0) {
				// No data to send for this slot; short-circuit
				return;
			}
		}

		input_mt_slot(input, slot);
		input_mt_report_slot_state(input, MT_TOOL_FINGER, prox);
@@ -2696,6 +2705,10 @@ static void wacom_wac_finger_report(struct hid_device *hdev,
	struct input_dev *input = wacom_wac->touch_input;
	unsigned touch_max = wacom_wac->features.touch_max;

	/* if there was nothing to process, don't send an empty sync */
	if (wacom_wac->hid_data.num_expected == 0)
		return;

	/* If more packets of data are expected, give us a chance to
	 * process them rather than immediately syncing a partial
	 * update.