Lines Matching refs:state

89 static unsigned long calculate_next_time(struct ml_effect_state *state)  in calculate_next_time()  argument
91 const struct ff_envelope *envelope = get_envelope(state->effect); in calculate_next_time()
95 attack_stop = state->play_at + in calculate_next_time()
97 if (time_before(state->adj_at, attack_stop)) in calculate_next_time()
98 return state->adj_at + in calculate_next_time()
102 if (state->effect->replay.length) { in calculate_next_time()
105 fade_start = state->stop_at - in calculate_next_time()
108 if (time_before(state->adj_at, fade_start)) in calculate_next_time()
112 next_fade = state->adj_at + in calculate_next_time()
114 if (time_before(next_fade, state->stop_at)) in calculate_next_time()
118 return state->stop_at; in calculate_next_time()
121 return state->play_at; in calculate_next_time()
126 struct ml_effect_state *state; in ml_schedule_timer() local
137 state = &ml->states[i]; in ml_schedule_timer()
139 if (!test_bit(FF_EFFECT_STARTED, &state->flags)) in ml_schedule_timer()
142 if (test_bit(FF_EFFECT_PLAYING, &state->flags)) in ml_schedule_timer()
143 next_at = calculate_next_time(state); in ml_schedule_timer()
145 next_at = state->play_at; in ml_schedule_timer()
164 static int apply_envelope(struct ml_effect_state *state, int value, in apply_envelope() argument
167 struct ff_effect *effect = state->effect; in apply_envelope()
176 state->play_at + msecs_to_jiffies(envelope->attack_length))) { in apply_envelope()
179 time_from_level = jiffies_to_msecs(now - state->play_at); in apply_envelope()
185 state->stop_at - msecs_to_jiffies(envelope->fade_length)) && in apply_envelope()
186 time_before(now, state->stop_at)) { in apply_envelope()
187 time_from_level = jiffies_to_msecs(state->stop_at - now); in apply_envelope()
256 struct ml_effect_state *state, in ml_combine_effects() argument
259 struct ff_effect *new = state->effect; in ml_combine_effects()
267 level = fixp_new16(apply_envelope(state, in ml_combine_effects()
307 i = apply_envelope(state, abs(new->u.periodic.magnitude), in ml_combine_effects()
343 struct ml_effect_state *state; in ml_get_combo_effect() local
353 state = &ml->states[i]; in ml_get_combo_effect()
354 effect = state->effect; in ml_get_combo_effect()
356 if (!test_bit(FF_EFFECT_STARTED, &state->flags)) in ml_get_combo_effect()
359 if (time_before(jiffies, state->play_at)) in ml_get_combo_effect()
376 if (__test_and_clear_bit(FF_EFFECT_ABORTING, &state->flags)) { in ml_get_combo_effect()
377 __clear_bit(FF_EFFECT_PLAYING, &state->flags); in ml_get_combo_effect()
378 __clear_bit(FF_EFFECT_STARTED, &state->flags); in ml_get_combo_effect()
380 time_after_eq(jiffies, state->stop_at)) { in ml_get_combo_effect()
382 __clear_bit(FF_EFFECT_PLAYING, &state->flags); in ml_get_combo_effect()
384 if (--state->count <= 0) { in ml_get_combo_effect()
385 __clear_bit(FF_EFFECT_STARTED, &state->flags); in ml_get_combo_effect()
387 state->play_at = jiffies + in ml_get_combo_effect()
389 state->stop_at = state->play_at + in ml_get_combo_effect()
393 __set_bit(FF_EFFECT_PLAYING, &state->flags); in ml_get_combo_effect()
394 state->adj_at = jiffies; in ml_get_combo_effect()
395 ml_combine_effects(combo_effect, state, ml->gain); in ml_get_combo_effect()
450 struct ml_effect_state *state = &ml->states[effect_id]; in ml_ff_playback() local
455 __set_bit(FF_EFFECT_STARTED, &state->flags); in ml_ff_playback()
456 state->count = value; in ml_ff_playback()
457 state->play_at = jiffies + in ml_ff_playback()
458 msecs_to_jiffies(state->effect->replay.delay); in ml_ff_playback()
459 state->stop_at = state->play_at + in ml_ff_playback()
460 msecs_to_jiffies(state->effect->replay.length); in ml_ff_playback()
461 state->adj_at = state->play_at; in ml_ff_playback()
466 if (test_bit(FF_EFFECT_PLAYING, &state->flags)) in ml_ff_playback()
467 __set_bit(FF_EFFECT_ABORTING, &state->flags); in ml_ff_playback()
469 __clear_bit(FF_EFFECT_STARTED, &state->flags); in ml_ff_playback()
481 struct ml_effect_state *state = &ml->states[effect->id]; in ml_ff_upload() local
485 if (test_bit(FF_EFFECT_STARTED, &state->flags)) { in ml_ff_upload()
486 __clear_bit(FF_EFFECT_PLAYING, &state->flags); in ml_ff_upload()
487 state->play_at = jiffies + in ml_ff_upload()
488 msecs_to_jiffies(state->effect->replay.delay); in ml_ff_upload()
489 state->stop_at = state->play_at + in ml_ff_upload()
490 msecs_to_jiffies(state->effect->replay.length); in ml_ff_upload()
491 state->adj_at = state->play_at; in ml_ff_upload()