From: Wim Taymans Date: Fri, 15 Feb 2013 12:08:18 +0000 (+0100) Subject: allocator: improve fallback copy function X-Git-Tag: 1.1.1~262 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=7e222212a80a06cbc632e40568359b059a61f9dc;p=platform%2Fupstream%2Fgstreamer.git allocator: improve fallback copy function Only use the allocator of the copied memory when we can use the default _alloc function on it. Otherwise we will have to use the default allocator for the copy. --- diff --git a/gst/gstallocator.c b/gst/gstallocator.c index b2f6a31..3a37af6 100644 --- a/gst/gstallocator.c +++ b/gst/gstallocator.c @@ -95,6 +95,7 @@ _fallback_mem_copy (GstMemory * mem, gssize offset, gssize size) GstMemory *copy; GstMapInfo sinfo, dinfo; GstAllocationParams params = { 0, mem->align, 0, 0, }; + GstAllocator *allocator; if (!gst_memory_map (mem, &sinfo, GST_MAP_READ)) return NULL; @@ -103,7 +104,11 @@ _fallback_mem_copy (GstMemory * mem, gssize offset, gssize size) size = sinfo.size > offset ? sinfo.size - offset : 0; /* use the same allocator as the memory we copy */ - copy = gst_allocator_alloc (mem->allocator, size, ¶ms); + allocator = mem->allocator; + if (GST_OBJECT_FLAG_IS_SET (allocator, GST_ALLOCATOR_FLAG_CUSTOM_ALLOC)) + allocator = NULL; + copy = gst_allocator_alloc (allocator, size, ¶ms); + if (!gst_memory_map (copy, &dinfo, GST_MAP_WRITE)) { GST_CAT_WARNING (GST_CAT_MEMORY, "could not write map memory %p", copy); gst_allocator_free (mem->allocator, copy);