--- gstreamer-org/libs/gst/base/gstbasesrc.c	2006-09-18 09:44:12.000000000 -0400
+++ gstreamer/libs/gst/base/gstbasesrc.c	2006-09-20 10:51:20.000000000 -0400
@@ -1870,6 +1870,11 @@
   } else {
     GST_DEBUG_OBJECT (basesrc, "Deactivating in push mode");
     res = gst_base_src_deactivate (basesrc, pad);
+     
+     /* Call this after deactivate to let the derived unlock function be called
+      * could otherwise deadlock */
+     if (!gst_base_src_stop (basesrc))
+      goto error_stop;
   }
   return res;
 
@@ -1885,6 +1890,11 @@
     GST_DEBUG_OBJECT (basesrc, "Failed to start in push mode");
     return FALSE;
   }
+error_stop:
+  {
+    GST_DEBUG_OBJECT (basesrc, "Failed to stop in push mode");
+    return FALSE;
+  }
 }
 
 static gboolean
