<html><head></head><body>You effectively reverted to the old broken logic from before the interrupt system, and disregarding documented API semantics, wrecking many weeks of work from me. Is what you did.<br><br><div class="gmail_quote">Le 24 octobre 2019 10:02:17 GMT+03:00, Thomas Guillem <thomas@gllm.fr> a écrit :<blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">
<pre class="k9mail"><br><br>On Wed, Oct 23, 2019, at 21:25, Remi Denis-Courmont wrote:<br><blockquote class="gmail_quote" style="margin: 0pt 0pt 1ex 0.8ex; border-left: 1px solid #729fcf; padding-left: 1ex;">Le 2019-10-22 17:47, Thomas Guillem a écrit :<br><blockquote class="gmail_quote" style="margin: 0pt 0pt 1ex 0.8ex; border-left: 1px solid #ad7fa8; padding-left: 1ex;">If a module is interrupted while waiting in a vlc_*_i11e*() function, <br>the i11e<br>function will return an error after restoring the interrupted state <br>(from<br>vlc_interrupt_finish()). This error will be carefully handled by the <br>module<br>that will close itself. If a second module is in the probe list, any <br>call to a<br>vlc_*_i11e*() function will act as not interrupted. This cause any <br>following<br>modules in the probe list to ignore this interrupted state.<br><br>To fix this issue, vlc_interrupt_finish() will now restore the <br>interrupted<br>state to the killed state.<hr> src/misc/interrupt.c | 2 +-<br> 1 file changed, 1 insertion(+), 1 deletion(-)<br><br>diff --git a/src/misc/interrupt.c b/src/misc/interrupt.c<br>index d2a04a72b3c..54810892fc1 100644<br>--- a/src/misc/interrupt.c<br>+++ b/src/misc/interrupt.c<br>@@ -151,7 +151,7 @@ static int vlc_interrupt_finish(vlc_interrupt_t <br>*ctx)<br>     if (ctx->interrupted)<br>     {<br>         ret = EINTR;<br>-        ctx->interrupted = false;<br>+        ctx->interrupted = atomic_load(&ctx->killed);<br></blockquote>This looks wrong. The interruption is only there to signal the change in <br>status. It's not supposed to fire again if the status is not changed.<br></blockquote><br>I sent this patch to open a discussion, I pushed the next day, maybe way too early, because vlc for iOS really need it in order to fix dialogs that are shown after the media is killed.<br><br>It's OK I can revert.<br><br>But I would like to discuss about the other way to fix the issue mentioned by this patch.<br>The only other fix I see if to abort the module probing (between 2 probes) if vlc_killed().<br><br>> <br><blockquote class="gmail_quote" style="margin: 0pt 0pt 1ex 0.8ex; border-left: 1px solid #729fcf; padding-left: 1ex;"><blockquote class="gmail_quote" style="margin: 0pt 0pt 1ex 0.8ex; border-left: 1px solid #ad7fa8; padding-left: 1ex;">}<br>vlc_mutex_unlock(&ctx->lock);<br>return ret;<br></blockquote>-- <br>Rémi Denis-Courmont<hr>vlc-devel mailing list<br>To unsubscribe or modify your subscription options:<br><a href="https://mailman.videolan.org/listinfo/vlc-devel">https://mailman.videolan.org/listinfo/vlc-devel</a><br></blockquote><hr>vlc-devel mailing list<br>To unsubscribe or modify your subscription options:<br><a href="https://mailman.videolan.org/listinfo/vlc-devel">https://mailman.videolan.org/listinfo/vlc-devel</a></pre></blockquote></div><br>-- <br>Envoyé de mon appareil Android avec Courriel K-9 Mail. Veuillez excuser ma brièveté.</body></html>