From 5095d47320c36e2346d41eb7e35dcbd215886557 Mon Sep 17 00:00:00 2001 From: Kimplul Date: Mon, 3 Nov 2025 20:17:32 +0200 Subject: minimize critical section in work handler + Effects handlers were being called in a locked context, which in this case happened to work due to how `hid_hw_request` is implemented. Now, only the selected state is updated and the heavy lifting of making the wheel aware of the requested changes is done after the critical section. --- src/hid-tmff2.h | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) (limited to 'src/hid-tmff2.h') diff --git a/src/hid-tmff2.h b/src/hid-tmff2.h index 666d249..f747f44 100644 --- a/src/hid-tmff2.h +++ b/src/hid-tmff2.h @@ -73,10 +73,10 @@ struct tmff2_device_entry { signed short supported_effects[FF_CNT]; /* obligatory callbacks */ - int (*play_effect)(void *data, struct tmff2_effect_state *state); - int (*upload_effect)(void *data, struct tmff2_effect_state *state); - int (*update_effect)(void *data, struct tmff2_effect_state *state); - int (*stop_effect)(void *data, struct tmff2_effect_state *state); + int (*play_effect)(void *data, const struct tmff2_effect_state *state); + int (*upload_effect)(void *data, const struct tmff2_effect_state *state); + int (*update_effect)(void *data, const struct tmff2_effect_state *state); + int (*stop_effect)(void *data, const struct tmff2_effect_state *state); int (*wheel_init)(struct tmff2_device_entry *tmff2, int open_mode); int (*wheel_destroy)(void *data); @@ -134,10 +134,10 @@ struct t300rs_device_entry { u8 *send_buffer; }; -int t300rs_play_effect(void *, struct tmff2_effect_state *); -int t300rs_upload_effect(void *, struct tmff2_effect_state *); -int t300rs_update_effect(void *, struct tmff2_effect_state *); -int t300rs_stop_effect(void *, struct tmff2_effect_state *); +int t300rs_play_effect(void *, const struct tmff2_effect_state *); +int t300rs_upload_effect(void *, const struct tmff2_effect_state *); +int t300rs_update_effect(void *, const struct tmff2_effect_state *); +int t300rs_stop_effect(void *, const struct tmff2_effect_state *); int t300rs_open(void *, int); int t300rs_close(void *, int); -- cgit v1.3