File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -523,9 +523,19 @@ static void pidff_set_effect_report(struct pidff_device *pidff,
523523 pidff_set_duration (& pidff -> set_effect [PID_DURATION ],
524524 effect -> replay .length );
525525
526- pidff -> set_effect [PID_TRIGGER_BUTTON ].value [0 ] = effect -> trigger .button ;
527- pidff_set_time (& pidff -> set_effect [PID_TRIGGER_REPEAT_INT ],
528- effect -> trigger .interval );
526+ /* Some games set this to random values that can be out of range */
527+ s32 trigger_button_max =
528+ pidff -> set_effect [PID_TRIGGER_BUTTON ].field -> logical_maximum ;
529+ if (effect -> trigger .button <= trigger_button_max ) {
530+ pidff -> set_effect [PID_TRIGGER_BUTTON ].value [0 ] =
531+ effect -> trigger .button ;
532+ pidff_set_time (& pidff -> set_effect [PID_TRIGGER_REPEAT_INT ],
533+ effect -> trigger .interval );
534+ } else {
535+ pidff -> set_effect [PID_TRIGGER_BUTTON ].value [0 ] = 0 ;
536+ pidff -> set_effect [PID_TRIGGER_REPEAT_INT ].value [0 ] = 0 ;
537+ }
538+
529539 pidff -> set_effect [PID_GAIN ].value [0 ] =
530540 pidff -> set_effect [PID_GAIN ].field -> logical_maximum ;
531541
You can’t perform that action at this time.
0 commit comments