Thread (1 message) 1 message, 1 author, 2014-03-02

Fwd: [PATCH] input: ff-memless: don't schedule already playing effect to play again

From: Elias Vanderstuyft <hidden>
Date: 2014-03-02 13:36:44
Also in: lkml

---------- Forwarded message ----------
From: Michal Malý <redacted>
Date: Sun, Mar 2, 2014 at 2:29 PM
Subject: Re: [PATCH] input: ff-memless: don't schedule already playing
effect to play again
To: Elias Vanderstuyft <redacted>


On Sunday 02 of March 2014 14:17:58 you wrote:
On Sun, Mar 2, 2014 at 12:35 PM, Felix Rueegg
[off-list ref] wrote:
quoted
When an effect with zero replay length, zero replay delay
and zero envelope attack length is uploaded, it is played and then
scheduled to play again one timer tick later. This triggers a
warning
quoted
(URB submitted while active) in combination with the xpad driver.

Skipping the rescheduling of this effect fixes the issue.

Signed-off-by: Felix Rueegg <redacted>
---

 drivers/input/ff-memless.c | 7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)
diff --git a/drivers/input/ff-memless.c b/drivers/input/ff-memless.c
index 74c0d8c..2e06948 100644
--- a/drivers/input/ff-memless.c
+++ b/drivers/input/ff-memless.c
@@ -139,10 +139,13 @@ static void ml_schedule_timer(struct
ml_device *ml)
quoted
                if (!test_bit(FF_EFFECT_STARTED, &state->flags))

                        continue;

-               if (test_bit(FF_EFFECT_PLAYING, &state->flags))
+               if (test_bit(FF_EFFECT_PLAYING, &state->flags)) {

                        next_at = calculate_next_time(state);

-               else
+                       if (next_at == now)
+                               continue;
+               } else {

                        next_at = state->play_at;

+               }

                if (time_before_eq(now, next_at) &&

                    (++events == 1 || time_before(next_at, earliest)))

--
1.9.0

--
@Michal: Is ff-memless-next also affected by this problem?

Elias
I hope it's not, see mlnx_get_envelope_update_time(), this part in
particular:

        /* Prevent the effect from being started twice */
        if (mlnxeff->begin_at == now && mlnx_is_playing(mlnxeff))
                return now - 1;

        return mlnxeff->begin_at;

Michal
--
To unsubscribe from this list: send the line "unsubscribe linux-input" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help