<html><head></head><body>Hi,<br><br>T1 sets, say, A/R, which updates the window size. Then T2 does the same. Then T2 sends the A/R control to vout thread, then T1 sends the same.<br><br>-> window uses T2 A/R, display uses T1 A/R.<br><br><div class="gmail_quote">Le 13 juin 2019 19:15:20 GMT+08:00, Steve Lhomme <robux4@ycbcr.xyz> 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">On 2019-06-12 19:48, Rémi Denis-Courmont wrote:<br><blockquote class="gmail_quote" style="margin: 0pt 0pt 1ex 0.8ex; border-left: 1px solid #729fcf; padding-left: 1ex;">This fixes an ABBA race if two threads set the flag simultaneously.<br></blockquote><br>What is an ABBA race ?<br>Did you mean this ? <a href="https://en.wikipedia.org/wiki/ABA_problem">https://en.wikipedia.org/wiki/ABA_problem</a><br><br><blockquote class="gmail_quote" style="margin: 0pt 0pt 1ex 0.8ex; border-left: 1px solid #729fcf; padding-left: 1ex;"><hr>  src/video_output/control.h      |  1 -<br>  src/video_output/video_output.c | 12 +++++-------<br>  2 files changed, 5 insertions(+), 8 deletions(-)<br><br>diff --git a/src/video_output/control.h b/src/video_output/control.h<br>index b189b6478a..a384afa2c6 100644<br>--- a/src/video_output/control.h<br>+++ b/src/video_output/control.h<br>@@ -32,7 +32,6 @@ enum {<br>  <br>      VOUT_CONTROL_MOUSE_STATE,           /* vlc_mouse_t */<br>      VOUT_CONTROL_DISPLAY_SIZE,          /* window */<br>-    VOUT_CONTROL_DISPLAY_FILLED,        /* bool */<br>      VOUT_CONTROL_ZOOM,                  /* pair */<br>  <br>      VOUT_CONTROL_ASPECT_RATIO,          /* pair */<br>diff --git a/src/video_output/video_output.c b/src/video_output/video_output.c<br>index ca9831e086..af2c0ecf8d 100644<br>--- a/src/video_output/video_output.c<br>+++ b/src/video_output/video_output.c<br>@@ -433,10 +433,13 @@ void vout_ChangeDisplayFilled(vout_thread_t *vout, bool is_filled)<br>      vlc_mutex_lock(&sys->window_lock);<br>      sys->display_cfg.is_display_filled = is_filled;<br>      /* no window size update here */<br>+<br>+    vlc_mutex_lock(&sys->display_lock);<br>      vlc_mutex_unlock(&sys->window_lock);<br></blockquote><br>That looks like the kind of thing that may end up in a deadlock if not <br>done consistently.<br><br><blockquote class="gmail_quote" style="margin: 0pt 0pt 1ex 0.8ex; border-left: 1px solid #729fcf; padding-left: 1ex;">-    vout_control_PushBool(&vout->p->control, VOUT_CONTROL_DISPLAY_FILLED,<br>-                          is_filled);<br>+    if (sys->display != NULL)<br>+        vout_SetDisplayFilled(sys->display, is_filled);<br>+    vlc_mutex_unlock(&sys->display_lock);<br>  }<br>  <br>  void vout_ChangeZoom(vout_thread_t *vout, unsigned num, unsigned den)<br>@@ -1573,11 +1576,6 @@ static void ThreadControl(vout_thread_t *vout, vout_control_cmd_t cmd)<br>                               cmd.window.width, cmd.window.height);<br>          vlc_mutex_unlock(&vout->p->display_lock);<br>          break;<br>-    case VOUT_CONTROL_DISPLAY_FILLED:<br>-        vlc_mutex_lock(&vout->p->display_lock);<br>-        vout_SetDisplayFilled(vout->p->display, cmd.boolean);<br>-        vlc_mutex_unlock(&vout->p->display_lock);<br>-        break;<br>      case VOUT_CONTROL_ZOOM:<br>          vlc_mutex_lock(&vout->p->display_lock);<br>          vout_SetDisplayZoom(vout->p->display, cmd.pair.a, cmd.pair.b);<br>-- <br>2.20.1<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><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>