diff options
author | Fabien Dessenne <fabien.dessenne@st.com> | 2016-12-08 10:22:23 +0100 |
---|---|---|
committer | Nicolas Dufresne <nicolas.dufresne@collabora.com> | 2017-01-02 19:53:27 -0500 |
commit | e2fba4003863edb39ecd779204818497bbddb652 (patch) | |
tree | 2d73b5251c7630f8115f3728d259bb3683efb436 /ext | |
parent | 8f674a363967212c23642c4cc53016b6e3a6b48c (diff) | |
download | gstreamer-plugins-bad-e2fba4003863edb39ecd779204818497bbddb652.tar.gz |
waylandsink: fix display re-connection (redraw pending)
Reset redraw_pending at display disconnection, so we can re-connect
later from a clean state (avoid endless buffer drops).
Add a log to inform of dropped buffers.
https://bugzilla.gnome.org/show_bug.cgi?id=775791
Diffstat (limited to 'ext')
-rw-r--r-- | ext/wayland/gstwaylandsink.c | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/ext/wayland/gstwaylandsink.c b/ext/wayland/gstwaylandsink.c index d0efa29cb..1da0d7df7 100644 --- a/ext/wayland/gstwaylandsink.c +++ b/ext/wayland/gstwaylandsink.c @@ -349,6 +349,9 @@ gst_wayland_sink_change_state (GstElement * element, GstStateChange transition) */ if (sink->display && !sink->window) { /* -> the window was toplevel */ g_clear_object (&sink->display); + g_mutex_lock (&sink->render_lock); + sink->redraw_pending = FALSE; + g_mutex_unlock (&sink->render_lock); } g_mutex_unlock (&sink->display_lock); g_clear_object (&sink->pool); @@ -617,8 +620,10 @@ gst_wayland_sink_show_frame (GstVideoSink * vsink, GstBuffer * buffer) } /* drop buffers until we get a frame callback */ - if (sink->redraw_pending) + if (sink->redraw_pending) { + GST_LOG_OBJECT (sink, "buffer %p dropped (redraw pending)", buffer); goto done; + } /* make sure that the application has called set_render_rectangle() */ if (G_UNLIKELY (sink->window->render_rectangle.w == 0)) |