vlc | branch: master | Rémi Denis-Courmont <r...@remlab.net> | Sat May 19 
17:39:02 2018 +0300| [b0fcf457c326e74763ff4c1203fc6e2be3153ccf] | committer: 
Rémi Denis-Courmont

display: unroll picture buffer reset

If multiple events require resetting the picture pool, we are better
off resetting only once at the end.

This works because resetting the pool will not trigger any other
cascaded event within the vout display management loop.

> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=b0fcf457c326e74763ff4c1203fc6e2be3153ccf
---

 src/video_output/display.c | 26 ++++++++++----------------
 1 file changed, 10 insertions(+), 16 deletions(-)

diff --git a/src/video_output/display.c b/src/video_output/display.c
index 65a6c98893..b79d12b844 100644
--- a/src/video_output/display.c
+++ b/src/video_output/display.c
@@ -643,7 +643,6 @@ bool vout_ManageDisplay(vout_display_t *vd, bool 
allow_reset_pictures)
         SplitterManage(vd);
 
     bool fit_window = false;
-    bool reset_render = false;
     for (;;) {
 #if defined(_WIN32) || defined(__OS2__)
         vlc_mutex_lock(&osys->lock);
@@ -657,10 +656,7 @@ bool vout_ManageDisplay(vout_display_t *vd, bool 
allow_reset_pictures)
         vlc_mutex_unlock(&osys->lock);
 #endif
 
-        bool reset_pictures = allow_reset_pictures
-            && atomic_exchange(&osys->reset_pictures, false);
-
-        if (!reset_pictures &&
+        if (
 #if defined(_WIN32) || defined(__OS2__)
             !ch_fullscreen &&
             !ch_wm_state &&
@@ -772,24 +768,22 @@ bool vout_ManageDisplay(vout_display_t *vd, bool 
allow_reset_pictures)
             osys->cfg.viewpoint = osys->viewpoint;
             osys->ch_viewpoint  = false;
         }
-
-        /* */
-        if (reset_pictures) {
-            if (vout_display_Control(vd, VOUT_DISPLAY_RESET_PICTURES)) {
-                /* FIXME what to do here ? */
-                msg_Err(vd, "Failed to reset pictures (probably fatal)");
-            }
-            reset_render = true;
-        }
     }
 
     if (fit_window)
         VoutDisplayFitWindow(vd, false);
 
-    if (reset_render)
+    if (allow_reset_pictures
+     && atomic_exchange(&osys->reset_pictures, false)) {
+        if (vout_display_Control(vd, VOUT_DISPLAY_RESET_PICTURES)) {
+            /* FIXME what to do here ? */
+            msg_Err(vd, "Failed to reset pictures (probably fatal)");
+        }
         VoutDisplayResetRender(vd);
+        return true;
+    }
 
-    return reset_render;
+    return false;
 }
 
 bool vout_AreDisplayPicturesInvalid(vout_display_t *vd)

_______________________________________________
vlc-commits mailing list
vlc-commits@videolan.org
https://mailman.videolan.org/listinfo/vlc-commits

Reply via email to