diff options
Diffstat (limited to 'gst/rtpmanager/rtpjitterbuffer.c')
-rw-r--r-- | gst/rtpmanager/rtpjitterbuffer.c | 14 |
1 files changed, 13 insertions, 1 deletions
diff --git a/gst/rtpmanager/rtpjitterbuffer.c b/gst/rtpmanager/rtpjitterbuffer.c index f694850d9..5f3b18cdb 100644 --- a/gst/rtpmanager/rtpjitterbuffer.c +++ b/gst/rtpmanager/rtpjitterbuffer.c @@ -115,7 +115,10 @@ rtp_jitter_buffer_finalize (GObject * object) /* We cannot use g_queue_clear() as it would pass the wrong size to * g_slice_free() which may lead to data corruption in the slice allocator. */ - rtp_jitter_buffer_flush (jbuf, NULL, NULL); + if (jbuf->item_free_func != NULL) + rtp_jitter_buffer_flush (jbuf, jbuf->item_free_func, NULL); + else if (jbuf->packets.head != NULL) + g_warning ("Leaking RTP jitterbuffer items!"); g_mutex_clear (&jbuf->clock_lock); @@ -139,6 +142,15 @@ rtp_jitter_buffer_new (void) return jbuf; } +void +rtp_jitter_buffer_set_item_free_func (RTPJitterBuffer * jbuf, GFunc free_func) +{ + g_return_if_fail (jbuf != NULL); + g_return_if_fail (free_func != NULL); + + jbuf->item_free_func = free_func; +} + /** * rtp_jitter_buffer_get_mode: * @jbuf: an #RTPJitterBuffer |