diff --git a/gst-libs/gst/audio/gstaudiobasesink.c b/gst-libs/gst/audio/gstaudiobasesink.c
index 26f7134..0451a33 100644
--- a/gst-libs/gst/audio/gstaudiobasesink.c
+++ b/gst-libs/gst/audio/gstaudiobasesink.c
@@ -1471,7 +1471,14 @@ gst_audio_base_sink_sync_latency (GstBaseSink * bsink, GstMiniObject * obj)
    * our internal clock should exactly have been the latency (== the running
    * time of the external clock) */
   etime = GST_ELEMENT_CAST (sink)->base_time + time;
+  
+  /* Release the sink object lock before trying to get time on the Sink. The
+   * get_time call may need to acquire the pulse audio mainloop lock. This can 
+   * cause a deadlock with the Pulse Audio main loop thread which in turn has 
+   * acquired its mainloop lock and now needs to acquire Object lock on the sink. */
+  GST_OBJECT_UNLOCK (sink);
   itime = gst_audio_clock_get_time (sink->provided_clock);
+  GST_OBJECT_LOCK (sink);
   itime = gst_audio_clock_adjust (sink->provided_clock, itime);
 
   if (status == GST_CLOCK_EARLY) {
