mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-09-29 23:32:33 +00:00
adapter: automatically unmap on clearing
When _clear gets called between _map and _unmap, buffers will be unreffed. If the adapter was mapped, memory leaks may occur. While calling _clear between _map and _unmap does not seem like such a great idea, this is possible in the audio encoder base class, as _clear may be called in _finish_frame. Since the audio encoder relies on flushing to keep track of timestamps, delaying flushing till after handle_frame seems dangerous. So, we unmap on clear, as the next unmap will do nothing. This makes _clear safe to call between _map and _unmap, while avoiding leaking the mapped buffer. https://bugzilla.gnome.org/show_bug.cgi?id=664133
This commit is contained in:
parent
247842eaa9
commit
12757e604a
1 changed files with 4 additions and 0 deletions
|
@ -216,6 +216,10 @@ gst_adapter_clear (GstAdapter * adapter)
|
|||
{
|
||||
g_return_if_fail (GST_IS_ADAPTER (adapter));
|
||||
|
||||
if (adapter->priv->cdata) {
|
||||
gst_adapter_unmap (adapter);
|
||||
}
|
||||
|
||||
g_slist_foreach (adapter->buflist, (GFunc) gst_mini_object_unref, NULL);
|
||||
g_slist_free (adapter->buflist);
|
||||
adapter->buflist = NULL;
|
||||
|
|
Loading…
Reference in a new issue