Maarten Lankhorst : winegstreamer: Fix deadlock when changing state.

Alexandre Julliard julliard at winehq.org
Fri Nov 12 11:22:35 CST 2010


Module: wine
Branch: master
Commit: 096da45036959e57ae3aa5b0de0c06f69c651788
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=096da45036959e57ae3aa5b0de0c06f69c651788

Author: Maarten Lankhorst <m.b.lankhorst at gmail.com>
Date:   Thu Nov 11 23:22:59 2010 +0100

winegstreamer: Fix deadlock when changing state.

Leaving the lock is legal and required here since gstreamer has its
own locking in place. gst_pad_push could otherwise deadlock.

---

 dlls/winegstreamer/gsttffilter.c |    2 ++
 1 files changed, 2 insertions(+), 0 deletions(-)

diff --git a/dlls/winegstreamer/gsttffilter.c b/dlls/winegstreamer/gsttffilter.c
index a304cc1..912439e 100644
--- a/dlls/winegstreamer/gsttffilter.c
+++ b/dlls/winegstreamer/gsttffilter.c
@@ -267,7 +267,9 @@ static HRESULT WINAPI Gstreamer_transform_ProcessEnd(TransformFilter *iface) {
     GstTfImpl *This = (GstTfImpl*)iface;
     int ret;
 
+    LeaveCriticalSection(&This->tf.filter.csFilter);
     ret = gst_element_set_state(This->filter, GST_STATE_READY);
+    EnterCriticalSection(&This->tf.filter.csFilter);
     TRACE("Returned: %i\n", ret);
     return S_OK;
 }




More information about the wine-cvs mailing list