[Bug 740803] waylandsink: Double-check the frame callback before dropping frames

GStreamer (GNOME Bugzilla) bugzilla at gnome.org
Mon Sep 26 14:20:02 UTC 2016


https://bugzilla.gnome.org/show_bug.cgi?id=740803

Nicolas Dufresne (stormer) <nicolas at ndufresne.ca> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
 Attachment #291625|none                        |needs-work
             status|                            |

--- Comment #4 from Nicolas Dufresne (stormer) <nicolas at ndufresne.ca> ---
Review of attachment 291625:
 --> (https://bugzilla.gnome.org/review?bug=740803&attachment=291625)

::: ext/wayland/gstwaylandsink.c
@@ +604,3 @@
+  redraw_flag = g_atomic_int_get (&sink->redraw_pending);
+  while (redraw_flag == TRUE && retry > 0) {
+    wl_display_roundtrip (sink->display->display);

wl_display_roundtrip_queue()

@@ +605,3 @@
+  while (redraw_flag == TRUE && retry > 0) {
+    wl_display_roundtrip (sink->display->display);
+    redraw_flag = g_atomic_int_get (&sink->redraw_pending);

This is no longer an atomic op, it's protected by the render_lock now. That
basically means, you'll get a deadlock. You need to drop the render lock before
calling wl_display_roundtrip_queue().

@@ +606,3 @@
+    wl_display_roundtrip (sink->display->display);
+    redraw_flag = g_atomic_int_get (&sink->redraw_pending);
+    retry--;

If retry is 1, why do you keep this code ?

-- 
You are receiving this mail because:
You are the QA Contact for the bug.
You are the assignee for the bug.


More information about the gstreamer-bugs mailing list