projects
/
platform
/
upstream
/
gstreamer.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
| inline |
side by side
(parent:
b55d6c0
)
identity: Unblock condition variable on FLUSH_START
author
Sebastian Dröge
<sebastian@centricular.com>
Mon, 9 Mar 2020 18:27:58 +0000
(20:27 +0200)
committer
Sebastian Dröge
<sebastian@centricular.com>
Mon, 9 Mar 2020 18:27:58 +0000
(20:27 +0200)
... and immediately return FLUSHING from the streaming thread instead of
waiting potentially forever.
Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/issues/516
plugins/elements/gstidentity.c
patch
|
blob
|
history
diff --git
a/plugins/elements/gstidentity.c
b/plugins/elements/gstidentity.c
index
319f4e3
..
0c5f468
100644
(file)
--- a/
plugins/elements/gstidentity.c
+++ b/
plugins/elements/gstidentity.c
@@
-333,7
+333,7
@@
gst_identity_do_sync (GstIdentity * identity, GstClockTime running_time)
return GST_FLOW_FLUSHING;
}
- while (identity->blocked)
+ while (identity->blocked
&& !identity->flushing
)
g_cond_wait (&identity->blocked_cond, GST_OBJECT_GET_LOCK (identity));
if (identity->flushing) {
@@
-463,6
+463,7
@@
gst_identity_sink_event (GstBaseTransform * trans, GstEvent * event)
if (GST_EVENT_TYPE (event) == GST_EVENT_FLUSH_START) {
GST_OBJECT_LOCK (identity);
identity->flushing = TRUE;
+ g_cond_broadcast (&identity->blocked_cond);
if (identity->clock_id) {
GST_DEBUG_OBJECT (identity, "unlock clock wait");
gst_clock_id_unschedule (identity->clock_id);